
程序代码:
PUSHAL MACRO
PUSH AX
PUSH BX
PUSH CX
PUSH DX
ENDM
POPAL MACRO
POP DX
POP CX
POP BX
POP AX
ENDM
DATA SEGMENT
MSG DB 'PLEASE INPUT A STRING: ','$'
BUF DB 50
DB ?
DB 50 DUP(0)
DATA ENDS
CODE SEGMENT
ASSUME CS :CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV DX,OFFSET MSG
MOV AH,9
INT 21H
MOV AH,0AH
MOV DX,OFFSET BUF
INT 21H
XOR CH,CH
MOV CL,BUF+1
CALL CLRSCR
MOV BH,0
MOV DH,0
MOV DL,30
MOV AH,2
INT 10H
MOV SI,OFFSET BUF+2
PRINT:
LODSB
MOV AH,2
MOV DH,0
INT 10H
DROP:
CALL PUTCH
CALL DELAY
CALL ERASE
INC DH
CALL SETCUR
CMP DH,20
JB DROP
CALL PUTCH
INC DL
LOOP PRINT
MOV AH,0
INT 16H
MOV AH,4CH
INT 21H
CLRSCR PROC NEAR
PUSHAL
MOV BH,0
MOV AX,0600H
MOV BL,7
MOV CX,0
MOV DH,24
MOV DL,79
INT 10H
POPAL
RET
CLRSCR ENDP
PUTCH PROC NEAR
PUSHAL
MOV AH,9
MOV BH,0
MOV BL,7
MOV CX,1
INT 10H
POPAL
RET
PUTCH ENDP
DELAY PROC NEAR
PUSHAL
MOV CX,04000H
DELAY1:
PUSH CX
MOV CX,03000H
DELAY2:
LOOP DELAY2
POP CX
LOOP DELAY1
POPAL
RET
DELAY ENDP
ERASE PROC NEAR
PUSHAL
MOV AH,9
MOV AL,' '
MOV BH,0
MOV BL,7
MOV CX,1
INT 10H
POPAL
RET
ERASE ENDP
SETCUR PROC NEAR
PUSHAL
MOV AH,2
INT 10H
POPAL
RET
SETCUR ENDP
CODE ENDS
END START