21,500
社区成员
发帖
与我相关
我的任务
分享DATA SEGMENT
STRING1 DB 30 DUP(0)
DATA ENDS
INFO SEGMENT
QUIT DB "Press any key to exit......",13,10,'$'
INFO ENDS
sseg segment stack
dw 100h dup(0)
sseg ends
CODE SEGMENT 'code'
START PROC FAR
ASSUME CS:CODE,DS:DATA,ES:DATA,SS:sseg
PUSH DS
MOV AX,0
PUSH AX
MOV AX,DATA
MOV DS,AX
; MOV AX,INFO
MOV ES,AX
; LEA SI,STRING1
LEA DI,STRING1;;
DON1:
MOV AH,01H
INT 21H
CMP AL,'$'
JZ WAIRTFOREXIT
STOSB ;store al to es:[di]
JMP DON1
WAIRTFOREXIT:
MOV AL,13
STOSB
MOV AL,10
STOSB
MOV AL,'$'
STOSB
MOV AH,9
LEA DX,STRING1
INT 21H ;print STRING1, DATA:0
mov ax,INFO
mov ds,ax
MOV AH,9
LEA DX,QUIT
INT 21H ;print QUIT, INFO:0
MOV AH,1
INT 21H
EXIT:
RET
START ENDP
CODE ENDS
END START DATA SEGMENT
STRING1 DB 30 DUP(?)
DATA ENDS
INFO SEGMENT
QUIT DB "Press any key to exit......",13,10,'$'
INFO ENDS
sseg segment stack
dw 100h dup(0)
sseg ends
CODE SEGMENT 'code'
START PROC FAR
ASSUME CS:CODE,DS:DATA,ES:INFO,SS:sseg
PUSH DS
MOV AX,0
PUSH AX
MOV AX,DATA
MOV DS,AX
MOV AX,INFO
MOV ES,AX
; LEA SI,STRING1
LEA DI,STRING1;;
DON1:
MOV AH,01H
INT 21H
CMP AL,'$'
JZ WAIRTFOREXIT
STOSB
JMP DON1
WAIRTFOREXIT:
MOV AL,13
STOSB
MOV AL,10
STOSB
MOV AL,'$'
STOSB
MOV AH,9
LEA DX,STRING1
INT 21H ;print STRING1, DS:0
MOV AH,9
LEA DX,QUIT ;offset QUIT=offset STRING1= 0, print DS:0 again
INT 21H
MOV AH,1
INT 21H
EXIT:
RET
START ENDP
CODE ENDS
END START DATA SEGMENT
STRING1 DB 30 DUP(?)
DATA ENDS
INFO SEGMENT
QUIT DB "Press any key to exit......",13,10,'$'
INFO ENDS
sseg segment stack
dw 100h dup(0)
sseg ends
CODE SEGMENT 'code'
START PROC FAR
ASSUME CS:CODE,DS:DATA,ES:INFO,SS:sseg
PUSH DS
MOV AX,0
PUSH AX
MOV AX,DATA
MOV DS,AX
MOV AX,INFO
MOV ES,AX
LEA SI,STRING1
DON1:
MOV AH,01H
INT 21H
CMP AL,'$'
JZ WAIRTFOREXIT
STOSB
JMP DON1
WAIRTFOREXIT:
MOV AL,13
STOSB
MOV AL,10
STOSB
MOV AL,'$'
STOSB
MOV AH,9
LEA DX,STRING1
INT 21H ;print STRING1, DS:0
MOV AH,9
LEA DX,QUIT ;offset QUIT=offset STRING1= 0, print DS:0 again
INT 21H
MOV AH,1
INT 21H
EXIT:
RET
START ENDP
CODE ENDS
END START DATA SEGMENT
STRING1 DB 30 DUP(?)
QUIT DB "Press any key to exit......",10,13,'$'
DATA ENDS
CODE SEGMENT
START PROC FAR
ASSUME CS:CODE,DS:DATA,ES:DATA
PUSH DS
MOV AX,0
PUSH AX
MOV AX,DATA
MOV DS,AX
MOV AX,DATA
MOV ES,AX
LEA SI,STRING1
DON1:
MOV AH,01H
INT 21H
CMP AL,'$'
JZ WAIRTFOREXIT
STOSB
JMP DON1
WAIRTFOREXIT:
;INT 3
MOV DX,SI
MOV AL,10
STOSB
MOV AL,13
STOSB
MOV AL,'$'
STOSB
MOV AH,9
INT 21H
MOV AH,9
LEA DX,STRING1
INT 21H
MOV AH,9
LEA DX,QUIT
INT 21H
MOV AH,1
INT 21H
EXIT:
RET
START ENDP
CODE ENDS
END START