如何使用ARM assembly准确地找到32位数字的pallindrome?
我试图找到一个汇编代码,以确定给定的数字是否是回文。我在网上查到了密码。但我无法理解“movu”命令。有人能解释一下吗如何使用ARM assembly准确地找到32位数字的pallindrome?,assembly,arm,palindrome,Assembly,Arm,Palindrome,我试图找到一个汇编代码,以确定给定的数字是否是回文。我在网上查到了密码。但我无法理解“movu”命令。有人能解释一下吗 mov R0,1044480 mov R3,0 mov R4,31 movu R2,0x0001 mov R5,0 andu R1,R0,0xffff .loop: and R3,R2,R1 lsl R2,R2,1 lsl R3,R3,R4 add R5,R5,R3 sub R4,R4,2 cmp R4,0 bgt .loop lsr R0,R0,16 lsr R5,R5,1
mov R0,1044480
mov R3,0
mov R4,31
movu R2,0x0001
mov R5,0
andu R1,R0,0xffff
.loop:
and R3,R2,R1
lsl R2,R2,1
lsl R3,R3,R4
add R5,R5,R3
sub R4,R4,2
cmp R4,0
bgt .loop
lsr R0,R0,16
lsr R5,R5,16
sub R0,R5,R0
cmp R0,0
beq .palin
mov R0,0
b .exit
.palin:
mov R0,1
.exit:
这里有几个问题。为什么在汇编中这样做,而您似乎对指令集不太熟悉?您正在为哪个设备编写此汇编代码?当然,如果您正在进行汇编,您至少应该有处理器的指令集文档
现在让我们来处理这个问题本身。movu是MOV Unsigned的助记符。这与MOV指令的工作方式基本相同,不同之处在于它与MOV不同,不会改变状态寄存器。通过这种方式,您可以将寄存器移动到目标位置,而无需更改,例如Z、C或N标志。您不了解哪一部分?如果您想知道它是否是基2中的回文,
RBIT
说明会有所帮助:-)我只是想为面试做准备,还想检查stackoverflow的工作原理。很久以前,我几乎没有学过什么基本的教学法,而且我对它知之甚少。但谢谢你回答我的问题:)