汇编 语言编写16进制一位数加法

进行两个十六进制一位数的加法演示程序。
1、建立数据段。
数据段中定义字节变量MSG、cont、warn,SUM等,分别表示输入、继续等信息,其中msg的内容是字符串“Please input two numbers between 0 and F:”、“Do you want to continue?(Y/N)”。
附加段中定义80个字节的字节变量缓冲区BUF。
2、程序实现:
(1)首先提示“Let's do addition exercises. ”。
(2)再提示“Please input two numbers between 0 and F:”,学生在电脑键盘上依次输入两个一位16进制数字,程序将这两数存入附加段缓冲区BUF后续单元中,然后由电脑屏幕显示答案(见演示),并把和存在SUM中。注意加号“+”和等号“=”是由电脑给出的。
演示如下:
Let's study addition operation.
Please input two numbers between 0 and F:
4+5=9 (注:4和5是学生输入的,下同)
Do you want to continue?(Y/N)Y
Please input two numbers between 0 and F:
A+7=11
Do you want to continue?(Y/N)N

要求:(A)循环程序实现,(B)回车换行用过程实现。(C)鼓励:编程实现判断输入的数是否合法。
(D)鼓励做二位数类似的十六进制加法演示程序
急,在线等

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
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-07-04
楼主好好学习吧本回答被提问者采纳
相似回答