常用ARM指令集及汇编.pdf

原作者:宛城布衣。 本文件已移除PDF签名,如内容有误,欢迎大家指正。 目录 前言 i 目录 I ARM7TDMI(-S)指令集及汇编1 ARM 处理器寻址方式2 寄存器寻址2 立即寻址2 寄存器偏移寻址2 寄存器间接寻址3 基址寻址3 多寄存器寻址4 堆栈寻址4 块拷贝寻址5 相对寻址5 指令集介绍7 ARM 指令集7 指令格式7 第 2 个操作数7 #immed_8r 7 Rm8 Rm,shift8 条件码9 ARM 存储器访问指令 11 LDR 和 STR 11 LDM 和 STM14 SWP 17 ARM 数据处理指令19 数据传送指令20 MOV 20 MVN 20 算术逻辑运算指令20 ADD 20 SUB21 RSB 21 ADC 21 SBC 21 RSC 22 AND 22 ORR22 EOR22 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII BIC 23 第 I 页常用 ARM 指令集及汇编 Ver:1010 比较指令23 CMP 23 CMN23 TST24 TEQ24 乘法指令25 MUL25 MLA25 UMULL25 UMLAL26 SMULL 26 SMLAL 26 ARM 跳转指令27 B27 BL27 BX 27 ARM 协处理器指令28 CDP28 LDC29 STC 29 MCR30 MRC30 ARM 杂项指令31 SWI 31 MRS 32 MSR 33 ARM 伪指令34 ADR 35 ADRL35 LDR36 NOP37 Thumb 指令集39 Thumb 指令集与 ARM 指令集的区别 39 Thumb 存储器访问指令 40 LDR 和 STR 41 PUSH 和 POP 43 LDMIA 和 STMIA 43 Thumb 数据处理指令 45 数据传送指令46 MOV 46 MVN 46 NEG47 算术逻辑运算指令47 ADD 47 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 第 II 页常用 ARM 指令集及汇编 Ver:1010 SUB48 ADC 49 SBC 49 MUL50 AND 50 ORR50 EOR51 BIC 51 ASR51 LSL52 LSR 52 ROR53 比较指令53 CMP 53 CMN54 TST54 Thumb 跳转指令 55 B 55 BL55 BX 55 Thumb 杂项指令 56 SWI 56 Thumb 伪指令 57 ADR 57 LDR57 NOP58 伪指令59 符号定义伪指令59 GBLA、GBLL、GBLS 59 LCLA、LCLL、LCLS60 SETA、SETL、SETS 61 RLIST61 CN 62 CP62 DN、SN62 FN63 数据定义伪指令63 LTORG64 MAP64 FIELD 65 SPACE66 DCB 66 DCD 和 DCDU67 DCDO 67 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 第 III 页常用 ARM 指令集及汇编 Ver:1010 DCFD 和 DCFDU68 DCFS 和 DCFSU68 DCI69 DCQ 和 DCQU69 DCW 和 DCWU 70 报告伪指令70 ASSERT 70 INFO 71 OPT 71 TTL 和 SUBT 72 汇编控制伪指令73 IF、ELSE 和 ENDIF73 MACRO 和 MEND 74 WHIL 和 WEND 75 杂项伪指令76 ALIGN 77 AREA78 CODE16 和 CODE32 79 END 80 ENTRY80 EQU 81 EXPORT 和 GLOBAL 81 IMPORT 和 EXTERN 82 GET 和 INCLUDE 83 INCBIN83 KEEP83 NOFP 84 REQUIRE 84 PEQUIRE8 和 PRESERVE8 84 RN 84 ROUT85 ARM 伪指令86 ADR 86 ADRL86 LDR86 **ARM指令集与汇编详解** ARM(Advanced RISC Machines)指令集是高效能、低功耗的微处理器设计的基础,广泛应用于嵌入式系统、移动设备和高性能计算等领域。ARM7TDMI(-S)是其中的一个核心架构,本文主要介绍了这个架构下的指令集和汇编语言。 ### ARM处理器寻址方式 1. **寄存器寻址**:使用通用寄存器作为操作数,直接指定数据来源或目标。 2. **立即寻址**:指令直接包含一个常数值,如`#immed_8r`,常用于简单的算术或逻辑操作。 3. **寄存器偏移寻址**:操作数是寄存器加上一个偏移量,例如用于数组访问。 4. **寄存器间接寻址**:通过一个寄存器来间接访问内存地址。 5. **基址寻址**:操作数基于一个基址寄存器加上一个偏移量。 6. **多寄存器寻址**:一次操作多个连续的寄存器,如`LDM`和`STM`指令。 7. **堆栈寻址**:利用堆栈指针进行操作,常用于函数调用和数据保存。 8. **块拷贝寻址**:批量复制内存区域,如`STMDB`和`LDMIA`。 9. **相对寻址**:在分支指令中,根据当前指令地址加上偏移量来确定跳转目标。 ### ARM指令集 1. **存储器访问指令**: - **LDR**:加载寄存器,从内存中读取数据。 - **STR**:存储寄存器,将数据写入内存。 - **LDM**和**STM**:加载或存储多个寄存器。 - **SWP**:交换两个寄存器的内容,同时写回内存。 2. **数据处理指令**: - **MOV**:数据传送,无条件转移。 - **MVN**:按位取反后传送。 - **ADD**、**SUB**、**RSB**:加法、减法和反向减法。 - **ADC**、**SBC**、**RSC**:带进位的加法、减法和反向减法。 - **AND**、**ORR**、**EOR**、**BIC**:逻辑运算。 - **CMP**、**CMN**、**TST**、**TEQ**:比较和测试。 - **MUL**、**MLA**、**UMULL**、**UMLAL**、**SMULL**、**SMLAL**:乘法和乘法累加。 3. **跳转指令**: - **B**、**BL**、**BX**:无条件跳转、带返回地址的跳转和基于寄存器的跳转。 4. **协处理器指令**: - **CDP**、**LDC**、**STC**、**MCR**、**MRC**:与协处理器交互的指令。 5. **杂项指令**: - **SWI**:软件中断,用于操作系统调用。 - **MRS**、**MSR**:从/到状态寄存器的转移。 ### Thumb指令集 Thumb指令集是ARM指令集的一个精简版本,用于节省代码空间。它有类似的寻址方式和指令,但格式和操作略有不同。 1. **Thumb存储器访问**: - **LDR**、**STR**、**PUSH**、**POP**、**LDMIA**和**STMIA**。 2. **数据处理**: - **MOV**、**MVN**、**NEG**、**ADD**、**SUB**等。 3. **跳转**: - **B**、**BL**、**BX**。 4. **杂项**: - **SWI**。 ### 伪指令 伪指令在汇编语言中用来模拟高级编程语言的功能,如分配内存、定义变量、跳转控制等。 1. **ADR**、**ADRL**、**LDR**:用于生成地址。 2. **NOP**:空操作,通常用于填充或调试。 3. **DCB**、**DCD**、**DCI**等:用于定义数据块。 这些指令和寻址方式构成了ARM汇编语言的基础,程序员可以利用它们编写高效、低级别的代码,以实现特定的硬件操作和功能。了解和熟练掌握ARM指令集和汇编语言,对于开发和优化基于ARM平台的应用至关重要。在实际工作中,结合反汇编工具,可以帮助理解和调试底层代码,提升软件性能和效率。

















剩余136页未读,继续阅读

- m0_456958982024-05-05还挺齐全的,先看看


- 粉丝: 58
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 2023年自考发展与教育心理学网络课堂答案.doc
- 计算机思维在STEM教育中的实践与应用(1).docx
- 华中师范大学2021年9月《人工智能》作业考核试题及答案参考7.docx
- 数据库实验(1).doc
- AdobePremiereProCS6教学公开课获奖课件.pptx
- P捷联惯导系统姿态算法矩阵.pptx
- MCS单片机指令系统复习课程.ppt
- View桌面虚拟化解决方案.ppt
- 中小快递企业信息化建设问题的研究.doc
- 2023年干部学习新干线第八届全国残疾人运动会相关知识网络竞赛.doc
- C语言程序设计项目式教程课件全书电子教案教材课件.ppt
- 建设营销型网站时要注意的问题.doc
- 2023年嵌入式硬件助理工程师认证考试试题题库.doc
- 嵌入式计算机系统在智能家电中的应用研究的开题报告.docx
- Excel2010技巧大全:让Excel出现错误数据提示【会计实务操作教程】.pptx
- Excel表格通用模板:车辆保险续保登记表格.xlsx


