Advertisement

常用的ARM指令集与汇编.pdf

  •  5星
  •     浏览量: 0
  •     大小:None
  •      文件类型:None


简介:
本PDF文档深入浅出地介绍了常用的ARM指令集及其汇编语言编程技巧,适合初学者和中级开发者学习参考。 原作者:宛城布衣 目录 前言 i 目录 I ARM7TDMI(-S)指令集及汇编 1 ARM处理器寻址方式 2 寄存器寻址 2 立即寻址 2 寄存器偏移寻址 2 寄存器间接寻址 3 基址寻址 4 多寄存器寻址 4 堆栈寻址 5 块拷贝寻址 5 相对寻址 7 指令集介绍 7 ARM指令集 7 指令格式 7 第2个操作数 8 #immed_8r 9 Rm 10 Rm,shift 10 条件码 11 ARM存储器访问指令 13 LDR和STR 14 LDM和STM 16 SWP ARM数据处理指令 20 数据传送指令 20 MOV 20 MVN 20 算术逻辑运算指令 20 ADD 21 SUB 21 RSB 21 ADC 21 SBC 22 RSC 23 AND 23 ORR 24 EOR IV IIIIIIIIIIIIIII 比较指令 页常用ARM指令集及汇编 Ver:1010 比较指令 CMP CMN TST TEQ 乘法指令 MUL MLA UMULL UMLAL SMULL SMLAL 27 ARM跳转指令 B BL BX ARM协处理器指令 CDP LDC STC MCR MRC 31 ARM杂项指令 SWI MRS MSR 伪指令 34 ADR ADRL LDR NOP Thumb指令集 指令集与ARM指令集的区别 40 Thumb存储器访问指令 LDR和STR PUSH和POP LDMIA 和 STMIA 数据处理指令 数据传送指令 MOV MVN NEG 算术逻辑运算指令 ADD SUB ADC SBC MUL AND ORR EOR BIC ASR LSL LSR ROR 47 比较指令 CMP CMN TST TEQ 53 Thumb跳转指令 B BL BX Thumb杂项指令 SWI 伪指令 ADR ADRL LDR NOP 符号定义伪指令 GBLA、GBLL、GBLS LCLA、LCLL、LCLS SETA、SETL、SETS RLIST CN CP DN SN FN 数据定义伪指令 LTORG MAP FIELD SPACE DCB DCD和DCDU DCDO DCF D 和 DCFDU DCFS 和 DCFSU DCI DCQ和DCQU DCW和DCWU 报告伪指令 ASSERT INFO OPT TTL SUBT 汇编控制伪指令 IF、ELSE 和 ENDIF MACRO 和 MEND WHIL 和 WEND 杂项伪指令 ALIGN AREA CODE16 和 CODE32 END ENTRY EQU EXPORT和GLOBAL IMPORT和EXTERN GET和INCLUDE INCBIN KEEP NOFP REQUIRE PEQUIRE8 PRESERVE8 RN ROUT ARM伪指令 ADR ADRL LDR

全部评论 (0)

还没有任何评论哟~
客服
客服
  • ARM.pdf
    优质
    本PDF文档深入浅出地介绍了常用的ARM指令集及其汇编语言编程技巧,适合初学者和中级开发者学习参考。 原作者:宛城布衣 目录 前言 i 目录 I ARM7TDMI(-S)指令集及汇编 1 ARM处理器寻址方式 2 寄存器寻址 2 立即寻址 2 寄存器偏移寻址 2 寄存器间接寻址 3 基址寻址 4 多寄存器寻址 4 堆栈寻址 5 块拷贝寻址 5 相对寻址 7 指令集介绍 7 ARM指令集 7 指令格式 7 第2个操作数 8 #immed_8r 9 Rm 10 Rm,shift 10 条件码 11 ARM存储器访问指令 13 LDR和STR 14 LDM和STM 16 SWP ARM数据处理指令 20 数据传送指令 20 MOV 20 MVN 20 算术逻辑运算指令 20 ADD 21 SUB 21 RSB 21 ADC 21 SBC 22 RSC 23 AND 23 ORR 24 EOR IV IIIIIIIIIIIIIII 比较指令 页常用ARM指令集及汇编 Ver:1010 比较指令 CMP CMN TST TEQ 乘法指令 MUL MLA UMULL UMLAL SMULL SMLAL 27 ARM跳转指令 B BL BX ARM协处理器指令 CDP LDC STC MCR MRC 31 ARM杂项指令 SWI MRS MSR 伪指令 34 ADR ADRL LDR NOP Thumb指令集 指令集与ARM指令集的区别 40 Thumb存储器访问指令 LDR和STR PUSH和POP LDMIA 和 STMIA 数据处理指令 数据传送指令 MOV MVN NEG 算术逻辑运算指令 ADD SUB ADC SBC MUL AND ORR EOR BIC ASR LSL LSR ROR 47 比较指令 CMP CMN TST TEQ 53 Thumb跳转指令 B BL BX Thumb杂项指令 SWI 伪指令 ADR ADRL LDR NOP 符号定义伪指令 GBLA、GBLL、GBLS LCLA、LCLL、LCLS SETA、SETL、SETS RLIST CN CP DN SN FN 数据定义伪指令 LTORG MAP FIELD SPACE DCB DCD和DCDU DCDO DCF D 和 DCFDU DCFS 和 DCFSU DCI DCQ和DCQU DCW和DCWU 报告伪指令 ASSERT INFO OPT TTL SUBT 汇编控制伪指令 IF、ELSE 和 ENDIF MACRO 和 MEND WHIL 和 WEND 杂项伪指令 ALIGN AREA CODE16 和 CODE32 END ENTRY EQU EXPORT和GLOBAL IMPORT和EXTERN GET和INCLUDE INCBIN KEEP NOFP REQUIRE PEQUIRE8 PRESERVE8 RN ROUT ARM伪指令 ADR ADRL LDR
  • ARM
    优质
    本教程深入浅出地介绍了常用ARM处理器的指令集及汇编语言编程基础,适合初学者快速掌握ARM汇编开发技能。 ARM(Advanced RISC Machines)是一家在微处理器行业享有盛誉的企业,专注于设计高性能、低成本且低能耗的RISC处理器及相关技术与软件。其产品具有高性价比及节能的特点,在嵌入式控制、消费/教育多媒体、DSP和移动应用等多个领域得到广泛应用。 ARM通过授权方式向全球众多半导体厂商、软件公司以及OEM制造商提供独一无二的技术和服务,从而迅速成为许多国际性RISC标准的领导者。近年来,基于ARM内核的微处理器在中国市场获得了快速推广与发展,越来越多的人开始学习并利用这些芯片进行产品设计。 为了帮助人们更好地掌握这项技术,广州周立功单片机发展有限公司曾推出了一款名为EasyARM的开发板,并编写了配套教材《ARM微控制器基础》。本段落主要参考该书内容,并经过重新排版制成PDF格式以方便查阅和使用。文章旨在促进学习与研究之用,对于因不当操作导致硬件损坏或设计失误等问题不承担责任。
  • 经典ARM.pdf
    优质
    本PDF深入浅出地介绍了经典的ARM指令集及其汇编语言,适合初学者和中级开发者学习参考。包含丰富的示例代码及详细的讲解说明。 常用ARM指令集及汇编(经典).pdf
  • ARM(完整版).pdf
    优质
    《常用ARM指令集与汇编(完整版)》全面介绍了ARM处理器的基本架构和工作原理,并深入讲解了各种常用的ARM汇编语言指令及其应用,是学习嵌入式系统开发的必备资料。 这份资料对于初学者学习ARM汇编或在arm平台上进行软件逆向分析非常有帮助。遇到不熟悉的指令可以查阅该资料,能够快速理解并解决问题,是一份非常好的工具类参考资料,推荐给大家。
  • ARM详解——聚焦ARM
    优质
    本书专注于解析ARM汇编指令集的核心内容与应用技巧,旨在帮助读者深入理解并掌握ARM架构下的编程技术。 ### ARM汇编指令集概述 ARM(Advanced RISC Machines)是一种精简指令集计算机(RISC)架构,在移动设备、嵌入式系统及服务器等领域有着广泛应用。ARM汇编语言是直接与ARM处理器交互的一种低级编程语言,通过一系列特定的指令来控制硬件执行任务。本段落将根据提供的文档摘要对其中的一些关键指令进行详细介绍。 ### ARM7TDMI(-S)处理器介绍 文档中提到的ARM7TDMI(-S)是一款经典且广泛应用的ARM处理器内核。它支持Thumb和ARM两种指令集模式,并包含了一些重要的特性: - **T**:Thumb指令集,允许代码在更小的空间内运行。 - **D**:Debug调试功能,便于程序开发过程中的调试。 - **M**:Memory Management内存管理单元,提供内存保护和分页机制。 - **I**:ICE-In-Circuit Emulator接口。 - **S**:支持Jazelle DBX执行模式,提高了Java应用程序的性能。 ### ARM指令集详解 #### 1. 数据处理指令 数据处理指令用于进行算术运算和逻辑运算,在ARM指令集中应用广泛: - **LDRSTR**:加载存储指令,从内存读取数据到寄存器或将寄存器中的数据写入内存。 - **LDMSTM**:多寄存器加载存储指令,可以同时加载或存储多个寄存器的数据。 - **SWP**:交换指令,用于交换两个寄存器的值或者将一个寄存器与内存之间的值进行互换。 - **MOVMVN**:移动及取反后移动指令,用来把一个数值移入另一个寄存器或将该数取反后再将其移入另一寄存器内。 - **ADDSUB**:加法减法指令,执行相应的算术运算操作。 - **RSBADCSBCRSC**:带进位加、无符号乘、有符号乘以及反转子集的运算法则,分别用于不同的计算需求。 - **ANDORREOR**:逻辑与或异或指令,执行各种布尔逻辑运算。 - **BIC**:位清除指令,用来将寄存器中指定位置上的比特清零。 - **CMPCMNTSTTEQ**:比较、测试及等值判断的命令集,用于检测并对比寄存器中的数值大小和相等性。 - **MULMLAUMULLUMLALSMULLSMLAL**:乘法及其变种指令(带加法或减法),涵盖无符号与有符号的运算方式。 #### 2. 控制转移指令 控制转移指令用于改变程序执行流程: - **BBLBX**:分支、带链接分支及交换地址指针,用来跳转至指定内存位置继续执行。 - **CDPLDCSTCMCRMRC**:访问协处理器的功能集,涉及对这些辅助处理单元的读写操作。 - **SWIMRSMSR**:软件中断触发器以及状态寄存器的操作指令,允许程序在特定条件下请求系统干预或改变运行模式。 - **ADRADRLLDRNOP**:地址计算、长距离寻址及空操作命令集,用于执行复杂的内存访问和简单的流程控制。 #### 3. Thumb指令集 Thumb指令集是ARM架构的一个子集设计来减少代码大小同时保持较高的效率: - **区别于ARM指令的特点**: Thumb指令通常比ARM短但运行速度稍慢。在某些情况下可以混合使用这两种模式以优化程序性能。 - **数据处理和控制转移**:与标准的ARM类似,Thumb也包含加载存储、多寄存器操作及分支跳转等核心功能。 ### 总结 掌握并理解ARM汇编指令集是进行ARM架构编程的基础。通过对上述介绍的学习可以更好地利用这些工具来开发嵌入式系统或优化移动应用中的代码执行效率。
  • ARM-经典完整版.rar
    优质
    本资源为《常用ARM指令集与汇编》的经典完整版本,内容详尽地介绍了ARM架构的基本原理和汇编语言编程技巧。适合嵌入式系统开发者深入学习和参考使用。 这段文字介绍了一本全面讲解ARM内核指令集的参考资料书,适用于全系列ARM内核CPU,并且整理了清晰的书签以方便阅读。
  • ARM语言
    优质
    《ARM汇编语言指南与指令集》是一本深入介绍ARM处理器汇编语言编程的书籍,涵盖了详细的指令集、实用示例和优化技巧,适合嵌入式系统开发人员阅读。 ### ARM汇编语言教程及指令集 #### ARM简介 ARM(Advanced RISC Machines)是一家知名的微处理器设计公司,以其高性能、低成本和低功耗的RISC(Reduced Instruction Set Computing,精简指令集计算)处理器而闻名。其技术广泛应用于嵌入式系统控制、消费电子教育类多媒体设备、数字信号处理(DSP)以及移动应用等领域。 #### ARM授权模式 ARM采用独特的商业模式,通过向全球范围内的半导体、软件和原始设备制造商(OEM)提供技术许可的方式实现业务增长。这种方式使不同厂商能够根据自身需求定制并优化基于ARM架构的产品,从而促进了该技术在全球市场的广泛应用和发展。 #### ARM微处理器的应用 随着ARM内核的迅速普及与发展,在我国越来越多的人开始学习与研究相关技术以满足商业设计的需求。例如,《ARM微控制器基础》一书及其配套EasyARM实验板为初学者提供了宝贵的学习资源。 #### ARM7TDMI-S指令集及汇编语言概述 本段落档主要介绍了ARM7TDMI(-S)内核的指令集和汇编语言,内容涵盖ARM处理器的各种寻址方式、指令格式以及具体使用方法等。 #### 寻址方式 - **寄存器寻址**:直接利用寄存器作为源或目标操作数。 - **立即寻址**:操作数直接包含在指令中。 - **寄存器偏移寻址**:目标地址为一个寄存器值加上一个立即数值的偏移量。 - **间接寻址**:通过指定的一个寄存器来获取数据位置的操作方式称为寄存器间接寻址,其中的数据位于该寄存器所指向的位置上。 - **基址寻址**:类似于寄存器偏移寻址,但通常用于访问内存中连续区域内的数据。 - **多寄存器寻址**:一次传输多个寄存器中的内容到另一个地方或从另一处获取多个值并存储在指定的若干个目标寄存器内。 - **堆栈寻址**:使用堆栈指针SP来访问位于内存中特定区域的数据,该区域被称为“堆栈”。 - **块拷贝寻址**:用于批量传输数据块的操作方式。 - **相对寻址**:指令的目标地址相对于当前执行位置。 #### 指令集介绍 - **ARM指令集** - **指令格式**: `Opcode Rd, Rn, Operand2`,其中`Rd`为目标寄存器,`Rn`为源寄存器之一,而Operand2则表示第二个操作数。 - 第二个操作数: - #immed_8r:一个需要右移若干位的8比特立即值 - Rm:另一个通用寄存器 - Rm, shift:经过左移或右移运算后的Rm值作为操作数 - **条件码**:所有ARM指令都可以选择性地加上特定条件下才执行该条指令的标志。 - **存储器访问** - LDR和STR用于从内存中加载数据到寄存器或将寄存器中的内容保存至内存地址。 - LDM与STM则分别实现将多个寄存器值一次性读取进或写入到连续的内存区域,SWP指令执行原子性地更新指定位置的数据。 - **算术逻辑运算** - 包括数据传送(如MOV、MVN)、加法/减法等基本数学操作以及按位与、异或等多种位级操作。 - **跳转和调用** - B:无条件跳转 - BL:带链接的分支,返回地址自动保存在LR中 - BX:改变执行状态并转向指定位置 - **协处理器指令** - 允许与外部设备进行交互。 - **其他伪指令和辅助功能** - 如SWI、MRS、MSR等提供额外的功能支持。 #### Thumb指令集 Thumb是ARM为实现更紧凑代码而设计的一种16位编码格式,虽然不完全兼容所有的ARM指令,但它可以结合使用以平衡程序大小与执行效率。其存储器访问和数据处理功能类似于标准的32位ARM版本,但采用更为简洁的形式。 通过掌握本段落档所介绍的各种寻址方式及指令集知识,开发者能够更好地理解并利用基于ARM架构开发高效的嵌入式应用程序。
  • STM32.pdf
    优质
    本PDF文档深入解析了在基于STM32微控制器开发中常用的汇编指令,旨在帮助工程师和开发者更好地理解和运用汇编语言进行高效编程。 本段落汇集了常用的STM32指令,并解释其基本应用。这些精简实用的汇编指令集在C语言编程环境下不可或缺,在初始化和中断处理中使用汇编语言效果较好。
  • ARMPDF资料
    优质
    本资料为深入学习ARM汇编语言而设计,提供了全面的ARM汇编指令集及其应用实例,适合嵌入式系统开发人员和计算机科学爱好者参考。 常用ARM指令集及汇编.pdf ARM.pdf ARM7.pdf armv7ar_arm.pdf armv8_arm.pdf
  • ARM
    优质
    《ARM汇编指令》是一本专注于讲解ARM处理器架构及其低级编程语言的书籍或教程。它详细解释了如何使用汇编语言编写高效能的代码,并深入探讨了各种ARM指令集和操作码,帮助程序员优化程序性能,掌握底层硬件控制技巧。 ### ARM汇编指令详解 #### 一、ARM指令集概览 ARM(Advanced RISC Machines)是一种基于精简指令集计算机(RISC)架构的指令集,广泛应用于嵌入式系统、移动设备及服务器等领域。它支持多种处理器模式,并提供丰富的指令以实现各种复杂的计算任务。 #### 二、寄存器与处理器模式 ##### 2.1 寄存器概述 ARM处理器拥有27个寄存器,包括31个通用的32位寄存器(R0-R15)和一个程序状态寄存器(PSR)。这些寄存在不同的处理模式下有不同的用途: - **R0-R7**:通用目的寄存器。不同于某些传统架构(如x86),ARM允许在任何情况下使用这七个寄存器。 - **R8-R12**:同样为通用的,但在快速中断模式(FIQ)中会用到它们各自的影子寄存器。 - **R13**:通常作为栈指针(SP),但不同处理模式下可能有其他用途。 - **R14**:链接寄存器(LR),用于保存子程序返回地址。 - **R15**:程序计数器(PC),指示当前正在执行的指令位置。 ##### 2.2 处理器模式 ARM处理器支持多种处理模式,每种具有不同的权限级别: - **用户模式(User)**:应用程序运行时默认的低权限状态。 - **管理模式(SVC)**:用于系统调用等操作,拥有较高权限。 - **中断模式(IRQ)**:负责管理常规中断请求,有较高的执行优先级。 - **快速中断模式(FIQ)** :处理需要高速数据传输或实时信号处理的情况。FIQ具有最高权限,并可打断IRQ。 #### 三、关键指令介绍 ##### 3.1 程序状态寄存器和操纵指令 程序状态寄存器(PSR)包含处理器的状态标志和其他控制信息,如N(负)、Z(零)、C(进位)及V(溢出)。通过MSR (Move to PSR) 和MRS (Move from PSR),可以修改或读取这些值。 ##### 3.2 寄存器装载和存储指令 - **LDR**:从内存中加载数据到寄存器。 - **STR**:将寄存器中的内容保存至内存地址。 ##### 3.3 算术与逻辑运算指令 包括加法、减法,以及各种逻辑操作如AND(逻辑与)、ORR(或)和EOR(异或)等。 ##### 3.4 移位操作 - **LSL**:左移。 - **LSR**:右移。 - **ASR**:算术右移。 ##### 3.5 乘法指令 MUL用于执行两个数的相乘运算。 ##### 3.6 比较指令 CMP用来比较两数值大小,不生成结果而是更新PSR中的标志位信息。 ##### 3.7 分支指令 - **B**:无条件跳转。 - **BL**:带链接分支,将返回地址保存到LR寄存器中。 ##### 3.8 条件执行 IT(If Then)前缀用于在特定条件下执行后续的ARM指令。 #### 四、IEEE浮点运算指令 ARM还提供了支持IEEE标准的浮点数操作指令集来处理各种数学计算任务,如加减乘除等。 #### 五、汇编器伪指令 这些不是真正的机器代码而是由汇编程序解释执行以定义符号或分配内存区域等功能性命令。 通过深入理解寄存器使用方法、处理器模式差异及关键指令的应用场景等内容,开发者能够更有效地进行基于ARM架构的编程工作。