|
主题 : : 关于汇编程序的一个提问。主要是五位数相加还有十进制进位的问题。 [已解决] |
回复[ 2次 ]
点击[ 306次 ] | |
荣誉值:0
信誉值:2
注册日期:2010-11-26 13:02 |
在dos系统下,应用汇编语言写:十进制数“12345+67890=?????”的一个程序。当然不能先把十进制数转换为十六进制数然后再写程序。
DATA SEGMENT
X DB '12345+67890=?????$'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV AL,[X+4]
ADC AL,[X+10]
DAA
SUB AL,30H
MOV [X+16],AL ;al=35H
MOV AL,[X+3]
ADC AL,[X+9]
AAA
SUB AL,30H
MOV [X+15],AL
MOV BL,AL
MOV CL,4
SHR AL,CL
ADD AL,30H
MOV DL,AL
MOV AL,BL
AND AL,0FH
ADD AL,30H
MOV DL,AL
MOV AL,[X+2]
ADC AL,[X+8]
AAA
SUB AL,30H
MOV BL,AL
MOV CL,4
SHR AL,CL
ADD AL,30H
MOV DL,AL
MOV AL,BL
AND AL,0FH
ADD AL,30H
MOV DL,AL
MOV [X+14],AL
MOV AL,[X+1]
ADC AL,[X+7]
AAA
SUB AL,30H
MOV BL,AL
MOV CL,4
SHR AL,CL
ADD AL,30H
MOV DL,AL
MOV AL,BL
AND AL,0FH
ADD AL,30H
MOV DL,AL
MOV [X+13],AL
MOV AL,[X]
ADC AL,[X+6]
DAA
SUB AL,30H
MOV [X+12],AL
MOV DX,OFFSET X
MOV AH,9
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END START
这个程序计算出来的结果没有进位,不知道是哪里出错了???
因为不会循环,所以写得很粗糙而且还出错了。
汗~~~~~~~~~~~~ | | |