嵌入式 Linux C ARM

ARM汇编指令编程

2018-10-04  本文已影响10人  HurryChen

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

上一篇 下一篇

猜你喜欢

热点阅读