考虑编写一个程序来查找可以通过多少种方式旋转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是分支,如果等于