ARM匯編指令編程之寄存器中數(shù)據(jù)調(diào)換順序
題目:將R0中的數(shù)據(jù)調(diào)換順序;例如:R0=0XAABBCCDD調(diào)換順序后為R0=0XDDCCBBAA
實驗環(huán)境: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
思路:把每個數(shù)字都放在鏡像的位置,將其左右通過邏輯左右移移空,并放入獨立的寄存器,最后將幾個寄存器的值相加即可。
結(jié)果截屏:

此文章本人原創(chuàng),如有問題底部留言,如有轉(zhuǎn)載請標(biāo)明出處。
--HurryChen
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Happy ? Coding!
? ??????????????????????????????????????????????????????????????????*\( ^ v ^ )/*