我有这段代码
addInt:
add cx, bx
cmp cx, 0FFFFh
JBE convert
我正在尝试添加cx和bx寄存器,每个寄存器都具有FFFF
的相同值,而不是获取1FFFE
,我只获得FFFE
,当我尝试使用时JBE
跳转到循环,JBE istruction什么都不做,因为ecx
注册现在只包含FFFE
,而不是1FFF
,所以如何修复此代码使ecx
1}}包含1FFFE,我如何比较以检查它是否仍然是16位。我不能使用任何32位寄存器使事情变得更复杂
提前感谢
答案 0 :(得分:1)
addInt:
clc ;clear carry flag
add cx,bx
jnc convert ;jump no carry
cmp cx,FFFEh ;This now needs to be true, only FFFF+FFFF will succeed
because it generates a carry AND matches the cmp
Jnz convert ;will let it through
这会有效,但它非常有限且简单
要“计算”进位使用adc dx,在jnc convert
之后插入0如果寄存器全天候工作,则进位标志置位,因此它就像一个位
ADD FFFF + 2会将其关闭,给你一个+ ve进位标志和寄存器中的0001
您可以将该标志计数存储在adc [other register],0
的单独寄存器中使用进位标志允许您将寄存器一起拍打以计算类似
的值1,208,741,363,432,547,555,475,424,带有4x16位寄存器
比65,534
更好,更好