相对跳转指令: b、bl
除了bl转移外,还将返回值(bl的下一个指令的地址)保存在lr寄存器中
数据传输指令: mov地址读出虚拟指令: ldr
自由体操
mov r1,r2 //r1=r2
mov r1,#4096 //r1=4096
ldr
ldr r1,=4097 //r1=4097
存储器访问指令: ldr、str、ldm、stm
ldr指令将数据从存储器读取到寄存器,str指令将寄存器的值存储在存储器中,这些数据都是32位
将ldr r、[r2,#4] //地址r2 4的存储单元数据读出到r1
将ldr r、[r2] //地址为r2存储单元数据读出到r1
将ldr r、[r2]、#4 //地址为r2的存储单元数据读取到r1中,设为r2=r2 4
将r1的数据保存在str r、[r2,#4] //地址r2 4的存储单元中
将str r、[r2] //的数据保存到地址r2的存储器单元中
在str r、[r2]、#4 //地址r2的存储单元中保存r1的数据,设为r2=r2 4
ldm和stm是可以用一条指令读写多个数据的批量存储器访问命令,命令格式如下。
ldm {cond} {! } {^}
stm {cond} {! } {^}
{cond} :指令执行条件
:地址变化模式,包括4种模式
()后验增量方式
(ib )预增量方式
da :事后递减方式
数据库:预递减方式
{! ()将内存保存到地址。 如果在后面加上感叹号,则在执行指令后,rn的值将更新,等于下一个存储器单元的地址
:针对ldm,显示了从对应的存储器中取出数据并写入这些寄存器的寄存器列表; 在stm的情况下,将这些寄存器
的值被写入相应的存储器块
{^} :中有pc寄存器时,表示执行指令后,spsr寄存器的值自动复制到cpsr寄存器——中
这经常用于从中断函数返回; 中没有pc寄存器时,{^}表示正在操作用户模式的寄存器,而不是当前的
特权模式寄存器
加减指令: add、sub
添加
add r1、r2、#1 //r1=r2 1
子子
sub r1、r2、#1 //r1=r2 - 1
对程序状态寄存器的访问指令:msr、mrs