第三章ARM嵌入式微处理器指令系统_第1页
第三章ARM嵌入式微处理器指令系统_第2页
第三章ARM嵌入式微处理器指令系统_第3页
第三章ARM嵌入式微处理器指令系统_第4页
第三章ARM嵌入式微处理器指令系统_第5页
已阅读5页,还剩146页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第3章 ARM嵌入式微处理器指令系统成于大气 信达天下Copyright2012lshChengdu University of Information Technology 1 Chengdu University of Information Technology 第三章第三章 ARMARM嵌入式微处理器指令系统嵌入式微处理器指令系统第3章 ARM嵌入式微处理器指令系统成于大气 信达天下Copyright2012lshChengdu University of Information Technology 2 为什么为什么需要学习汇编指令需要学习汇编指令 嵌入式系统的初始化代码需要用汇编指

2、令来编写。初始化代码通常包括处理器的初始化、内存初始化等,其中涉及一些比较特殊的操作,比如设置处理器在不同工作模式下的堆栈指针,需要使用特殊的访问处理器状态寄存器的指令,强制处理器切换到不同模式下进行操作;一些中断例程尤其是作为一种异常被响应的第一级中断派发程序需要用汇编指令来编写,以提高效率;在软件的调试过程中,熟悉汇编指令更有助于查找疑难问题;某些指令本身就是不能直接由编译器产生的,而需要人工编写。第3章 ARM嵌入式微处理器指令系统成于大气 信达天下Copyright2012lshChengdu University of Information Technology 3 为什么为什么需

3、要学习汇编指令需要学习汇编指令可以直接控制在C语言编程时不能有效使用的3个优化工具:指令调整调整一段代码中的指令序列,以避免处理器的暂停等待。ARM指令执行是在指令流水线中进行的,所以一条指令执行的时间会受其相邻指令的影响,在“附录1指令流水线”中描述了相关问题。寄存器分配决定如何分配变量给ARM寄存器或者堆栈,以获得最好的性能。目标是要使访问存储器的次数降到最少。条件执行可以使用ARM条件代码和条件指令的全部功能。 第3章 ARM嵌入式微处理器指令系统成于大气 信达天下Copyright2012lshChengdu University of Information Technology 4

4、 简单的ARM程序;文件名:TEST1.S ;功能:实现两个寄存器相加 ;说明:使用ARMulate软件仿真调试 AREAExample1,CODE,READONLY ;声明代码段Example1 ENTRY ;标识程序入口 CODE32 ;声明32位ARM指令START MOVR0,#0 ;设置参数 MOVR1,#10LOOPBLADD_SUB ;调用子程序ADD_SUB BLOOP ;跳转到LOOPADD_SUB ADDSR0,R0,R1 ;R0 = R0 + R1 MOVPC,LR ;子程序返回 END ;文件结束 使用“;”进行注释标号顶格写实际代码段声明文件结束第3章 ARM嵌入式微

5、处理器指令系统成于大气 信达天下Copyright2012lshChengdu University of Information Technology 5 主要内容主要内容1 ARM指令集概述 2 ARM V4T架构指令体系 3 ARM v5TE 架构指令体系 4 ARM v6 架构指令体系新特性 5 Thumb指令集 第3章 ARM嵌入式微处理器指令系统成于大气 信达天下Copyright2012lshChengdu University of Information Technology 6 3.1.1 ARM3.1.1 ARM指令集指令集 ARM处理器是基于精简指令集计算机(RISC)

6、原理设计的,指令集和相关译码机制较为简单。ARM7TDMI(-S)具有32位ARM指令集和16位Thumb指令集,ARM指令集效率高,但是代码密度低;而Thumb指令集具有较高的代码密度,却仍然保持ARM的大多数性能上的优势,它是ARM指令集的子集。所有的ARM指令都是可以有条件执行的,而Thumb指令仅有一条指令具备条件执行功能。ARM程序和Thumb程序可相互调用,相互之间的状态切换开销几乎为零。 简介:第3章 ARM嵌入式微处理器指令系统成于大气 信达天下Copyright2012lshChengdu University of Information Technology 7 3.1.

7、1 ARM3.1.1 ARM指令集指令集寻址方式寻址方式 ARM处理器的寻址方式: 寻址方式是根据指令中给出的地址码字段来实现寻找真实操作数地址的方式。ARM处理器具有9种基本寻址方式。1.寄存器寻址;2.立即寻址;3.寄存器移位寻址;4.寄存器间接寻址;5.基址寻址;6.多寄存器寻址;7.堆栈寻址;8.块拷贝寻址;9.相对寻址。第3章 ARM嵌入式微处理器指令系统成于大气 信达天下Copyright2012lshChengdu University of Information Technology 8 操作数的值在寄存器中,指令中的地址码字段指出的是寄存器编号,指令执行时直接取出寄存器值来

8、操作。寄存器寻址指令举例如下: MOV R1,R2 ;将R2的值存入R1 SUB R0,R1,R2 ;将R1的值减去R2的值,结果保存到R0 0 xAA0 x55R2R1寻址方式分类寄存器寻址MOV R1,R20 xAA3.1.1 ARM3.1.1 ARM指令集指令集寻址方式寻址方式 第3章 ARM嵌入式微处理器指令系统成于大气 信达天下Copyright2012lshChengdu University of Information Technology 9 立即寻址指令中的操作码字段后面的地址码部分即是操作数本身,也就是说,数据就包含在指令当中,取出指令也就取出了可以立即使用的操作数(这样

9、的数称为立即数)。立即寻址指令举例如下: SUBSR0,R0,#1 ;R0减1,结果放入R0,并且影响标志位MOVR0,#0 xFF000 ;将立即数0 xFF000装入R0寄存器 关于后面立即数的取值范围问题,将在后面PPT中说明。其要满足一定条件。0 x55R0MOV R0,#0 xFF00程序存储寻址方式分类立即寻址MOV R0,#0 xFF000 xFF00从代码中获得数据3.1.1 ARM3.1.1 ARM指令集指令集寻址方式寻址方式 第3章 ARM嵌入式微处理器指令系统成于大气 信达天下Copyright2012lshChengdu University of Informatio

10、n Technology 10 寄存器移位寻址是ARM指令集特有的寻址方式。当第2个操作数是寄存器移位方式时,第2个寄存器操作数在与第1个操作数结合之前,选择进行移位操作。寄存器移位寻址指令举例如下:MOVR0,R2,LSL #3 ;R2的值左移3位,结果放入R0, ;即是R0=R28 ANDSR1,R1,R2,LSL R3 ;R2的值左移R3位,然后和R1相 ;“与”操作,结果放入R10 x55R0R2 0 x01寻址方式分类寄存器移位寻址MOV R0,R2,LSL #30 x080 x08逻辑左移3位3.1.1 ARM3.1.1 ARM指令集指令集寻址方式寻址方式 第3章 ARM嵌入式微处

11、理器指令系统成于大气 信达天下Copyright2012lshChengdu University of Information Technology 11 寄存器间接寻址指令中的地址码给出的是一个通用寄存器的编号,所需的操作数保存在寄存器指定地址的存储单元中,即寄存器为操作数的地址指针。寄存器间接寻址指令举例如下: LDRR1,R2;将R2指向的存储单元的数据读出;保存在R1中 SWPR1,R1,R2;将寄存器R1的值和R2指定的存储;单元的内容交换 0 x55R0R2 0 x400000000 xAA0 x40000000寻址方式分类寄存器间接寻址LDR R0,R20 xAA3.1.1 A

12、RM3.1.1 ARM指令集指令集寻址方式寻址方式 第3章 ARM嵌入式微处理器指令系统成于大气 信达天下Copyright2012lshChengdu University of Information Technology 12 基址寻址就是将基址寄存器的内容与指令中给出的偏移量相加,形成操作数的有效地址。基址寻址用于访问基址附近的存储单元,常用于查表、数组操作、功能部件寄存器访问等。基址寻址指令举例如下: LDRR2,R3,#0 x0C ;读取R3+0 x0C地址上的存储单元 ;的内容,放入R2 STRR1,R0,#-4! ;先R0=R0-4,然后把R1的值寄存 ;到保存到R0指定的存储

13、单元 寻址方式分类基址寻址0 x55R2R3 0 x400000000 xAA0 x4000000CLDR R2,R3,#0 x0C0 xAA将R3+0 x0C作为地址装载数据3.1.1 ARM3.1.1 ARM指令集指令集寻址方式寻址方式 第3章 ARM嵌入式微处理器指令系统成于大气 信达天下Copyright2012lshChengdu University of Information Technology 13 多寄存器寻址一次可传送几个寄存器值,允许一条指令传送16个寄存器的任何子集或所有寄存器。多寄存器寻址指令举例如下: LDMIAR1!,R2-R7,R12 ;将R1指向的单元中的

14、数据读出到 ;R2R7、R12中(R1自动加1) STMIAR0!,R2-R7,R12 ;将寄存器R2R7、R12的值保 ;存到R0指向的存储; 单元中 ;(R0自动加1)0 x40000000R1R2 0 x?0 x010 x400000000 x?R3R4 0 x?R6 0 x?0 x020 x030 x040 x400000040 x400000080 x4000000C存储器寻址方式分类多寄存器寻址LDMIA R1!,R2-R4,R6 0 x010 x020 x030 x040 x400000103.1.1 ARM3.1.1 ARM指令集指令集寻址方式寻址方式 第3章 ARM嵌入式微处

15、理器指令系统成于大气 信达天下Copyright2012lshChengdu University of Information Technology 14 堆栈是一个按特定顺序进行存取的存储区,操作顺序为“后进先出” 。堆栈寻址是隐含的,它使用一个专门的寄存器(堆栈指针)指向一块存储区域(堆栈),指针所指向的存储单元即是堆栈的栈顶。存储器堆栈可分为两种: 向上生长:向高地址方向生长,称为递增堆栈向下生长:向低地址方向生长,称为递减堆栈寻址方式分类堆栈寻址3.1.1 ARM3.1.1 ARM指令集指令集寻址方式寻址方式 第3章 ARM嵌入式微处理器指令系统成于大气 信达天下Copyright2

16、012lshChengdu University of Information Technology 15 寻址方式分类堆栈寻址栈底栈顶栈区SP堆栈存储区栈顶栈底栈区SP向下增长向上增长0 x123456780 x12345678堆栈压栈堆栈压栈3.1.1 ARM3.1.1 ARM指令集指令集寻址方式寻址方式 第3章 ARM嵌入式微处理器指令系统成于大气 信达天下Copyright2012lshChengdu University of Information Technology 16 栈顶SP栈顶SP栈底空堆栈栈底满堆栈 堆栈指针指向最后压入的堆栈的有效数据项,称为满堆栈;堆栈指针指向下一

17、个待压入数据的空位置,称为空堆栈。 寻址方式分类堆栈寻址0 x123456780 x12345678栈顶SP0 x12345678栈顶SP压栈压栈3.1.1 ARM3.1.1 ARM指令集指令集寻址方式寻址方式 第3章 ARM嵌入式微处理器指令系统成于大气 信达天下Copyright2012lshChengdu University of Information Technology 17 所以可以组合出四种类型的堆栈方式:满递增:堆栈向上增长,堆栈指针指向内含有效数据项的最高地址。指令如LDMFA、STMFA等; 空递增:堆栈向上增长,堆栈指针指向堆栈上的第一个空位置。指令如LDMEA、ST

18、MEA等; 满递减:堆栈向下增长,堆栈指针指向内含有效数据项的最低地址。指令如LDMFD、STMFD等;空递减:堆栈向下增长,堆栈指针向堆栈下的第一个空位置。指令如LDMED、STMED等。 寻址方式分类堆栈寻址3.1.1 ARM3.1.1 ARM指令集指令集寻址方式寻址方式 第3章 ARM嵌入式微处理器指令系统成于大气 信达天下Copyright2012lshChengdu University of Information Technology 18 多寄存器传送指令用于将一块数据从存储器的某一位置拷贝到另一位置。 如:STMIAR0!,R1-R7;将R1R7的数据保存到存储器中。;存储指

19、针在保存第一个值之后增加,;增长方向为向上增长。STMIBR0!,R1-R7;将R1R7的数据保存到存储器中。;存储指针在保存第一个值之前增加,;增长方向为向上增长。 寻址方式分类块拷贝寻址3.1.1 ARM3.1.1 ARM指令集指令集寻址方式寻址方式 第3章 ARM嵌入式微处理器指令系统成于大气 信达天下Copyright2012lshChengdu University of Information Technology 19 相对寻址是基址寻址的一种变通。由程序计数器PC提供基准地址,指令中的地址码字段作为偏移量,两者相加后得到的地址即为操作数的有效地址。相对寻址指令举例如下:BLSU

20、BR1;调用到SUBR1子程序BEQLOOP;条件跳转到LOOP标号处.LOOPMOVR6,#1.SUBR1. 寻址方式分类相对寻址3.1.1 ARM3.1.1 ARM指令集指令集寻址方式寻址方式 第3章 ARM嵌入式微处理器指令系统成于大气 信达天下Copyright2012lshChengdu University of Information Technology 20 3.1.1 ARM3.1.1 ARM指令集指令集指令格式指令格式ARM指令集指令格式典型典型ARM指令的编码格式指令的编码格式(机器码机器码) S , 其中其中号内的项是必须的,号内的项是必须的,号内的项是可选的。各项的

21、说明号内的项是可选的。各项的说明如下:如下:opcode:指令助记符;cond:执行条件;S:是否影响CPSR寄存器的值;Rd:目标寄存器; Rn:第1个操作数的寄存器;operand2:第2操作数( Shifter_operand,12位) 在3.2.2数据操作指令里介绍;语法格式语法格式(机器码机器码)cond001opcodeSRnRdShifter_operand31 2827 2524 212019 1615 1211 0第3章 ARM嵌入式微处理器指令系统成于大气 信达天下Copyright2012lshChengdu University of Information Techn

22、ology 21 当处理器工作在ARM状态时,几乎所有的指令均可根据CPSR中条件码的状态和指令的条件域有条件的执行。当指令的执行条件满足时,指令被执行。 每一条ARM指令包含4位的条件码,位于指令的最高4位31:28。条件码共有16种,每种条件码可用两个字符表示,这两个字符可以添加在指令助记符的后面和指令同时使用。B 无条件跳转BEQ 相等则跳转,即当CPSR中的Z标志置位时发生跳转ARM指令集条件域3.1.1 ARM3.1.1 ARM指令集指令集指令格式指令格式第3章 ARM嵌入式微处理器指令系统成于大气 信达天下Copyright2012lshChengdu University of

23、Information Technology 22 通过在指令后加上合适的条件标志位,ARM指令可以条件执行 通过减少前向的分支数目,增强了指令的代码密度和指令性能CMP r0, r1 ADDGT r2, r2, #1 ADDLE r3, r3, #1默认情况下,数据处理指令不会影响条件标志位,但是,可在指令后加“s”(或其它条件位)后缀,以实现标志位的置位。loop ADD r2, r2, r3 SUBS r1, r1, #0 x01 BNE loop r2=r2+r3 如果如果 Z 标志清除则分支跳转标志清除则分支跳转 r1 减减1并设置标志位并设置标志位 r0 - r1, 比较比较 r0

24、 和和 r1 并设置标志位并设置标志位 if r2=r2+1 标志位保持不变标志位保持不变 if = r3=r3+1 标志位保持不变标志位保持不变条件条件执行和标志位执行和标志位第3章 ARM嵌入式微处理器指令系统成于大气 信达天下Copyright2012lshChengdu University of Information Technology 23 条件执行的例子条件执行的例子if (r0 = 0) r1 = r1 + 1;else r2 = r2 + 1;C 代码代码 5 条指令 占据 5 个字 5个或者6个时钟周期 3 条指令 占据3 个字 3 个时钟周期 CMP r0, #0 B

25、NE else ADD r1, r1, #1 B endelse ADD r2, r2, #1end .ARM 指令指令 非条件执行非条件执行 CMP r0, #0 ADDEQ r1, r1, #1 ADDNE r2, r2, #1 .条件执行条件执行第3章 ARM嵌入式微处理器指令系统成于大气 信达天下Copyright2012lshChengdu University of Information Technology 24 指令条件码指令条件码 不相等无符号高于或相同无符号低于为负相等溢出无溢出无符号高于无符号低于或相同为正或零小于大于小于或等于总是大于或等于EQNECS/HSCC/LO

26、PLVSHILSGELTGTLEALMIVC后缀后缀描述描述Z=0C=1C=0Z=1被测试的标志被测试的标志N=1N=0V=1V=0C=1 & Z=0C=0 or Z=1N=VN!=VZ=0 & N=VZ=1 or N=!V可能的指令条件码如下所示 注意: AL 是默认的,不需要被特别指出。 第3章 ARM嵌入式微处理器指令系统成于大气 信达天下Copyright2012lshChengdu University of Information Technology 25 ARM指令的基本格式如下:ARM指令集第2个操作数 S , 灵活的使用第2个操作数“operand2”能够提

27、高代码效率。第二个操作数通过桶型移位器传输到ALU它有如下的形式:Rm寄存器方式;Rm,shift寄存器移位方式;#immed_8r8位常数表达式;第二操作数的三种形式第二操作数的三种形式第3章 ARM嵌入式微处理器指令系统成于大气 信达天下Copyright2012lshChengdu University of Information Technology 26 1.寄存器方式,操作数即为寄存器的数值。例如:SUBR1,R1,R2 ;R1=R1-R2MOVPC,R02.寄存器移位方式 移位的值可为以下的两种: 5位的无符号整数(031) 其它寄存器的最低字节 用来实现乘以/除以一个常数 A

28、DD r0, r5, r5 LSL 1 r0 = r5 x 3 ADD R1,R1,R1,LSL #3 ;R1=R1+R1*8=9R1 SUB R1,R1,R2,LSR R3 ;R1=R1-(R2/2R3)结果结果操作数操作数 1桶型移位器桶型移位器操作数操作数 2ALU寄存器作为第二操作数寄存器作为第二操作数第3章 ARM嵌入式微处理器指令系统成于大气 信达天下Copyright2012lshChengdu University of Information Technology 27 寄存器的移位寄存器的移位操作操作Destination0DestinationLSL: 逻辑左移逻辑左移A

29、SR: 算术右移算术右移相当于乘2相当于除以2, 保留符号位Destination0DestinationLSR: 逻辑右移逻辑右移ROR: 循环右移循环右移相当于除以2最低有效位旋转至最高有效位DestinationRRX: 扩展的循环右移扩展的循环右移寄存器数值右移一位,C标志位填补空出的位,移出的位代替C标志位CF第二操作数是寄存器移位后的数据。将寄存器的移位结果作为操作数,但被移位寄存器Rm的值保持不变 移位的范围为0-31位,对指令的性能不会造成太大的影响第3章 ARM嵌入式微处理器指令系统成于大气 信达天下Copyright2012lshChengdu University of

30、Information Technology 28 3.立即数 范围在 0-255的8位立即数 ANDR1,R2,#0 xff ;数据0XFF直接参与运算 或者能够通过一个8位立即数循环右移偶数位得到的数如: MOVR3, #0 x7F00 ;0X7F00是合法立即数 AND R1,R2,#0X04800000 ;0X12右移10位即可(后面讲解原理)结果结果操作数操作数 1桶型移位器桶型移位器操作数操作数 2ALU立即数作为第二操作数立即数作为第二操作数第3章 ARM嵌入式微处理器指令系统成于大气 信达天下Copyright2012lshChengdu University of Infor

31、mation Technology 29 ARM 指令不能包含一个 32位的立即数常数 ARM 指令都是32 位定长的在数据处理指令的格式中,第二个操作数有12位来对应4 位的移位数乘以2组成了步长为2,范围在030的移位值 立即数法则(8图法) : “8 位的常数循环右移偶数位得到”07118immed_8ShifterRORrotx2小测试小测试: 指令:指令:0 xe3a004ffMOV r0, #?立即立即数作为第二操作数数作为第二操作数 第3章 ARM嵌入式微处理器指令系统成于大气 信达天下Copyright2012lshChengdu University of Informati

32、on Technology 30 举例表示: AND R1,R2,#0 xff 当处理器处理这条指令的第二操作数0 xff时,因为0 xff为8位二进制数,所以处理器就将其直接放进8位“基本”数中,而4位“移位”数则为0。 AND R1,R2,#0X04800000;是合法的,因为可以把0X12循环右移10位可以得到此数 立即数作为第二操作数立即数作为第二操作数循环右移10位0 x120 0 0 1 0 0 1 00 x000 0 0 0 0 0 0 00 x000 0 0 0 0 0 0 00 x000 0 0 0 0 0 0 00 x000 0 0 0 0 0 0 00 x000 0 0

33、0 0 0 0 00 x801 0 0 0 0 0 0 00 x040 0 0 0 0 1 0 08位常数第3章 ARM嵌入式微处理器指令系统成于大气 信达天下Copyright2012lshChengdu University of Information Technology 31 说明:如何判断一个立即数是否符合8位图法第一,判断一个数是否符合8位位图的原则,首先看这个数转换成二进制后1的个数是否不超过8个,如果不超过8个,再看这n个1(nMOV r0, #0 xFF LDR r0, =0 x55555555 =LDR r0, PC, #12位立即数位立即数DCD 0 x55555555

34、推荐用这种方式将常数加载到寄存器加载加载3232位的常数位的常数第3章 ARM嵌入式微处理器指令系统成于大气 信达天下Copyright2012lshChengdu University of Information Technology 34 3.1.1 ARM3.1.1 ARM指令集指令集 ARM指令集主要包括6大类指令: 数据处理指令:如ADD、SUB、AND等加载存储(Load-Store)指令:如LDR等分支指令:如B、BL等状态寄存器访问指令:如MRS、MSR等协处理器指令:如LDC、STC等异常处理指令:如SWI等第3章 ARM嵌入式微处理器指令系统成于大气 信达天下Copyri

35、ght2012lshChengdu University of Information Technology 35 3.1.1 ARM3.1.1 ARM指令集指令集示例第3章 ARM嵌入式微处理器指令系统成于大气 信达天下Copyright2012lshChengdu University of Information Technology 36 3.1.2 THUMB3.1.2 THUMB指令集指令集 Thumb指令集是16位的指令集,它对C代码的密度进行了优化,平均达到约ARM代码大小的65%。为了尽量降低指令编码长度,Thumb指令集具体采用了如下约束: 不能使用条件执行,而对于标志则一

36、直都是根据指令结果进行设置的源寄存器和目标寄存器是相同的只使用低端寄存器,即不使用寄存器R8-R12对指令中出现的常量有大小的限制不能在指令中使用内嵌的桶型移位器(inline barrel shifter)第3章 ARM嵌入式微处理器指令系统成于大气 信达天下Copyright2012lshChengdu University of Information Technology 37 3.1.3 THUMB-23.1.3 THUMB-2指令集指令集 Thumb-2 指令集主要是对Thumb指令集架构的扩展,其设计目标是以Thumb的指令密度达到ARM的性能。它具有如下特性 增加了32位的指令

37、,因而实现了几乎ARM指令集架构的所有功能完整保留了16位的Thumb指令集编译器可以自动地选择16位和32位指令的混合具有ARM态的行为,包括可以直接处理异常、访问协处理器以及完成v5TE的高级数据处理功能通过If-Then (IT) 指令,1-4条紧邻的指令可以条件执行第3章 ARM嵌入式微处理器指令系统成于大气 信达天下Copyright2012lshChengdu University of Information Technology 38 3.1.4 JAZELLE 3.1.4 JAZELLE Jazelle技术使得ARM核可以执行8位的Java字节码,约95%的JAVA字节码可以

38、由硬件执行,从而使效率显著提高。 第3章 ARM嵌入式微处理器指令系统成于大气 信达天下Copyright2012lshChengdu University of Information Technology 39 主要内容主要内容1 ARM指令集概述 2 ARM V4T架构指令体系 3 ARM v5TE 架构指令体系 4 ARM v6 架构指令体系新特性 5 Thumb指令集 第3章 ARM嵌入式微处理器指令系统成于大气 信达天下Copyright2012lshChengdu University of Information Technology 40 指令执行的条件码I用于区别立即数(I

39、为1)和寄存器移位(I为0)opcode数据处理指令操作码第二操作数Rd目标寄存器Rn第一操作数寄存器S设置条件码,与指令中的S位对应带进位加法ADC0101带进位减法指令SBC0110带进位逆向减法指令RSC0111位测试指令TST1000相等测试指令TEQ1001比较指令CMP1010负数比较指令CMN1011逻辑或操作指令ORR1100数据传送MOV1101位清除指令BIC1110数据非传送MVN1111加法运算指令ADD0100逆向减法指令RSB0011减法运算指令SUB0010逻辑异或操作指令EOR0001逻辑与操作指令AND0000说明指令助记符操作码opcode操作码功能表3.2

40、.23.2.2数据处理指令数据处理指令第3章 ARM嵌入式微处理器指令系统成于大气 信达天下Copyright2012lshChengdu University of Information Technology 41 ADD Rd, Rn, operand2加法运算指令RdRn+operand2ADDcondSSUB Rd, Rn, operand2减法运算指令RdRn-operand2SUBcondSRSB Rd, Rn, operand2逆向减法指令Rdoperand2-RnRSBcondSADC Rd, Rn, operand2带进位加法RdRn+operand2+CarryADCco

41、ndSSBC Rd, Rn, operand2带进位减法指令RdRn-operand2-(NOT)CarrySBCcondSRSC Rd, Rn, operand2带进位逆向减法指令Rdoperand2-Rn-(NOT)CarryRSCcondS3.2.23.2.2数据处理指令数据处理指令AND Rd, Rn, operand2逻辑与操作指令RdRn & operand2ANDcondSORR Rd, Rn, operand2逻辑或操作指令RdRn | operand2ORRcondSEOR Rd, Rn, operand2逻辑异或指令RdRn operand2EORcondSBIC

42、Rd, Rn, operand2位清除指令RdRn & (operand2)BICcondS助记符说明操作条件码位置MOV Rd,operand2数据传送Rdoperand2 MOVcondSMVN Rd,operand2数据非传送Rd(operand2)MVNcondS第3章 ARM嵌入式微处理器指令系统成于大气 信达天下Copyright2012lshChengdu University of Information Technology 42 助记符说明操作条件码位置CMP Rn, operand2比较指令标志N、Z、C、VRn-operand2CMPcondCMN Rn, op

43、erand2负数比较指令标 志 N 、 Z 、 C 、VRn+operand2CMNcondTST Rn, operand2位测试指令标志N、Z、C、VRn & operand2TSTcondTEQ Rn, operand2相等测试指令标志N、Z、C、VRn operand2TEQcond3.2.23.2.2数据处理指令数据处理指令下面简要介绍其中几个相对特殊点的指令,其余指令比较简单不做详细说明。第3章 ARM嵌入式微处理器指令系统成于大气 信达天下Copyright2012lshChengdu University of Information Technology 43 助记符说

44、明操作条件码位置ADD Rd, Rn, operand2加法运算指令RdRn+operand2ADDcondSSUB Rd, Rn, operand2减法运算指令RdRn-operand2SUBcondSRSB Rd, Rn, operand2RSB Rd, Rn, operand2逆向减法指令Rdoperand2-RnRSBcondSADC Rd, Rn, operand2带进位加法RdRn+operand2+CarryADCcondSSBC Rd, Rn, operand2带进位减法指令RdRn-operand2-(NOT)CarrySBCcondSRSC Rd, Rn, operand2

45、带进位逆向减法指令Rdoperand2-Rn-(NOT)CarryRSCcondS 逆向减法运算指令RSB指令将operand2的值减去Rn,结果保存到Rd中。指令格式如下: RSBcondS Rd,Rn,operand2 应用示例: RSB R3,R1,#0 xFF00;R3=0 xFF00-R1 RSBS R1,R2,R2,LSL #2 ;R1=(R22)-R2=R23 3.2.23.2.2数据处理指令数据处理指令第3章 ARM嵌入式微处理器指令系统成于大气 信达天下Copyright2012lshChengdu University of Information Technology 4

46、4 助记符说明操作条件码位置ADD Rd, Rn, operand2加法运算指令RdRn+operand2ADDcondSSUB Rd, Rn, operand2减法运算指令RdRn-operand2SUBcondSRSB Rd, Rn, operand2逆向减法指令Rdoperand2-RnRSBcondSADC Rd, Rn, operand2带进位加法RdRn+operand2+CarryADCcondSSBC Rd, Rn, operand2带进位减法指令RdRn-operand2-(NOT)CarrySBCcondSRSC Rd, Rn, operand2RSC Rd, Rn, op

47、erand2带进位逆向减法指令Rdoperand2-Rn-(NOT)CarryRSCcondS 带进位逆向减法指令RSC指令用寄存器operand2减去Rn,再减去CPSR中的C条件标志位,结果保存到Rd中。指令格式如下: RSCcondS Rd,Rn,operand2 应用示例(使用RSC指令实现求64位数值的负数 ): RSBS R2,R0,#0 RSC R3,R1,#03.2.23.2.2数据处理指令数据处理指令第3章 ARM嵌入式微处理器指令系统成于大气 信达天下Copyright2012lshChengdu University of Information Technology 4

48、5 助记符说明操作条件码位置AND Rd, Rn, operand2逻辑与操作指令RdRn & operand2ANDcondSORR Rd, Rn, operand2逻辑或操作指令RdRn | operand2ORRcondSEOR Rd, Rn, operand2逻辑异或操作指令RdRn operand2EORcondSBIC Rd, Rn, operand2BIC Rd, Rn, operand2位清除指令RdRn & (operand2)BICcondS 位清除指令BIC指令将寄存器Rn的值与operand2的值的反码按位作逻辑“与”操作,结果保存到Rd中。指令格式如下

49、: BICcondS Rd,Rn, operand2 应用示例: BIC R1,R1,#0 x0F;将R1的低4位清零,其它位不变 BICR1,R2,R3;将R3的反码和R2相逻辑“与”,;结果保存到R1中3.2.23.2.2数据处理指令数据处理指令第3章 ARM嵌入式微处理器指令系统成于大气 信达天下Copyright2012lshChengdu University of Information Technology 46 助记符说明操作条件码位置CMP Rn, operand2CMP Rn, operand2比较指令标志N、Z、C、VRn-operand2CMPcondCMN Rn, o

50、perand2负数比较指令标 志 N 、 Z 、 C 、VRn+operand2CMNcondTST Rn, operand2位测试指令标志N、Z、C、VRn & operand2TSTcondTEQ Rn, operand2相等测试指令标志N、Z、C、VRn operand2TEQcond 比较指令CMP指令将寄存器Rn的值减去operand2的值,根据操作的结果更新CPSR中的相应条件标志位,以便后面的指令根据相应的条件标志来判断是否执行。指令格式如下: CMPcondRn, operand2 应用示例: CMPR1,#10 ; R1与10比较,设置相关标志位 CMPR1,R2;

51、R1与R2比较,设置相关标志位 3.2.23.2.2数据处理指令数据处理指令第3章 ARM嵌入式微处理器指令系统成于大气 信达天下Copyright2012lshChengdu University of Information Technology 47 助记符说明操作条件码位置CMP Rn, operand2CMP Rn, operand2比较指令标志N、Z、C、VRn-operand2CMPcondCMN Rn, operand2负数比较指令标 志 N 、 Z 、 C 、VRn+operand2CMNcondTST Rn, operand2位测试指令标志N、Z、C、VRn & o

52、perand2TSTcondTEQ Rn, operand2相等测试指令标志N、Z、C、VRn operand2TEQcond 比较指令CMP指令将寄存器Rn的值减去operand2的值,根据操作的结果更新CPSR中的相应条件标志位,以便后面的指令根据相应的条件标志来判断是否执行。指令格式如下: CMPcondRn, operand2 注意:CMP指令与SUBS指令的区别在于CMP指令不保存运算结果。在进行两个数据的大小判断时,常用CMP指令及相应的条件码来操作。 3.2.23.2.2数据处理指令数据处理指令第3章 ARM嵌入式微处理器指令系统成于大气 信达天下Copyright2012lsh

53、Chengdu University of Information Technology 48 助记符说明操作条件码位置CMP Rn, operand2比较指令标志N、Z、C、VRn-operand2CMPcondCMN Rn, operand2CMN Rn, operand2负数比较指令标 志 N 、 Z 、 C 、VRn+operand2CMNcondTST Rn, operand2位测试指令标志N、Z、C、VRn & operand2TSTcondTEQ Rn, operand2相等测试指令标志N、Z、C、VRn operand2TEQcond 负数比较指令CMN指令使用寄存器R

54、n的值加上operand2的值,根据操作的结果更新CPSR中的相应条件标志位,以便后面的指令根据相应的条件标志来判断是否执行。指令格式如下: CMNcondRn, operand2 应用示例: CMNR0,#1 ; R0+1,判断R0是否为1的补码;如果是,则设置Z标志位3.2.23.2.2数据处理指令数据处理指令第3章 ARM嵌入式微处理器指令系统成于大气 信达天下Copyright2012lshChengdu University of Information Technology 49 助记符说明操作条件码位置CMP Rn, operand2比较指令标志N、Z、C、VRn-operand

55、2CMPcondCMN Rn, operand2CMN Rn, operand2负数比较指令标 志 N 、 Z 、 C 、VRn+operand2CMNcondTST Rn, operand2位测试指令标志N、Z、C、VRn & operand2TSTcondTEQ Rn, operand2相等测试指令标志N、Z、C、VRn operand2TEQcond 负数比较指令CMN指令使用寄存器Rn的值加上operand2的值,根据操作的结果更新CPSR中的相应条件标志位,以便后面的指令根据相应的条件标志来判断是否执行。指令格式如下: CMPcondRn, operand2注意:CMN指令与

56、ADDS指令的区别在于CMN指令不保存运算结果。CMN指令可用于负数比较,比如CMN R0,#1指令则表示R0与-1比较,若R0为-1(即1的补码),则Z置位;否则Z复位。 3.2.23.2.2数据处理指令数据处理指令第3章 ARM嵌入式微处理器指令系统成于大气 信达天下Copyright2012lshChengdu University of Information Technology 50 助记符说明操作条件码位置CMP Rn, operand2比较指令标志N、Z、C、VRn-operand2CMPcondCMN Rn, operand2负数比较指令标 志 N 、 Z 、 C 、VRn+

57、operand2CMNcondTST Rn, operand2TST Rn, operand2位测试指令标志N、Z、C、VRn & operand2TSTcondTEQ Rn, operand2相等测试指令标志N、Z、C、VRn operand2TEQcond 位测试指令TST指令将寄存器Rn的值与operand2的值按位作逻辑“与”操作,根据操作的结果更新CPSR中的相应条件标志位,以便后面的指令根据相应的条件标志来判断是否执行。指令格式如下: TSTcond Rn, operand2 应用示例: TSTR0,#0 x01; 判断R0的最低位是否为0 TSTR1,#0 x0F; 判断

58、R1的低4位是否为0 3.2.23.2.2数据处理指令数据处理指令第3章 ARM嵌入式微处理器指令系统成于大气 信达天下Copyright2012lshChengdu University of Information Technology 51 助记符说明操作条件码位置CMP Rn, operand2比较指令标志N、Z、C、VRn-operand2CMPcondCMN Rn, operand2负数比较指令标 志 N 、 Z 、 C 、VRn+operand2CMNcondTST Rn, operand2TST Rn, operand2位测试指令标志N、Z、C、VRn & operan

59、d2TSTcondTEQ Rn, operand2相等测试指令标志N、Z、C、VRn operand2TEQcond 位测试指令TST指令将寄存器Rn的值与operand2的值按位作逻辑“与”操作,根据操作的结果更新CPSR中的相应条件标志位,以便后面的指令根据相应的条件标志来判断是否执行。指令格式如下: TSTcond Rn, operand2注意:TST指令与ANDS指令的区别在于TST指令不保存运算结果。TST指令通常与EQ、NE条件码配合使用,当所有测试位均为0时,EQ有效,而只要有一个测试位不为0,则NE有效。 3.2.23.2.2数据处理指令数据处理指令第3章 ARM嵌入式微处理器

60、指令系统成于大气 信达天下Copyright2012lshChengdu University of Information Technology 52 助记符说明操作条件码位置CMP Rn, operand2比较指令标志N、Z、C、VRn-operand2CMPcondCMN Rn, operand2负数比较指令标 志 N 、 Z 、 C 、VRn+operand2CMNcondTST Rn, operand2位测试指令标志N、Z、C、VRn & operand2TSTcondTEQ Rn, operand2TEQ Rn, operand2相等测试指令标志N、Z、C、VRn operand2TEQcond 相等测试指令TEQ指令将寄存器Rn的值与operand2的值按位作逻辑“异或”操作,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论