2017投资理财项目:一个简单汇编加法程序!!!!!!!!!!

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/29 22:14:29
键盘输入两个不超过四位的十进制数的和,并以十进制形式输出,我的程序和大于111都对,小于111输不出,为什么?如果输入4位数,自动换行,小于4位按回车输入下一个数,麻烦大家帮我看看
DATA SEGMENT
DATA ENDS
STACK1 SEGMENT PARA STACK
DW 20H DUP(0)
STACK1 ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK1
START:

MOV CL,04H
LOP0: ;第一个数
PUSH CX
MOV CL,04H
MOV AH,1
INT 21H
CMP AL,0DH
JE L0
AND AL,0FH
SHL BX,CL
ADD BL,AL
POP CX
LOOP LOP0
JMP L0
L0:
MOV DL,0AH
MOV AH,02H
INT 21H
MOV DL,0DH
MOV AH,02H
INT 21H

MOV DX,0H ;第二个数
MOV CL,04H
LOP1:
PUSH CX
MOV CL,04H
MOV AH,1
INT 21H
CMP AL,0DH
JE L1
AND AL,0FH
SHL DX,CL
ADD DL,AL
POP CX
LOOP LOP1
JMP L1
L1:

PUSH DX
PUSH BX
ADD BX,DX ;和在BX中
MOV DL,0AH
MOV AH,02H
INT 21H
MOV DL,0DH
MOV AH,02H
INT 21H

MOV AX,0H ;16进制换10进制
MOV DX,0H
MOV CX,4H
LOP2:
PUSH CX
MOV CL,04H
MOV AL,BL
SHR BX,CL
AND AL,0FH
CMP AL,09H
JBE L2
SUB AL,0AH
ADD BL,01H
JMP L2
L2:
SHL DX,CL
ADD DL,AL
POP CX
LOOP LOP2

MOV BX,DX

MOV DX,0H ;输出
MOV CL,04H
LOP3:
PUSH CX
MOV CL,04H
MOV DL,BL
SHR BX,CL
AND DL,0FH
CMP DL,0
JE L10
ADD DL,30H
MOV AH,02H
INT 21H
POP CX
JMP L10
L10:
LOOP LOP3

MOV AH,4CH
INT 21H
CODE ENDS
END START

评论 ┆ 举报

最佳答案此答案由提问者自己选择,并不代表百度知道知识人的观点

回答:三叶草
新手
4月26日 16:26 DATA SEGMENT
DATA ENDS
STACK1 SEGMENT PARA STACK
DW 20H DUP(0)
STACK1 ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK1
START:
MOV AX,DATA
MOV DS,AX
MOV AH,1
INT 21H
MOV BL,AL
SUB BL,30H
MOV AH,1
INT 21H
SUB AL,30H
MUL BL
MOV BL,AL
MOV CL,4
SHR AL,CL
CMP AL,09H
JBE L1
ADD AL,07H
JMP L1
L1:
ADD AL,30H
MOV DL,AL
MOV AH,02H
INT 21H
AND BL,0FH
CMP BL,09H
JBE L2
ADD BL,07H
JMP L2
L2:
ADD BL,30H
MOV DL,BL
MOV AH,02H
INT 21H
L3:
MOV AH,4CH
INT 21H
CODE ENDS
END START

揪错 ┆ 评论 ┆ 举报