我如何使用ARM汇编程序精确找到32位数字的pallindrome?

问题描述 投票:0回答:1

我试图找到一个汇编代码,以查找给定的数字是否是回文。我在线上有代码。但是我无法理解'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,16
sub R0,R5,R0
cmp R0,0
beq .palin
mov R0,0

b .exit

.palin:
mov R0,1

.exit:
math assembly arm palindrome risc
1个回答
0
投票

这里有几个问题。当您似乎对指令集不太熟悉时,为什么要在汇编中执行此操作?您在什么设备上编写此汇编代码?当然,如果要进行组装,则至少应具有处理器的指令集说明文件?

现在让我们处理问题本身。 movu是MOV Unsigned的助记符。这基本上与MOV指令的工作方式相同,不同之处在于,它不改变状态寄存器,这与MOV不同。这样,您可以将寄存器移动到目的地而无需更改,例如Z,C或N标志。

© www.soinside.com 2019 - 2024. All rights reserved.