ARM汇编指令1

· (汇编)指令是CPU机器指令的助记符,进过编译后会得到一串10组成的机器码,可以由CPU读取执行

·(汇编)伪指令本质不是指令(只是和指令一起写在代码中),它是编译器环境提供的,目的是用来指导编译过程,经过编译后伪指令最终不会生成机器码。

·ARM官方的ARM汇编风格:指令一般大写,Windows中IDE开发环境(ADS,MDK)例如:LDR R0,[R1]

·GNU风格的ARM汇编风格:指令一般小写,linux中常用,如:ldr r0,[r1] (两种风格的伪指令差别最大)


·ARM采用RISC架构,CPU本身不能直接读取内存,而要先将内存读取到通用寄存器才能被CPU处理。

·ldr(load register)指令将内存内容读取到通用寄存器。

·str(store register)指令将寄存器内容写入到存入内存空间中。

·ldr/str组合来实现ARM CPU和内存数据交换


·ARM汇编特点:8种寻址方式

    -寄存器寻址                                 mov r1,r2                             r2的值赋值给r1

    -立即数寻址                                 mov r0,#0xFF00                  #后面的数值直接赋值给r0

    -寄存器移位寻址                          mov r0,r1,lsl #3                     r1中的数值左移三位,然后赋值给r0(就是乘于8)

    -寄存器间接寻址                          ldr r1,[r2]                            类似于指针,r2中存操作数的地址,[]类似于解引用

    -基址变址寻址                             ldr r1,[r2,#4]                     r2为基址,r2里面的地址加4,这个地址存的值读到寄存器中

    -多寄存器寻址                             ldmia r1!,{r2-r7,r12}      r1中的8个地址读到r2-r7和r12中(类似于数值中的8个元素)

    -堆栈寻址                                    stmia sp!,{r2-r7,lr}            (没弄明白)

    -相对寻址                                    beq flag

                                                 flag:

猜你喜欢

转载自blog.csdn.net/weixin_40405692/article/details/80797108