[英]adding 16 bits registers
我有这个代码
addInt:
add cx, bx
cmp cx, 0FFFFh
JBE convert
我正在尝试添加cx和bx寄存器,每个寄存器具有相同的FFFF
值,而不是获得1FFFE
,而仅获得FFFE
,并且当我尝试使用JBE
跳转到转换循环时,JBE istruction不执行任何操作,因为现在ecx
寄存器仅包含FFFE
,但不包含1FFF
,因此如何解决此代码以使ecx
包含1FFFE以及如何比较以检查它是否仍为16位。 我不能使用任何32位寄存器,这会使事情变得更复杂
预先感谢
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
这会起作用,但是它非常有限且简单
要“计数”进位,请在jnc转换后插入adc dx,0
如果寄存器全天候工作,则进位标志将置位,因此它就像一个位一样
添加FFFF + 2会将其关闭,从而在寄存器中提供+ ve进位标志和0001
您可以将该标志计数存储在带有adc [other register],0的单独寄存器中
使用进位标志可让您将寄存器拍在一起以计数
1,208,741,363,432,547,555,475,424带4x16位寄存器
比65,534好很多,也好很多
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.