两个寄存器中的8位数字相加(8位也可以,16位不能用)

Adding 8 bit numbers in two registers (8 bit as well, 16 bit not allowed to use)

我正在做作业,我需要添加 x 个 8 位数字,结果必须存储在两个寄存器中(以防溢出)。如何在两个寄存器中设置结果? (我用内存填充数据)

抱歉,我是装配新手,欢迎任何指导。

到目前为止我已经添加了数字,但结果存储在一个寄存器中。

org 100
Mov al,[0x0300]
Mov ah,[0x0301]
xor dh,dh
add dh,al
add dh,ah

我希望结果存储在两个寄存器中而不是一个(这样可以存储 8 位以上的结果)。

org 100
Mov al,[0x0300]
Mov ah,[0x0301]
xor dh,dh
add dh,al
add dh,ah

您需要处理因添加 2 个字节大小的值而产生的进位:

首先清除将保存结果的 2 个寄存器

xor al, al
xor ah, ah

然后添加您需要处理的所有值:

add al, [0x0300]
adc ah, 0

add al, [0x0301]
adc ah, 0

处理传播进位的是 ADC(带进位的加法)指令!

您可以使用以下代码避免单独的清除步骤:

mov al, [0x0300]
xor ah, ah

add al, [0x0301]
adc ah, 0