汇编语言

Posted 梦提三尺剑

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了汇编语言相关的知识,希望对你有一定的参考价值。

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.

 

以上是关于汇编语言的主要内容,如果未能解决你的问题,请参考以下文章

汇编语言笔记

机器语言汇编语言高级语言

c语言与汇编语言、c++语言等有啥不同呢?

汇编语言

汇编语言(面向机器的程式设计语言)详细资料大全

帮我简单介绍一下汇编语言