这个加法还是有问题的,怎么能解决呢?
根据这个,我写了个小程序,如下: ;名称:add32
;功能:两个32位数字相加
;参数:ds:si指向第一个数字的起始位置,
; ds:di指向第二个数字的起始位置
;返回:将计算结果存入第一个数的起始位置
assume cs:code, ds:data
data segment
dw 0aaaah,0aaaah
dw 0aaaah,0aaaah
data ends
code segment
start: mov ax, data
mov ds, ax
mov si, 0
mov di, 4
call add32
mov ax, 4c00h
int 21h
add32: push ax
push cx
push si
push di
sub ax, ax
mov cx, 2
s: mov ax, [si]
adc ax, [di]
mov [si], ax
inc si
inc si
inc di
inc di
loop s
pop di
pop si
pop cx
pop ax
ret
code ends
end start
计算的结果应该是"15554h",由于ax为16位寄存器,所以发生进位结果变成“5554h"。也就是说这个算法不能解决高位加法再次进位的现象,不知道有没有办法解决这个问题。