1.相对跳转指令 b,bl
不同之处在于,bl指令除了跳转之外,还将返回地址(bl的下一条指令的地址)保存在lr寄存器。
范例: b fun1
fun1:
b1 fun2
fun2:
注意:跳转范围是当前指令的前后32MB。
2.数据传送指令mov,地址读取伪指令ldr
mov可以把寄存器的值赋给另一个寄存器,或者把常数赋给寄存器。
mov r1,r2 //r1 = r2
mov r1,#4096 //r1 = 4096
注意:mov指令传送的常数必须是立即数,如果不知道那个数是不是立即数时,最好用ldr来赋值,ldr为伪指令。
ldr r1, = 4096 //r1 = 4096
内存访问指令:ldr,str,ldm,stm
ldr指令从内存中读取数据到寄存器,操作数都是32位。
ldr r1,[r2,#4] //将地位为r2+4的内存单元数据读取到r1中。
ldr r1,[r2],#4 //将地址为r2的内存单元数据读取到r1中,然后r2 = r2 +4
str指令把寄存器的值存储到内存中
str r1,[r2,#4] //将ri的数据保存到地址到r2+4的内存单元中
str r1,[r2],#4 //将r1的数据保存到地址为r2的内存单元中,r2 = r2 +4
加减指令add,sub
add r1,r2,#1 //r1 = r2 + 1
sbu r1,r2,#1 //r1 = r2 - 1
程序状态寄存器访问指令:msr,mrs
ARM处理器有一个程序状态寄存器(cpsr),用于控制处理器的工作模式,设置中断的总开关
msr cpsr,r0 //复制r0到cpsr
mrs r0,cpsr //复制cpsr到r0
ldm和stm属于批量内存访问指令(后续)。
3.