0

给定一个程序来找出一个 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 如果等于则分支

4

0 回答 0