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