home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 9 / 09.iso / e / e010 / 1.ddi / STROUT.ASM < prev    next >
Encoding:
Assembly Source File  |  1985-01-10  |  1.5 KB  |  48 lines

  1.  
  2.  
  3.  
  4. ; Example 2 - USER Function plus routine to print out an atom and 
  5. ;   return its length. 
  6. ; External data block areas - these are defined as PUBLIC in M1AUX.OBJ.
  7.  
  8.         EXTRN   OP:BYTE, INCNT:BYTE, OUTCNT:BYTE, INARG:WORD
  9.         EXTRN   OUTARG:WORD, INTYPE:BYTE, OUTYPE:BYTE
  10.  
  11.         PUBLIC  USER
  12.  
  13. CODE    SEGMENT  BYTE PUBLIC 'CODE'
  14.         ASSUME CS:CODE, DS:CODE
  15.  
  16. USER    PROC    NEAR
  17.         CALL    STROUT
  18.         RET
  19. USER    ENDP
  20.  
  21. STROUT  PROC    NEAR
  22.         MOV     SI, INARG               ; Fetch string ptr from argument area.
  23.         MOV     CL, (ES:[SI])           ; Fetch string length from heap.
  24.         XOR     CH, CH                  ; 
  25.         DEC     CX                      ; Reduce to # of characters.
  26.         MOV     STRLEN, CX              ; Save string length.
  27. Loop:
  28.         INC     SI                      ; Advance offset.
  29.         MOV     AL, (ES:[SI])           ; Char to write.
  30.         MOV     AH, 14                  ; BIOS tty write function.
  31.         MOV     BH, 0
  32.         INT     10H                     ; Call BIOS routine.
  33.         LOOP    Loop                    ; Loop until CX = 0.
  34.  
  35.         MOV     OUTCNT, 1               ; 1 argument to return.
  36.         MOV     AX, STRLEN              ;
  37.         MOV     OUTARG, AX              ; Return string length.
  38.         MOV     OUTYPE, 0               ; Return type = integer.
  39.         RET
  40. STROUT  ENDP
  41.  
  42. STRLEN  DW      0                       ; String length.
  43.  
  44. CODE   ENDS
  45.  
  46.         END
  47.  
  48.