DATA SEGMENT
X DB ?
Y DB ?
DATA SEGMENT
CODE SEGMENT
ASSUME CS;CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
MOV AH,01H
INT 21H
CALL ASC_DEAL
MOV X,DL ;将输入的字符转换成为数值存入X
MOV AH,01H
INT 21H
CALL ASC_DEAL
MOV Y,DL ;将输入的字符转换成为数值存入Y
MOV AH,01H
INT 21H
CMP DL,41H
JG LA
CMP DL,42H
JG LB
CMP DL,43H
JG LC
CMP DL,44H
JG LD
LA:MOV AL,X
ADD AL,Y
AAA
MOV DL,AH
ADD DL,30H
MOV AH,02H
INT 21H ;将X+Y的结果的高位输出显示
MOV DL,AL
CALL TO_ASCII
MOV AH,02H
INT 21H ;将X+Y的结果的低位输出显示
JMP P_OVER
LB:MOV DL,X
CMP DL,Y
JG S1
XCHG DL,Y
S1:SUB DL,Y
ADD DL,30H
MOV AH,02H
INT 21H ;将X-Y的结果输出显示
JMP P_OVER
LC:MOV AL,X
MUL Y
AAM ;乘法指令调整
MOV DL,AH
CALL TO_ASCII
MOV AH,02H
INT 21H ;显示乘法结果的高位
MOV DL,AL
CALL TO_ASCII
;MOV AH,02H
INT 21H ;显示乘法结果的低位
JMP P_OVER
LD: MOV AL,X
CBW
DIV Y
MOV DL,AH
CALL TO_ASCII
MOV AH,02H
INT 21H ;显示余数
MOV DL,AL
CALL CALL TO_ASCII
INT 21H ;显示商
P_OVER:
CODE ENDS
END START
ASC_DEAL PROC ;将输入的字符ASCII码转换成为数值
CMP DL,39H
JG A_F
SUB DL,30H
JMP OVER
A_F:SUB DL,37H
OVER: RET
ASC_DEAL ENDP
TO_ASCII PROC ;将数值转换成为字符ASCII码
CMP DL,09H
JG A_F1
ADD DL,30H
JMP OVER1
A_F1:ADD DL,37H
OVER1: RET
TO_ASCII ENDP
这个题解决的核心问题是
1、解决数据0—9、A-F同自身字符ASCII的互相转换问题,利用2个子函数函数进行互换操作。(0-9转换差30H,A-F转换差37H)
2、程序多重分支结构的设计,处理4种情况
3、一些ASCII码调整指令的使用如AAA、AAS
看不懂
这个应该不难的,难的是你的键盘输入硬件是如何设计的?
不好意思,刚才没有看清楚,还以为你是编单片机的代码,回答错了。