DATA SEGMENT
MSG DB "Please input two numbers between 0 and F:",'$'
CONT DB "Do you want to continue?(Y/N)",'$'
WARN DB "The number must be between 0 and F!!!",'$'
SHOW DB "Let's do addition exercises.",'$'
SUM DB ?,?,'$'
DATA ENDS
EXTRA SEGMENT
BUF DB 80 DUP(?)
EXTRA ENDS
CODE SEGMENT
ASSUME DS:DATA,CS:CODE,ES:EXTRA
START:
MOV AX,DATA
MOV DS,AX
MOV AX,EXTRA
MOV ES,AX
LOP0: MOV AH,09H
LEA DX,MSG
INT 21H
MOV SI,0
MOV CX,2
S0: MOV AH,01H
INT 21H
CMP AL,'0'
JB ERROR
CMP AL,'9'
JA NEXT
JMP ZERO_NINE
NEXT: CMP AL,'A'
JB ERROR
CMP AL,'F'
JA ERROR
ZERO_NINE:
MOV ES:BUF[SI],AL
INC SI
DEC CX
JNZ S0
JMP PLAY
ERROR: CALL CRLF
LEA DX,WARN
MOV AH,09H
INT 21H
JMP S0
PLAY: CALL CRLF
MOV AH,09H
LEA DX,SHOW
INT 21H
CALL CRLF
MOV DL,ES:BUF
MOV AH,02H
INT 21H
MOV DL,'+'
INT 21H
MOV DL,ES:BUF+1
INT 21H
MOV DL,'='
INT 21H
MOV AL,ES:BUF
CMP AL,'9'
JBE Z0_9
SUB AL,07H
Z0_9: SUB AL,30H
MOV ES:BUF,AL
MOV AL,ES:BUF+1
CMP AL,'9'
JBE Z0_9N
SUB AL,07H
Z0_9N: SUB AL,30H
ADD AL,ES:BUF
MOV CL,4
ROL AL,CL
MOV BL,AL
AND BL,0FH
CMP BL,0
JZ BLANK
CMP BL,9
JBE Z0_9NA
ADD BL,07H
Z0_9NA: ADD BL,30H
MOV SUM,BL
JMP NEXT1
BLANK: MOV SUM,20H
NEXT1: ROL AL,CL
AND AL,0FH
CMP AL,9
JBE Z0_9_2
ADD AL,07H
Z0_9_2: ADD AL,30H
MOV SUM+1,AL
MOV AH,09
LEA DX,SUM
INT 21H
CALL CRLF
MOV AH,09H
LEA DX,CONT
INT 21H
MOV AH,01
INT 21H
CMP AL,'Y'
JNZ LY
JMP CF
LY: CMP AL,'y'
JNZ FINISH
CF: CALL CRLF
JMP LOP0
FINISH: MOV AX,4C00H
INT 21H
CRLF:
MOV AH,02H
MOV DL,0DH
INT 21H
MOV DL,0AH
INT 21H
RET
CODE ENDS
END START
温馨提示:答案为网友推荐,仅供参考