ARM彙編指令編程之寄存器中數據調換順序
題目:將R0中的數據調換順序;例如:R0=0XAABBCCDD調換順序後爲R0=0XDDCCBBAA
實驗環境:ARM Developer Suite V1.2
代碼:
AREA test,CODE,READONLY
ENTRY
CODE32
START
LDR R0,=0XAABBCCDD
MOV R1,R0,LSR #28
MOV R2,R0,LSR #24
MOV R2,R2,LSL #28
MOV R2,R2,LSR #24
MOV R3,R0,LSR #20
MOV R3,R3,LSL #28
MOV R3,R3,LSR #20
MOV R4,R0,LSR #16
MOV R4,R4,LSL #28
MOV R4,R4,LSR #16
MOV R5,R0,LSR #12
MOV R5,R5,LSL #28
MOV R5,R5,LSR #12
MOV R6,R0,LSR #8
MOV R6,R6,LSL #28
MOV R6,R6,LSR #8
MOV R7,R0,LSR #4
MOV R7,R7,LSL #28
MOV R7,R7,LSR #4
MOV R8,R0,LSL #28
MOV R0,#0
ADD R0,R0,R1
ADD R0,R0,R2
ADD R0,R0,R3
ADD R0,R0,R4
ADD R0,R0,R5
ADD R0,R0,R6
ADD R0,R0,R7
ADD R0,R0,R8
STOP
B STOP
END
思路:把每個數字都放在鏡像的位置,將其左右通過邏輯左右移移空,並放入獨立的寄存器,最後將幾個寄存器的值相加即可。
結果截屏:
此文章本人原創,如有問題底部留言,如有轉載請標明出處。
--HurryChen
Happy Coding!
*\( ^ v ^ )/*