ARM7TDMI-S 指令集详解与汇编指南

5星 · 超过95%的资源 需积分: 10 17 下载量 35 浏览量 更新于2024-07-30 收藏 2.31MB PDF 举报
"本文主要介绍ARM处理器的常用指令集和汇编语言,重点在于ARM7TDMI(-S)内核,包括32位ARM指令集和16位Thumb指令集的特性,以及它们之间的相互调用和状态切换。" 在ARM处理器架构中,ARM7TDMI(-S)是一个重要的内核型号,它结合了两种指令集:32位的ARM指令集和16位的Thumb指令集。ARM指令集以其高效能著称,但代码密度较低。相比之下,Thumb指令集设计用于优化代码密度,同时保持接近ARM指令集的性能优势,是ARM指令集的一个子集。 ARM指令集的一个关键特点是所有指令都可以有条件执行,这意味着可以根据特定条件(如零标志、负标志等)来决定是否执行某条指令,这为程序提供了更高的灵活性。然而,Thumb指令集中只有极少数指令支持条件执行。尽管如此,ARM和Thumb指令集之间可以无缝切换,状态切换开销极小,使得开发者能够根据需要在两者之间自由选择,兼顾代码大小和执行效率。 在编程时,理解这两种指令集的差异和互操作性至关重要。ARM汇编语言是直接针对这些指令集进行编程的语言,对于低级系统编程、设备驱动开发或者对性能有严格要求的应用尤其有用。汇编语言允许程序员直接控制硬件资源,以实现最高的效率,但同时也需要编写更多代码且调试难度较大。 ARM7TDMI(-S)内核的广泛应用,特别是在嵌入式系统、消费电子和移动设备中,使得掌握其指令集和汇编语言成为了很多工程师的必备技能。通过学习和实践,开发者可以更好地理解和利用ARM处理器的优势,创建高效、紧凑的嵌入式软件。 为了帮助学习者,有许多资源和工具,如实验板、教材和在线社区,提供了学习ARM汇编的平台。《ARM微控制器基础》这样的教材和EasyARM试验板就是其中的例子,它们为初学者提供了实践经验,帮助他们快速上手。此外,社区的支持和交流,如宛城布衣在文中提到的,对于深化理解和解决问题也是至关重要的。 ARM指令集和汇编语言是理解ARM处理器工作原理和开发高效嵌入式软件的基础。无论是32位的ARM指令集,还是16位的Thumb指令集,都有其独特的优点和应用场景,熟练掌握它们将使开发者能够在各种项目中发挥出ARM处理器的最大潜力。
2021-08-30 上传
原作者:宛城布衣。 本文件已移除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