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 ^ )/*