嵌入式系统课件:ARM 第三讲-final.ppt

上传人(卖家):罗嗣辉 文档编号:2040505 上传时间:2022-01-19 格式:PPT 页数:115 大小:3.32MB
下载 相关 举报
嵌入式系统课件:ARM 第三讲-final.ppt_第1页
第1页 / 共115页
嵌入式系统课件:ARM 第三讲-final.ppt_第2页
第2页 / 共115页
嵌入式系统课件:ARM 第三讲-final.ppt_第3页
第3页 / 共115页
嵌入式系统课件:ARM 第三讲-final.ppt_第4页
第4页 / 共115页
嵌入式系统课件:ARM 第三讲-final.ppt_第5页
第5页 / 共115页
点击查看更多>>
资源描述

1、CHAPTER 3ARM指令系统指令系统2022-1-192内容提要内容提要ARM处理器寻址方式处理器寻址方式指令集介绍指令集介绍2022-1-193ARM指令系统指令系统o 简介简介 ARM处理器是基于精简指令集计算机(RISC)原理设计的,指令集和相关译码机制较为简单。带有T变量的ARM核具有32位ARM指令集和16位Thumb指令集,ARM指令集效率高,但是代码密度低;而Thumb指令集具有较高的代码密度,却仍然保持ARM的大多数性能上的优势,它是ARM指令集的子集。所有的ARM指令都是可以有条件执行的,而Thumb指令仅有一条指令具备条件执行功能。ARM程序和Thumb程序可相互调用,

2、相互之间的状态切换开销几乎为零。 2022-1-194ARM指令系统指令系统o ARM指令集与指令集与Thumb指令集的关系指令集的关系Thumb指令集具有灵活、小巧的特点ARM指令集支持ARM核所有的特性,具有高效、快速的特点2022-1-195内容提要内容提要ARM处理器寻址方式处理器寻址方式指令集介绍指令集介绍2022-1-196ARM处理器寻址方式处理器寻址方式o 寻址方式分类寻址方式分类 寻址方式是根据指令中给出的地址码字段来实现寻找真实操作数地址的方式。ARM处理器具有9种基本寻址方式。1.寄存器寻址;2.立即寻址;3.寄存器移位寻址;4.寄存器间接寻址;5.基址寻址;6.多寄存器

3、寻址;7.堆栈寻址;8.块拷贝寻址;9.相对寻址。2022-1-197 操作数的值在寄存器中,指令中的地址码字段指出的是寄存器编号,指令执行时直接取出寄存器值来操作。寄存器寻址指令举例如下: MOV R1,R2 ;将R2的值存入R1 SUB R0,R1,R2 ;将R1的值减去R2的值,结果保存到R0 0 xAA0 x55R2R1ARM处理器寻址方式处理器寻址方式o 寻址方式分类寻址方式分类寄存器寻址寄存器寻址MOV R1,R20 xAA2022-1-198 立即寻址指令中的操作码字段后面的地址码部分即是操作数本身,也就是说,数据就包含在指令当中,取出指令也就取出了可以立即使用的操作数(这样的数

4、称为立即数)。立即寻址指令举例如下: SUBSR0,R0,#1 ;R0减1,结果放入R0,并且影响标志位MOVR0,#0 xFF000 ;将立即数0 xFF000装入R0寄存器 0 x55R0MOV R0,#0 xFF00程序存储ARM处理器寻址方式处理器寻址方式o 寻址方式分类寻址方式分类立即寻址立即寻址MOV R0,#0 xFF000 xFF00从代码中获得数据2022-1-199 寄存器移位寻址是ARM指令集特有的寻址方式。当第2个操作数是寄存器移位方式时,第2个寄存器操作数在与第1个操作数结合之前,选择进行移位操作。寄存器移位寻址指令举例如下:MOVR0,R2,LSL #3 ;R2的值

5、左移3位,结果放入R0,即是R0=R28 ANDSR1,R1,R2,LSL R3 ;R2的值左移R3位,然后和R1相“与” ,放入R10 x55R0R20 x01ARM处理器寻址方式处理器寻址方式o 寻址方式分类寻址方式分类寄存器移位寻址寄存器移位寻址MOV R0,R2,LSL #30 x080 x08逻辑左移3位2022-1-1910 寄存器间接寻址指令中的地址码给出的是一个通用寄存器的编号,所需的操作数保存在寄存器指定地址的存储单元中,即寄存器为操作数的地址指针。寄存器间接寻址指令举例如下: LDR R1,R2;将R2指向的存储单元的数据读出保存在R1中 SWP R1,R1,R2;将寄存器

6、R1的值和R2指定的存储单元的内容交换 0 x55R0R2 0 x400000000 xAA0 x40000000ARM处理器寻址方式处理器寻址方式o 寻址方式分类寻址方式分类寄存器间接寻址寄存器间接寻址LDR R1,R20 xAA2022-1-1911 基址寻址就是将基址寄存器的内容与指令中给出的偏移量相加,形成操作数的有效地址。基址寻址用于访问基址附近的存储单元,常用于查表、数组操作、功能部件寄存器访问等。基址寻址指令举例如下: LDRR2,R3,#0 x0C ;读取R3+0 x0C地址上的存储单元的内容,放入R2 STRR1,R0,#-4! ;先R0=R0-4,然后把R1的值寄存到保存到

7、R0指定的存储单元 ARM处理器寻址方式处理器寻址方式o 寻址方式分类寻址方式分类基址寻址基址寻址0 x55R2R3 0 x400000000 xAA0 x4000000CLDR R2,R3,#0 x0C0 xAA将R3+0 x0C作为地址装载数据2022-1-1912 多寄存器寻址一次可传送几个寄存器值,允许一条指令传送16个寄存器的任何子集或所有寄存器。多寄存器寻址指令举例如下: LDMIAR1!,R2-R7,R12 ;将R1指向的单元中的数据读出到 ;R2R7、R12中(R1自动加1) STMIAR0!,R2-R7,R12 ;将寄存器R2R7、R12的值保 ;存到R0指向的存储; 单元中

8、 ;(R0自动加1)0 x40000000R1R20 x?0 x010 x400000000 x?R3R40 x?R60 x?0 x020 x030 x040 x400000040 x400000080 x4000000C存储器ARM处理器寻址方式处理器寻址方式o 寻址方式分类寻址方式分类多寄存器寻址多寄存器寻址LDR R1!,R2-R4,R6 0 x010 x020 x030 x040 x400000102022-1-1913 堆栈是一个按特定顺序进行存取的存储区,操作顺序为“后进先出” 。堆栈寻址是隐含的,它使用一个专门的寄存器(堆栈指针)指向一块存储区域(堆栈),指针所指向的存储单元即是

9、堆栈的栈顶。存储器堆栈可分为两种: 向上生长:向高地址方向生长,称为递增堆栈向下生长:向低地址方向生长,称为递减堆栈ARM处理器寻址方式处理器寻址方式o 寻址方式分类寻址方式分类堆栈寻址堆栈寻址2022-1-1914ARM处理器寻址方式处理器寻址方式o 寻址方式分类寻址方式分类堆栈寻址堆栈寻址栈底栈顶栈区SP堆栈存储区栈顶栈底栈区SP向下增长向上增长0 x123456780 x12345678堆栈压栈堆栈压栈2022-1-1915栈顶SP栈顶SP栈底空堆栈栈底满堆栈 堆栈指针指向最后压入的堆栈的有效数据项,称为满堆栈;堆栈指针指向下一个待压入数据的空位置,称为空堆栈。 ARM处理器寻址方式处理

10、器寻址方式o 寻址方式分类寻址方式分类堆栈寻址堆栈寻址0 x123456780 x12345678栈顶SP0 x12345678栈顶SP压栈压栈2022-1-1916所以可以组合出四种类型的堆栈方式:满递增:堆栈向上增长,堆栈指针指向内含有效数据项的最高地址。指令如LDMFA、STMFA等; 空递增:堆栈向上增长,堆栈指针指向堆栈上的第一个空位置。指令如LDMEA、STMEA等; 满递减:堆栈向下增长,堆栈指针指向内含有效数据项的最低地址。指令如LDMFD、STMFD等;空递减:堆栈向下增长,堆栈指针向堆栈下的第一个空位置。指令如LDMED、STMED等。 ARM处理器寻址方式处理器寻址方式o

11、 寻址方式分类寻址方式分类堆栈寻址堆栈寻址2022-1-1917 多寄存器传送指令用于将一块数据从存储器的某一位置拷贝到另一位置。 如:STMIAR0!,R1-R7;将R1R7的数据保存到存储器中。;存储指针在保存第一个值之后增加,;增长方向为向上增长。STMIBR0!,R1-R7;将R1R7的数据保存到存储器中。;存储指针在保存第一个值之前增加,;增长方向为向上增长。 ARM处理器寻址方式处理器寻址方式o 寻址方式分类寻址方式分类块拷贝寻址块拷贝寻址2022-1-1918 相对寻址是基址寻址的一种变通。由程序计数器PC提供基准地址,指令中的地址码字段作为偏移量,两者相加后得到的地址即为操作数

12、的有效地址。相对寻址指令举例如下:BLSUBR1;调用到SUBR1子程序BEQLOOP;条件跳转到LOOP标号处.LOOPMOVR6,#1.SUBR1. ARM处理器寻址方式处理器寻址方式o 寻址方式分类寻址方式分类相对寻址相对寻址2022-1-1919内容提要内容提要ARM处理器寻址方式处理器寻址方式指令集介绍指令集介绍 ARM指令集 Thumb指令集2022-1-1920o 简单的简单的ARM程序程序;文件名:TEST1.S ;功能:实现两个寄存器相加 ;说明:使用ARMulate软件仿真调试 AREAExample1,CODE,READONLY ;声明代码段Example1 ENTRY

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

14、ENTRY ;标识程序入口 CODE32 ;声明32位ARM指令START MOVR0,#0 ;设置参数 MOVR1,#10LOOPBLADD_SUB ;调用子程序ADD_SUB BLOOP ;跳转到LOOPADD_SUB ADDSR0,R0,R1 ;R0 = R0 + R1 MOVPC,LR ;子程序返回 END ;文件结束 2022-1-1922内容提要内容提要ARM处理器寻址方式处理器寻址方式指令集介绍指令集介绍 ARM指令集 Thumb指令集2022-1-1923ARM指令集o 1.指令格式o 2.条件码o 3.存储器访问指令o 4.数据处理指令o 5.乘法指令o 6.ARM分支指令o

15、 7.协处理器指令o 8.杂项指令o 9.伪指令2022-1-1924ARM指令集o 1.指令格式o 2.条件码o 3.存储器访问指令o 4.数据处理指令o 5.乘法指令o 6.ARM分支指令o 7.协处理器指令o 8.杂项指令o 9.伪指令2022-1-1925 ARM指令的基本格式如下:指令集介绍指令集介绍o ARM指令集指令集指令格式指令格式 S , 其中号内的项是必须的,号内的项是可选的。各项的说明如下:opcode:指令助记符;cond:执行条件;S:是否影响CPSR寄存器的值;Rd:目标寄存器; Rn:第1个操作数的寄存器;operand2:第2个操作数;2022-1-1926 A

16、RM指令的基本格式如下:指令集介绍指令集介绍o ARM指令集指令集第第2个操作数个操作数 S , 灵活的使用第2个操作数“operand2”能够提高代码效率。它有如下的形式:#immed_8r常数表达式;Rm寄存器方式;Rm,shift寄存器移位方式;ADDR1,R1,R1,LSL #3;R1=R1+R1*8=9*R1ANDR1,R2,#0 x0FSUBR1,R1,R22022-1-1927ARM指令集o 1.指令格式o 2.条件码o 3.存储器访问指令o 4.数据处理指令o 5.乘法指令o 6.ARM分支指令o 7.协处理器指令o 8.杂项指令o 9.伪指令2022-1-1928 ARM指令

17、的基本格式如下:指令集介绍指令集介绍o ARM指令集指令集条件码条件码 S , 使用条件码“cond”可以实现高效的逻辑操作,提高代码效率。 所有的ARM指令都可以条件执行,而Thumb指令只有B(跳转)指令具有条件执行 功能。如果指令不标明条件代码,将默认为无条件(AL)执行。2022-1-1929操作码操作码条件助记符条件助记符标志标志含义含义0000EQZ=1相等相等0001NEZ=0不相等不相等0010CS/HSC=1无符号数大于或等于无符号数大于或等于0011CC/LOC=0无符号数小于无符号数小于0100MIN=1负数负数0101PLN=0正数或零正数或零0110VSV=1溢出溢出

18、0111VCV=0没有溢出没有溢出1000HIC=1,Z=0无符号数大于无符号数大于1001LSC=0,Z=1无符号数小于或等于无符号数小于或等于1010GEN=V有符号数大于或等于有符号数大于或等于 1011LTN!=V有符号数小于有符号数小于 1100GTZ=0,N=V有符号数大于有符号数大于 1101LEZ=1,N!=V有符号数小于或等于有符号数小于或等于 1110AL任何任何无条件执行无条件执行 (指令默认条件指令默认条件) 1111NV任何任何从不执行从不执行(不要使用不要使用) 指令条件码表2022-1-1930指令集介绍指令集介绍o ARM指令集指令集条件码条件码C代码:If(a

19、 b)a+;Elseb+;对应的汇编代码:CMPR0,R1 ;R0与R1比较ADDHI R0,R0,#1 ;若R0R1,则R0=R0+1ADDLS R1,R1,#1 ;若R01,则R1=R1+1示例:2022-1-1931ARM指令集o 1.指令格式o 2.条件码o 3.存储器访问指令o 4.数据处理指令o 5.乘法指令o 6.ARM分支指令o 7.协处理器指令o 8.杂项指令o 9.伪指令2022-1-1932指令集介绍指令集介绍o ARM指令集指令集存储器访问指令存储器访问指令 ARM处理器是典型的RISC处理器,对存储器的访问只能使用加载和存储指令实现。 存储器访问指令分为单寄存器操作指

20、令和多寄存器操作指令。2022-1-1933助记符助记符说明说明操作操作条件码位置条件码位置LDR Rd,addressing 加载字数据加载字数据Rdaddressing,addressing索引索引LDRcondLDRB Rd,addressing 加载无符号字节数据加载无符号字节数据Rdaddressing,addressing索引索引LDRcondBLDRT Rd,addressing以用户模式加载字数以用户模式加载字数据据Rdaddressing,addressing索引索引LDRcondTLDRBT Rd, addressing 以用户模式加载无符以用户模式加载无符号字节数据号字节

21、数据Rdaddressing,addressing索引索引LDRcondBTLDRH Rd, addressing 加载无符号半字数据加载无符号半字数据Rdaddressing,addressing索引索引LDRcondHLDRSB Rd, addressing 加载有符号字节数据加载有符号字节数据Rdaddressing,addressing索引索引LDRcondSBLDRSH Rd, addressing加载有符号半字数据加载有符号半字数据 Rdaddressing,addressing索引索引LDRcondSH ARM存储器访问指令单寄存器加载2022-1-1934助记符助记符说明说明操

22、作操作条件码位置条件码位置STR Rd, addressing 存储字数据存储字数据addressingRd,addressing索引索引STRcondSTRB Rd,addressing 存储字节数据存储字节数据addressingRd,addressing索引索引STRcondBSTRT Rd,addressing 以用户模式存储字数据以用户模式存储字数据addressingRd, addressing索引索引STRcondTSTRBT Rd,addressing 以用户模式存储字节数以用户模式存储字节数据据addressingRd,addressing索引索引STRcondBTSTRH

23、Rd,addressing 存储半字数据存储半字数据addressing Rd,addressing索引索引STRcondH LDR/STR指令用于对内存变量的访问、内存缓冲区数据的访问、查表、外围部件的控制操作等。若使用LDR指令加载数据到PC寄存器,则实现程序跳转功能,这样也就实现了程序跳转。 所有单寄存器加载/存储指令可分为“字和无符号字节加载存储指令”和“半字和有符号字节加载存储指令。ARM存储器访问指令单寄存器存储2022-1-1935LDR和STR字和无符号字节加载/存储指令 LDR指令用于从内存中读取单一字或字节数据存入寄存器中,STR指令用于将寄存器中的单一字或字节数据保存到内

24、存。指令格式如下: LDRcondTRd, ;将指定地址上的字数据读入Rd STRcondTRd, ;将Rd中的字数据存入指定地址 LDRcondBTRd, ;将指定地址上的字节数据读入Rd STRcondBTRd, ;将Rd中的字节数据存入指定地址 其中,T为可选后缀。若指令有T,那么即使处理器是在特权模式下,存储系统也将访问看成是在用户模式下进行的。T在用户模式下无效,不能与前索引偏移一起使用T。 ARM存储器访问指令2022-1-1936LDR和STR指令应用示例:1.加载/存储字和无符号字节指令LDRR2,R5;将R5指向地址的字数据存入R2STRR1,R0,#0 x04 ;将R1的数

25、据存储到R0+0 x04地址LDRBR3,R2,#1 ;将R2指向地址的字节数据存入R3,R2R2+1STRBR6,R7 ;将R7指向地址的字节数据存入R62.加载/存储半字和有符号字节指令LDRSB R1,R0,R3;将R0+R3地址上的字节数据存入R1,;高24位用符号扩展LDRH R6,R2,#2;将R2指向地址的半字数据存入R6,高16位用0扩展;读出后,R2=R2+2STRH R1,R0,#2!;将R1的半字数据保存到R0+2地址,;只修改低2字节数据,R0=R0+2ARM存储器访问指令2022-1-1937助记符助记符说明说明操作操作条件码位置条件码位置LDMmode Rn!,re

26、glist 多寄存器加载多寄存器加载reglistRn.,Rn回写等回写等LDMcondmodeSTMmode Rn!,reglist 多寄存器存储多寄存器存储Rn.reglist,Rn回写等回写等STMcondmode 多寄存器加载/存储指令可以实现在一组寄存器和一块连续的内存单元之间传输数据。LDM为加载多个寄存器;STM为存储多个寄存器。允许一条指令传送16个寄存器的任何子集或所有寄存器。它们主要用于现场保护、数据复制、常数传递等。ARM存储器访问指令多寄存器存取2022-1-1938多寄存器加载/存储指令格式如下: LDMcond Rn!,reglist STMcond Rn!,reg

27、listcond:指令执行的条件;模式:控制地址的增长方式,一共有8种模式;!:表示在操作结束后,将最后的地址写回Rn中;reglist :表示寄存器列表,可以包含多个寄存器,它们使用“,”隔开,如R1,R2,R6-R9,寄存器由小到大排列;:加入该后缀后,进行数据传送且寄存器列表不包含PC时,加载/存储的寄存器是用户模式下的,而不是当前模式的寄存器。若在LDM指令且寄存器列表中包含有PC时使用,那么除了正常的多寄存器传送外,还将SPSR也拷贝到CPSR中,这可用于异常处理返回。注意:该后缀不允许在用户模式或系统模式下使用。ARM存储器访问指令多寄存器存取2022-1-1939助记符助记符说明

28、说明操作操作条件码位置条件码位置SWP Rd,Rm,Rn 寄存器和存储器字数据交换寄存器和存储器字数据交换R d R n , R n R m R d R n , R n R m (RnRd(RnRd或或Rm)Rm)SWPcondSWPcondSWPB Rd,Rm,Rn 寄存器和存储器字节数据交换寄存器和存储器字节数据交换R d R n , R n R m R d R n , R n R m (RnRd(RnRd或或Rm)Rm)SWPcondBSWPcondB SWP指令用于将一个内存单元(该单元地址放在寄存器Rn中)的内容读取到一个寄存器Rd中,同时将另一个寄存器Rm的内容写入到该内存单元中。

29、使用SWP可实现信号量操作。 指令格式如下:SWPcondB Rd,Rm,Rn 其中,B为可选后缀,若有B,则交换字节,否则交换32位字;Rd用于保存从存储器中读入的数据;Rm的数据用于存储到存储器中;Rn为要进行数据交换的存储器地址,Rn不能与Rd和Rm相同。 ARM存储器访问指令寄存器和存储器交换指令2022-1-1940ARM指令集o 1.指令格式o 2.条件码o 3.存储器访问指令o 4.数据处理指令o 5.乘法指令o 6.ARM分支指令o 7.协处理器指令o 8.杂项指令o 9.伪指令2022-1-1941指令集介绍指令集介绍o ARM指令集指令集ARM数据处理指令数据处理指令 数据

30、处理指令大致可分为3类: 数据传送指令;算术逻辑运算指令;比较指令。 数据处理指令只能对寄存器的内容进行操作,而不能对内存中的数据进行操作。所有ARM数据处理指令均可选择使用S后缀,并影响状态标志。 2022-1-1942助记符助记符说明说明操作操作条件码位置条件码位置MOV Rd,operand2MOV Rd,operand2数据传送数据传送RdRdoperand2 operand2 MOVcondSMOVcondSMVN Rd,operand2MVN Rd,operand2数据非传送数据非传送RdRd(operand2)(operand2)MVNcondSMVNcondSARM数据处理指令

31、数据传送2022-1-1943助记符助记符说明说明操作操作条件码位置条件码位置MOV Rd,operand2MOV Rd,operand2数据传送数据传送RdRdoperand2 operand2 MOVcondSMOVcondSMVN Rd,operand2MVN Rd,operand2数据非传送数据非传送RdRd(operand2)(operand2)MVNcondSMVNcondSARM数据处理指令数据传送MOVcondS Rd,operand2 MOVR1,#0 x10;R1=0 x10 MOVR0,R1;R0=R1 MOVSR3,R1,LSL #2;R3=R12,并影响标志位 MOV

32、PC,LR;PC=LR,子程序返回 2022-1-1944MVNcondS Rd,operand2 MVN指令举例如下: MVNR1,#0 xFF;R1=0 xFFFFFF00 MVNR1,R2;将R2取反,结果存到R1助记符助记符说明说明操作操作条件码位置条件码位置MOV Rd,operand2MOV Rd,operand2数据传送数据传送RdRdoperand2 operand2 MOVcondSMOVcondSMVN Rd,operand2MVN Rd,operand2数据非传送数据非传送RdRd(operand2)(operand2)MVNcondSMVNcondSARM数据处理指令数

33、据传送2022-1-1945助记符助记符说明说明操作操作条件码位置条件码位置ADD Rd, Rn, operand2ADD Rd, Rn, operand2加法运算指令加法运算指令RdRdRn+operand2Rn+operand2ADDcondSADDcondSSUB Rd, Rn, operand2SUB Rd, Rn, operand2减法运算指令减法运算指令RdRdRn-operand2Rn-operand2SUBcondSSUBcondSRSB Rd, Rn, operand2RSB Rd, Rn, operand2逆向减法指令逆向减法指令RdRdoperand2-Rnoperand

34、2-RnRSBcondSRSBcondSADC Rd, Rn, operand2ADC Rd, Rn, operand2带进位加法带进位加法RdRdRn+operand2+CarryRn+operand2+CarryADCcondSADCcondSSBC Rd, Rn, operand2SBC Rd, Rn, operand2带进位减法指令带进位减法指令RdRdRn-operand2-Rn-operand2-(NOT)Carry(NOT)CarrySBCcondSSBCcondSRSC Rd, Rn, operand2RSC Rd, Rn, operand2带进位逆向减法指带进位逆向减法指令令

35、RdRdoperand2-Rn-operand2-Rn-(NOT)Carry(NOT)CarryRSCcondSRSCcondSARM数据处理指令算术运算2022-1-1946助记符助记符说明说明操作操作条件码位置条件码位置ADD Rd, Rn, operand2加法运算指令加法运算指令RdRdRn+operand2Rn+operand2ADDcondSADDcondSSUB Rd, Rn, operand2SUB Rd, Rn, operand2减法运算指令减法运算指令RdRdRn-operand2Rn-operand2SUBcondSSUBcondSRSB Rd, Rn, operand2

36、RSB Rd, Rn, operand2逆向减法指令逆向减法指令RdRdoperand2-Rnoperand2-RnRSBcondSRSBcondSADC Rd, Rn, operand2ADC Rd, Rn, operand2带进位加法带进位加法RdRdRn+operand2+CarryRn+operand2+CarryADCcondSADCcondSSBC Rd, Rn, operand2SBC Rd, Rn, operand2带进位减法指令带进位减法指令RdRdRn-operand2-Rn-operand2-(NOT)Carry(NOT)CarrySBCcondSSBCcondSRSC

37、Rd, Rn, operand2RSC Rd, Rn, operand2带进位逆向减法指带进位逆向减法指令令RdRdoperand2-Rn-operand2-Rn-(NOT)Carry(NOT)CarryRSCcondSRSCcondS 加法运算指令ADD指令将operand2的值与Rn的值相加,结果保存到Rd寄存器。指令格式如下: ADDcondS Rd,Rn,operand2 应用示例: ADDS R1,R1,#1;R1=R1+1,并影响标志位 ADD R1,R1,R2;R1=R1+R2 ARM数据处理指令算术运算2022-1-1947助记符助记符说明说明操作操作条件码位置条件码位置ADD

38、 Rd, Rn, operand2ADD Rd, Rn, operand2加法运算指令加法运算指令RdRdRn+operand2Rn+operand2ADDcondSADDcondSSUB Rd, Rn, operand2减法运算指令减法运算指令RdRdRn-operand2Rn-operand2SUBcondSSUBcondSRSB Rd, Rn, operand2RSB Rd, Rn, operand2逆向减法指令逆向减法指令RdRdoperand2-Rnoperand2-RnRSBcondSRSBcondSADC Rd, Rn, operand2ADC Rd, Rn, operand2带

39、进位加法带进位加法RdRdRn+operand2+CarryRn+operand2+CarryADCcondSADCcondSSBC Rd, Rn, operand2SBC Rd, Rn, operand2带进位减法指令带进位减法指令RdRdRn-operand2-Rn-operand2-(NOT)Carry(NOT)CarrySBCcondSSBCcondSRSC Rd, Rn, operand2RSC Rd, Rn, operand2带进位逆向减法指带进位逆向减法指令令RdRdoperand2-Rn-operand2-Rn-(NOT)Carry(NOT)CarryRSCcondSRSCco

40、ndS 减法运算指令SUB指令用寄存器Rn减去operand2,结果保存到Rd中。指令格式如下: SUBcondS Rd,Rn,operand2 应用示例: SUBSR0,R0,#1;R0=R0-1 ,并影响标志位 SUBSR2,R1,R2;R2=R1-R2 ,并影响标志位 ARM数据处理指令算术运算2022-1-1948助记符助记符说明说明操作操作条件码位置条件码位置ADD Rd, Rn, operand2ADD Rd, Rn, operand2加法运算指令加法运算指令RdRdRn+operand2Rn+operand2ADDcondSADDcondSSUB Rd, Rn, operand2

41、SUB Rd, Rn, operand2减法运算指令减法运算指令RdRdRn-operand2Rn-operand2SUBcondSSUBcondSRSB Rd, Rn, operand2逆向减法指令逆向减法指令RdRdoperand2-Rnoperand2-RnRSBcondSRSBcondSADC Rd, Rn, operand2ADC Rd, Rn, operand2带进位加法带进位加法RdRdRn+operand2+CarryRn+operand2+CarryADCcondSADCcondSSBC Rd, Rn, operand2SBC Rd, Rn, operand2带进位减法指令带

42、进位减法指令RdRdRn-operand2-Rn-operand2-(NOT)Carry(NOT)CarrySBCcondSSBCcondSRSC Rd, Rn, operand2RSC Rd, Rn, operand2带进位逆向减法指带进位逆向减法指令令RdRdoperand2-Rn-operand2-Rn-(NOT)Carry(NOT)CarryRSCcondSRSCcondS 逆向减法运算指令RSB指令将operand2的值减去Rn,结果保存到Rd中。指令格式如下: RSBcondS Rd,Rn,operand2 应用示例: RSB R3,R1,#0 xFF00;R3=0 xFF00-R

43、1 RSBS R1,R2,R2,LSL #2;R1=(R22)-R2=R23 ARM数据处理指令算术运算2022-1-1949助记符助记符说明说明操作操作条件码位置条件码位置ADD Rd, Rn, operand2ADD Rd, Rn, operand2加法运算指令加法运算指令RdRdRn+operand2Rn+operand2ADDcondSADDcondSSUB Rd, Rn, operand2SUB Rd, Rn, operand2减法运算指令减法运算指令RdRdRn-operand2Rn-operand2SUBcondSSUBcondSRSB Rd, Rn, operand2RSB R

44、d, Rn, operand2逆向减法指令逆向减法指令RdRdoperand2-Rnoperand2-RnRSBcondSRSBcondSADC Rd, Rn, operand2带进位加法带进位加法RdRdRn+operand2+CarryRn+operand2+CarryADCcondSADCcondSSBC Rd, Rn, operand2SBC Rd, Rn, operand2带进位减法指令带进位减法指令RdRdRn-operand2-Rn-operand2-(NOT)Carry(NOT)CarrySBCcondSSBCcondSRSC Rd, Rn, operand2RSC Rd, R

45、n, operand2带进位逆向减法指带进位逆向减法指令令RdRdoperand2-Rn-operand2-Rn-(NOT)Carry(NOT)CarryRSCcondSRSCcondS 带进位加法指令ADC将operand2的值与Rn的值相加,再加上CPSR中的C条件标志位,结果保存到Rd寄存器。指令格式如下: ADCcondS Rd,Rn,operand2 应用示例(使用ADC实现64位加法,结果存于R1、R0中): ADDS R0,R0,R2 ;R0等于低32位相加,并影响标志位 ADC R1,R1,R3;R1等于高32位相加,并加上低位进位ARM数据处理指令算术运算2022-1-195

46、0助记符助记符说明说明操作操作条件码位置条件码位置ADD Rd, Rn, operand2ADD Rd, Rn, operand2加法运算指令加法运算指令RdRdRn+operand2Rn+operand2ADDcondSADDcondSSUB Rd, Rn, operand2SUB Rd, Rn, operand2减法运算指令减法运算指令RdRdRn-operand2Rn-operand2SUBcondSSUBcondSRSB Rd, Rn, operand2RSB Rd, Rn, operand2逆向减法指令逆向减法指令RdRdoperand2-Rnoperand2-RnRSBcondSR

47、SBcondSADC Rd, Rn, operand2ADC Rd, Rn, operand2带进位加法带进位加法RdRdRn+operand2+CarryRn+operand2+CarryADCcondSADCcondSSBC Rd, Rn, operand2带进位减法指令带进位减法指令RdRdRn-operand2-Rn-operand2-(NOT)Carry(NOT)CarrySBCcondSSBCcondSRSC Rd, Rn, operand2RSC Rd, Rn, operand2带进位逆向减法指带进位逆向减法指令令RdRdoperand2-Rn-operand2-Rn-(NOT)

48、Carry(NOT)CarryRSCcondSRSCcondS 带进位减法指令SBC用寄存器Rn减去operand2,再减去CPSR中的C条件标志位的非(即若C标志清零,则结果减去1),结果保存到Rd中。指令格式如下: SBCcondS Rd,Rn,operand2 应用示例(使用SBC实现64位减法,结果存于R1、R0中): SUBS R0,R0,R2 ; 低32位相减,并影响标志位 SBC R1,R1,R3;高32位相减,并减去低位借位ARM数据处理指令算术运算2022-1-1951助记符助记符说明说明操作操作条件码位置条件码位置ADD Rd, Rn, operand2ADD Rd, Rn

49、, operand2加法运算指令加法运算指令RdRdRn+operand2Rn+operand2ADDcondSADDcondSSUB Rd, Rn, operand2SUB Rd, Rn, operand2减法运算指令减法运算指令RdRdRn-operand2Rn-operand2SUBcondSSUBcondSRSB Rd, Rn, operand2RSB Rd, Rn, operand2逆向减法指令逆向减法指令RdRdoperand2-Rnoperand2-RnRSBcondSRSBcondSADC Rd, Rn, operand2ADC Rd, Rn, operand2带进位加法带进位

50、加法RdRdRn+operand2+CarryRn+operand2+CarryADCcondSADCcondSSBC Rd, Rn, operand2SBC Rd, Rn, operand2带进位减法指令带进位减法指令RdRdRn-operand2-Rn-operand2-(NOT)Carry(NOT)CarrySBCcondSSBCcondSRSC Rd, Rn, operand2带进位逆向减法指带进位逆向减法指令令RdRdoperand2-Rn-operand2-Rn-(NOT)Carry(NOT)CarryRSCcondSRSCcondS 带进位逆向减法指令RSC指令用寄存器opera

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 大学
版权提示 | 免责声明

1,本文(嵌入式系统课件:ARM 第三讲-final.ppt)为本站会员(罗嗣辉)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|