首页 > 编程知识 正文

ARM 汇编语言,arm汇编语言

时间:2023-05-06 04:06:34 阅读:187442 作者:1395

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

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。