繁体   English   中英

加16位寄存器

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM