home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD2.mdf / c / library / mslang / vm / src / vmprintf.asm < prev    next >
Encoding:
Assembly Source File  |  1993-12-15  |  1.4 KB  |  62 lines

  1.     page    ,132
  2.     title    vmprintf - VM output call
  3. ;***
  4. ;vmprintf.asm - VM output call
  5. ;
  6. ;       Copyright (c) 1989-1992, Microsoft Corporation.  All rights reserved.
  7. ;
  8. ;*******************************************************************************
  9.  
  10.     include version.inc
  11.     .model  large,c
  12.  
  13.     extrn   C fprintf:far
  14.     extrn   C _iob:far
  15.  
  16.     .data?
  17.  
  18.     extrn   C _asizeC:byte
  19.     extrn   C _asizeD:byte
  20.  
  21. pReturn dd      ?
  22.  
  23.     .code   _TEXT
  24.  
  25. __VmPrintf      proc
  26.  
  27.     pop     word ptr [pReturn+0]
  28.     pop     word ptr [pReturn+2]
  29.  
  30.     pop     dx                      ;DX = pFormatString
  31.     mov     ax,OFFSET _iob+16       ;AX = stderr
  32.  
  33.     cmp     [_asizeD],0             ;Near data model?
  34.     je      @F                      ;Brif so
  35.     push    ds                      ;Push far pointer to format string
  36.     push    dx
  37.  
  38.     mov     dx,SEG _iob             ;DX:AX = stderr
  39.     add     ax,8
  40. @@:
  41.     push    dx
  42.     push    ax
  43.  
  44.     cmp     [_asizeC],0             ;Near code model?
  45.     je      @F                      ;Brif so
  46.     call    far ptr fprintf
  47.     jmp     short Exit
  48. @@:
  49.     call    near ptr fprintf
  50.  
  51. Exit:
  52.     cmp     [_asizeD],0             ;Near data model?
  53.     je      @F                      ;Brif so
  54.     add     sp,4                    ;Adjust for two far pointers
  55. @@:
  56.     add     sp,2                    ;Adjust for stderr offset
  57.     jmp     [pReturn]               ;Return to caller
  58.  
  59. __VmPrintf      endp
  60.  
  61.     end
  62.