常用ARM汇编指令

1、相对跳转指令:b, bl

  区别在于bl指令除了跳转之外,还将返回地址(bl的下一条指令的地址)保存在lr寄存器中。

  可跳转范围是当前指令的前后32MB。

2、数据发送指令mov,地址读取伪指令ldr

  mov指令:

  mov  r1, r2   //r1=r2,把一个寄存器的值赋给另一个寄存器

  mov  r1,#358  //r1=4096, 把一个常数赋给寄存器

  ldr伪指令:(第二个参数为“=”时表示伪指令,否则表示内存访问指令)

  ldr  r1,=358  //把一个常数赋给寄存器

3、内存访问指令:ldr、str、ldm、stm

  ldr指令从内存中读取数据到寄存器:

  ldr  r1, [r2, #4]  //将地址为r2+4的内存单元数据读取到r1中

  ldr  r1, [r2]  //将地址r2内存中数据读取到r1中

  ldr r1, [r2], #4  //将地址为r2的内存中的数据读取到r1中,然后r2=r2+4

  str指令把寄存器的值存储到内存中:

  str r1, [r2, #4]  //将r1的数据保存到地址为r2+4的内存单元中

  str r1, [r2]  //将r1的数据保存到地址r2的内存单元中

  str r1, [r2], #4  //将r1的数据保存到r2的内存单元中,然后r2= r2+4

4、加减指令:add、sub

  add  r1,r2,#1   //表示r1 = r2+1

  sub  r1,r2,#1   //表示r1 = r2-1

5、程序状态访问寄存器:msr、mrs

  ARM 有一个程序状态寄存器(cpsr),用来控制处理器的工作模式、设置中断的总开关

  msr cpsr, r0  //复制r0到cpsr

  mrs r0,cpsr  //复制cpsr到r0

6、其他汇编指令

  .extern  main

  .text

  .global  _start

  _start:

  ".extern"定义一个外部符号(可以是变量也可以是函数)

  “.text”表示羡慕的语句都属于代码段

  “.global”将本文件中的某个程序标号定义为全局的,如上表示将_start定义为全局函数

  

posted @ 2020-04-10 23:14  !Cheese  阅读(435)  评论(1)    收藏  举报