对个位数加法在键盘输入数字+数字后直接显示结果(虽然过程很简单,但计算机处理这个过程不简单!)
DATA SEGMENT
STR DB ?
ANSWER DB ?,?,?,'$'
BUFF DB 0DH,'Input error','$'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV CX,3
LEA SI,STR
INPUT:
MOV AH,01H
INT 21H
CMP CX,2
JE JIAHAO
JIASHU:
CMP AL,30H
JL ERR
CMP AL,39H
JA ERR
MOV [SI],AL
INC SI
LOOP INPUT
MOV BX,OFFSET STR
MOV AL,STR[BX]
SUB AL,30H
MOV DL,STR[BX+1]
SUB DL,30H
ADD DL,AL
CMP DL,10
JB GW
LEA SI,ANSWER
MOV AL,'='
MOV [SI],AL
MOV AL,31H
MOV [SI+1],AL
ADD DL,26H ;dl十六进制数的个位修正为十进制ASCII个位(08h+09h=11h,11h+26h=37h,即7的ascii)
MOV [SI+2],DL
JMP DISPLAY
GW:
LEA SI,ANSWER
MOV AL,3DH
MOV [SI],AL
MOV AL,30H ;和是个位数,直接转化ASCII
MOV [SI+1],AL
ADD DL,30H
MOV [SI+2],DL
DISPLAY:
MOV DX,OFFSET ANSWER
MOV AH,09H
INT 21H
MOV AX,4C00H
INT 21H
JIAHAO:
CMP AL,2BH
JNZ ERR
LOOP INPUT
ERR:
MOV DX,OFFSET BUFF
MOV AH,09H
INT 21H
JMP INPUT
CODE ENDS
END START