给定一个程序来找出一个 32 位数字可以通过多少种方式旋转得到相同的数字。
mov R0, 1431655765
mov R6,R0
mov R5,31
mov R4,0
.loop :
cmp R5,0
beq .exit
lsl R2,R0,31
lsr R0,R0,1
sub R5,R5,1
or R0,R0,R2
cmp R6,R0
beq .inc
b .loop
.inc :
add R4,R4,1
b .loop
.exit:
.print R4
虽然我总是得到 0 作为答案。我的逻辑有什么错误吗?
这里的 .print 指令打印寄存器中的值。lsl 是逻辑左移 lsr 是逻辑右移 b 是无条件分支 beq 如果等于则分支