汇编语言

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.

 

posted @ 2017-04-10 13:30  梦提三尺剑  阅读(139)  评论(0编辑  收藏  举报