ARM 汇编语言

本文介绍了汇编语言,即计算机处理器执行的机器码对应的助记符。重点讲解了 ARM 指令集,包括常见的 ARM 汇编指令如 MOV、ADD 等的定义,还阐述了 Offset Addressing、Pre - Index Addressing 和 Post - Index Addressing 三种寻址方式,最后对 ARM 指令进行了总结。

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

1. 什么是汇编语言?

计算机处理器,执行的是 二进制的 10101010001,这些机器码对应的助记符就是汇编指令。

处理器 fetch 到的指令是 1001010101, 可能就是 对应汇编语言中 ADD 的加法指令, 处理器执行 加法操作,并把结果输出到目的寄存器。

ARM (RISC)指令长度固定为 32 bits。

2. ARM 指令集

ARM 指令集可以分为下面六类:

3. 常见 ARM 汇编指令定义:

3.1 MOV 数据传送指令

MOV<cc> <S> Rd, <op1>

Rd 是目的寄存器,<op1> 是操作数。


注意 MOV 指令,op2 如果是 立即数,立即数必须小于 65535(0xFFFF),所以如果给 int i = 0x11111111;ARM 汇编对应的是以下两条指令:

S:0x80002040 : MOV      r1,#0x1111
S:0x80002044 : MOVT     r1,#0x1111


[ARM 官方文档库] http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0489c/Cjagdjbf.html

3.2 ADD:

3.3 LDM:

3.4 加载寄存器指令 LDR:

在 ARM 中,word 长度是 32 bits, half word 是 16 bits, Byte 是 8 bits.

 

3.5 数据传送指令 MOV:

3.6 Store 多个 Register 指令 STM:

3.7 Store Register 指令 STR:

 

4.  Offset Addressing & Pre-Index Addressing & Post-Index Addressing

4.1 Offset Addressing:

Offset Addressing 指令例子: LDR R0, [R1, #4] 这种寻址方式,不会改变 Base 寄存器 R1 的值。(只寻址,不改 Base 寄存器)

4.2 Pre-Index Addressing

Pre-Index Addressing 指令例子: LDR R0, [R1, #4]! 这种寻址方式,会改变 Base 寄存器 R1 的值。

先将寻址的内容加载到 R0 寄存器,再将寻址的地址回写到 Base 寄存器 R1。(先寻址,后改 Base 寄存器)

4.3 Post-Index Addressing

Post-Index Addressing 指令例子: LDR R0, [R1], #4 这种寻址方式,会改变 Base 寄存器 R1 的值。

先将 Base 寄存器 R1内容加载到 R0 寄存器,再将寻址的地址回写到 Base 寄存器 R1,(先读 Base 寄存器,后改 Base 寄存器)

[] 内存寻址

5. ARM 指令总结:


 

参考文献:

ARM_AssyLang.pdf

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值