常用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定义为全局函数

浙公网安备 33010602011771号