簡體   English   中英

如何使用 ARM 匯編找到 32 位數字的回文?

[英]How exactly can I find the pallindrome of a 32 bit number using ARM assembly?

我試圖找到一個匯編代碼來確定給定的數字是否是回文。 我在網上得到了一個代碼。 但我無法理解“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:

這里有幾個問題。 當您似乎不太熟悉指令集時,為什么要在匯編中執行此操作? 您為什么設備編寫此匯編代碼? 當然,如果你在做匯編,你至少應該有處理器的指令集文檔?

現在讓我們來處理這個問題本身。 movu 是 MOV Unsigned 的助記符。 這基本上與 MOV 指令的工作方式相同,不同之處在於它不改變狀態寄存器,與 MOV 不同。 通過這種方式,您可以將寄存器移動到目的地而無需更改,例如 Z、C 或 N 標志。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM