两个寄存器中的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
我正在做作业,我需要添加 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