【发布时间】:2016-05-11 18:12:32
【问题描述】:
我喜欢计算 32 位数字中从 1 到 0 转换的次数。我发现使用 shr 以相反的顺序从 0 到 1 的转换次数,但我没有得到所需的结果。我该怎么办?
extern printf
SECTION .data
msg: db "The number of transitions are : %d",10,0
inta1: dd 1234567 ; integer 1234567
num: dd 4660
SECTION .text
global main
main:
mov eax, [num]
mov ecx,32
mov ebx,0
.loop: dec ecx
cmp ecx,0
jl .exit
shr eax,1
jc .loop
dec ecx
shr eax, 1
jnc .loop
inc ebx
jmp .loop
.exit:
push ebx
push dword msg
call printf
add esp, 8
输出:
转换次数为:2
而对于 4660 (00000000000000000001001000110100),1 到 0 的转换次数为 4。
【问题讨论】:
-
你得到了什么价值?
-
过渡次数为:2