ARM指令集

本文详细介绍了ARM指令集,包括跳转指令如B、BL、BX、BLX,寄存器与存储器操作如LDR、STR、LDM、STM,数据传送、算术逻辑运算指令,以及比较和其他特殊指令。同时,文章还探讨了ARM的多种寻址方式,如立即寻址、寄存器寻址等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 常用ARM指令

1.1 跳转指令

  1. B:无条件跳转

  2. BL:带连接的跳转指令

  3. BX:带状态切换的无条件跳转

  4. BLX:带链接和状态切换的无条件跳转

例如:

B 0x1234          跳转到绝对地址0x1234的位置执行相应的代码
BL loc_234        跳转到目标loc_234地址去,这条指令一般用于子程序之间的调用
BX  R0            跳转到R0寄存器指定的地址,并且根据R0最低位来切换处理器状态

1.2 比较指令

比较指令
eq:相等/z=1 ne:不相等/标志z=0
hi:无符号数大于/c=1,z=0 cs/hs:无符号数大于或等于/c=1
cc/lo:无符号数小于/c=0 ls:无符号数小于或等于/c=0,z=1
gt:有符号数大于/z=0,n=v ge:有符号数大于或等于/n=v
lt:有符号数小于/n!=v le:有符号数小于或等于/z=1,n!=v
mi:负数/n=1 pl:整数或0/n=0
vs:溢出/v=1 vc:没有溢出

2. 寄存器于储存器操作

2.1 寄存器的定义

存储器(主存,内存)

寄存器中放的数据:可以是字符串,可以是数,也可以是一个地址,可以放各种类型的数据。

例如:

地址(如0x00004000)与地址中存在的值

2.2 寄存器常用指令

- LDR:从存储器中加载数据到寄存器 ← Load

例如:

LDR R8,(R9,#4)

R8为待加载数据的寄存器,加载值为R9+0x4所指向的存储单元。

  1. 把后面的给前面的
  2. 把方括号里面的整体当做地址
LDR R8,[R9,#4]

解释:将R9+4,取地址里面的值赋值给R8

LDR R8,R9,#4

解释:将R9+4的值赋值给R8

- STR:将寄存器的数据存储到存

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值