assembly - 如何检索两个大数的总和?
问题描述
我正在尝试添加两个数字(假设第一个数字 = 200,第二个 = 100)。当我在 AL 中添加它们时,我得到 2C 十六进制而不是 300。是因为有溢出吗?如果这是它的原因,我如何从中获得输出?我从其他几篇文章中读到,但大多数都处理较小的数字或使用 xor,我完全不明白为什么要使用它。答案表示赞赏。
这是我的代码:
.model small
.stack 100
.data
No1 DB 200 ;First number
No2 DB 100
Sum DW ?
.code
START:
MOV ax, @data
MOV ds, ax
MOV ax, 0
MOV al, No1
ADD al, No2
end start
解决方案
这是一个有效的解决方案emu8086
:
.MODEL small
.STACK 100
.DATA
No1 DB 200
No2 DB 100
Sum DW ?
.CODE
start PROC
MOV ax, @data
MOV ds, ax
XOR ah, ah
MOV al, No1
XOR bh, bh
MOV bl, No2
ADD ax, bx
MOV Sum, ax
start ENDP