繁体   English   中英

计算整数(MASM)的二进制表示中的1的数量

[英]Count the number of ones in a binary representation of an integer (MASM)

所以我对汇编语言很陌生,我希望能得到一些帮助。 我正在尝试计算整数的二进制表示中的1的数量。 我相信我应该将寄存器移到我输入数字32次的位置,并且每次遇到1时都会递增。我应该跳转,如果它不是1则避免增加ebx。 我还是初学者,所以我还在学习MASM语法,但到目前为止我的内容是:

    xor ebx, ebx
    mov ecx, 32

shifting:
    shl eax, 1
    jc $+2
    inc ebx
    loop shifting

建议不要使用$+2 ,使用标签。 请注意, jc $+2不执行任何操作,因为指令本身长度为2个字节,因此在任何一种情况下它都会继续。 此外,当设置该位时,您正在跳过递增计数器,因此您将计算零位。 正确的代码可能如下所示:

    xor ebx, ebx
    mov ecx, 32

shifting:
    shl eax, 1
    jnc skip_inc
    inc ebx
skip_inc:
    loop shifting

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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