微处理课件:chap8 ARM汇编指令.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《微处理课件:chap8 ARM汇编指令.ppt》由用户(罗嗣辉)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微处理课件:chap8 ARM汇编指令 处理 课件 chap8 ARM 汇编 指令
- 资源描述:
-
1、微处理器系统结构与嵌入式系统设计微处理器系统结构与嵌入式系统设计1 1第八章第八章 ARMARM汇编指令汇编指令4学时学时微处理器系统结构与嵌入式系统设计微处理器系统结构与嵌入式系统设计第八章第八章 ARMARM汇编指令汇编指令8.1 ARM指令格式指令格式(掌握)(掌握)ARM指令的一般编码格式指令的一般编码格式ARM指令的条件域指令的条件域指令的第二源操作数指令的第二源操作数8.2 ARM寻址方式寻址方式(掌握)(掌握)寄存器直接寻址寄存器直接寻址立即寻址立即寻址寄存器移位寻址寄存器移位寻址寄存器间接寻址寄存器间接寻址基址变址寻址基址变址寻址多寄存器直接寻址多寄存器直接寻址相对寻址相对寻址
2、堆栈寻址堆栈寻址2 2微处理器系统结构与嵌入式系统设计微处理器系统结构与嵌入式系统设计第八章第八章 ARMARM汇编指令汇编指令8.3 ARM指令集指令集(掌握)(掌握)数据处理指令数据处理指令转移指令转移指令程序状态寄存器访问指令加载程序状态寄存器访问指令加载/存储指令存储指令异常产生指令异常产生指令伪指令伪指令3 3微处理器系统结构与嵌入式系统设计微处理器系统结构与嵌入式系统设计4 48.1 ARM8.1 ARM指令格式指令格式nARMARM指令长度指令长度u指令集可以是以下任一种指令集可以是以下任一种32 bits 32 bits 长长 (ARM(ARM状态状态) )16 bits 16
3、 bits 长长 (Thumb (Thumb 状态状态) )uARMARM一般支持一般支持3 3种数据类型种数据类型字节字节 (8-bit)(8-bit)半字半字 ( (16-bit)16-bit)字字 (32-bit)(32-bit)u字必须被排成字必须被排成4 4个字节边界对齐个字节边界对齐, ,半字必须被排列成半字必须被排列成2 2个字节边界对齐个字节边界对齐nLoad-store Load-store 结构结构* *uload/store load/store 从存储器中读某个值从存储器中读某个值, ,操作完后再将其放回存储器中操作完后再将其放回存储器中u只对存放在寄存器的数据进行处理
4、只对存放在寄存器的数据进行处理u对于存储器中的数据,只能使用对于存储器中的数据,只能使用load/storeload/store指令进行存取指令进行存取微处理器系统结构与嵌入式系统设计微处理器系统结构与嵌入式系统设计5 5 ARM是三地址指令格式,指令的基本格式如下:ARMARM指令基本指令基本指令格式指令格式 S , 其中号内的项是必须的,号内的项是可选的。各项的说明如下:opcode:指令助记符;cond:执行条件;S:是否影响CPSR寄存器的值;Rd:目标寄存器; Rn:第1个操作数的寄存器;operand2:第2个操作数;指令语法指令语法目标寄存器(目标寄存器(Rd) 源寄存器源寄存器
5、1(Rn)源寄存器源寄存器2(Rm)ADD r3,r1,r2r3r1r2例:微处理器系统结构与嵌入式系统设计微处理器系统结构与嵌入式系统设计6 6指令集介绍指令集介绍n ARM指令集指令格式微处理器系统结构与嵌入式系统设计微处理器系统结构与嵌入式系统设计7 7操作码操作码条件助记符条件助记符标志标志含义含义0000EQZ=1相等相等0001NEZ=0不相等不相等0010CS/HSC=1无符号数大于或等于无符号数大于或等于0011CC/LOC=0无符号数小于无符号数小于0100MIN=1负数负数0101PLN=0正数或零正数或零0110VSV=1溢出溢出0111VCV=0没有溢出没有溢出1000
6、HIC=1,Z=0无符号数大于无符号数大于1001LSC=0,Z=1无符号数小于或等于无符号数小于或等于1010GEN=V有符号数大于或等于有符号数大于或等于 1011LTN!=V有符号数小于有符号数小于 1100GTZ=0,N=V有符号数大于有符号数大于 1101LEZ=1,N!=V有符号数小于或等于有符号数小于或等于 1110AL任何任何无条件执行无条件执行 (指令默认条件指令默认条件) 1111NV任何任何从不执行从不执行(不要使用不要使用) 指令条件码表指令条件码表所有的ARM指令都可以条件执行,而Thumb指令只有B(跳转)指令具有条件执行功能如果指令不标明条件代码,将默认为无条件(
7、AL)执行微处理器系统结构与嵌入式系统设计微处理器系统结构与嵌入式系统设计8 8指令条件码指令条件码C C代码:代码:If(a b)a+;Elseb+;对应的汇编代码:对应的汇编代码:CMPR0,R1 ;R0(a)与)与R1(b)比较)比较ADDHI R0,R0,#1 ;若若R0R1,则,则R0=R0+1ADDLS R1,R1,#1 ;若若R0R1,则,则R1=R1+1示例:微处理器系统结构与嵌入式系统设计微处理器系统结构与嵌入式系统设计9 9 ARM指令的基本格式如下:ARMARM指令的指令的第第2 2个操作数个操作数 S , 灵活的使用第2个操作数“operand2”能够提高代码效率。它有
8、如下的形式:#immed_8r常数表达式;Rm寄存器方式;Rm,shift寄存器移位方式;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 0 0 0 0 00 x801 0 0 0 0 0 0 00 x040 0 0 0 0 1 0 08位常数循环右移10位该常数是一个8位的常数通过循环右移偶数位得到微处理器系统结构与嵌入式系统设计微处理器系统结构与嵌入式系统设计1010ARMARM指令的指令的第第2 2个操作数个操作数R
9、m,shift寄存器移位方式 将寄存器的移位结果作为操作数(移位操作不消耗额外的时间),但Rm值保持不变ALU桶形移位器Rd结果N预处理未预处理RmRn微处理器系统结构与嵌入式系统设计微处理器系统结构与嵌入式系统设计11 11n 桶形移位器操作桶形移位器操作助记符助记符 说明说明移位操作移位操作 结果结果Y值值LSL逻辑左移逻辑左移 x LSL yxy#1-32 or RsASR算术右移算术右移 x ASR y(signed)xY#1-32 or RsROR算术左移算术左移 x ROR y (unsigned)xy|(x32-y)#1-31 or RsRRX扩展的循扩展的循环右移环右移x RR
10、X y(c flag1)noneARMARM指令的指令的第第2 2个操作数个操作数微处理器系统结构与嵌入式系统设计微处理器系统结构与嵌入式系统设计1212ARMARM指令的指令的第第2 2个操作数个操作数LSL移位操作:0LSR移位操作:0ASR移位操作:ROR移位操作:RRX移位操作:C例如:ADDR1,R1,R1,LSL #3;R1=R1+R1R3微处理器系统结构与嵌入式系统设计微处理器系统结构与嵌入式系统设计8.2 ARM8.2 ARM处理器寻址方式处理器寻址方式 寻址方式是根据指令中给出的地址码寻址方式是根据指令中给出的地址码字段来实现寻找真实操作数地址的方式。字段来实现寻找真实操作数
11、地址的方式。 ARM ARM处理器具有几种基本寻址方式:处理器具有几种基本寻址方式:1. 1.寄存器寻址寄存器寻址 2.2.立即寻址立即寻址 3.3.寄存器间接寻址寄存器间接寻址移位寻址移位寻址、间接寻址间接寻址、基址变址寻址基址变址寻址、多寄存器寻址(块寻址)多寄存器寻址(块寻址) 4.4.堆栈寻址堆栈寻址 5.5.相对寻址相对寻址1313微处理器系统结构与嵌入式系统设计微处理器系统结构与嵌入式系统设计0 xAA0 x55R2R11. 1. 操作数存放在寄存器中操作数存放在寄存器中; ;2.2.指令地址码字段给出寄存器编号(名)指令地址码字段给出寄存器编号(名)3.3.指令执行时直接取出寄存
12、器值来操作指令执行时直接取出寄存器值来操作; ;MOV MOV R1, R2R1, R2; ; R1 = R2 R1 = R2 SUB SUB R0, R1, R2 ; R0 = R1-R2 R0, R1, R2 ; R0 = R1-R2 寄存器寻址寄存器寻址0 xAA1414微处理器系统结构与嵌入式系统设计微处理器系统结构与嵌入式系统设计1. 1. 操作数包含在指令当中操作数包含在指令当中; ;2. 2. 指令地址码部分就是数据本身;指令地址码部分就是数据本身;3.3. 取指时就取出了可立即使用的操作数;取指时就取出了可立即使用的操作数;MOVMOVR0,#0 xFF00 ; R0 = #0
13、 xFF00 R0,#0 xFF00 ; R0 = #0 xFF00 SUBSSUBSR0,R0,#1 ; R0 =R0-1R0,R0,#1 ; R0 =R0-10 x55R0MOV R0,#0 xFF00立即寻址立即寻址0 xFF00从代码中获得数据从代码中获得数据10进制数:进制数:#21,#0d572进制数:进制数: #0b0110016进制数:进制数:#0 x3a001影响标志位影响标志位寄存器寻址寄存器寻址1515微处理器系统结构与嵌入式系统设计微处理器系统结构与嵌入式系统设计1. 1. 操作数存放在寄存器中操作数存放在寄存器中; ;2.2.指令地址码字段给出寄存器编号(名)及移指令
14、地址码字段给出寄存器编号(名)及移位表达式位表达式; ;3.3.指令执行时取出寄存器值并移位,再将结果指令执行时取出寄存器值并移位,再将结果作为源操作数作为源操作数; ;MOVMOV R0, R2, LSL #3 R0, R2, LSL #3 ; R0=R2; R0=R28 8 ANDS R1, R1, R2, LSL R3 ANDS R1, R1, R2, LSL R3 ; R1 = R1 and (R2R3) ; R1 = R1 and (R2R3)0 x55R0R20 x01寄存器移位寻址寄存器移位寻址0 x080 x08逻辑左移逻辑左移3位位寄存器寻址寄存器寻址影响标志位影响标志位LS
15、L、LSRASRROR、RRX1616微处理器系统结构与嵌入式系统设计微处理器系统结构与嵌入式系统设计寄存器间接寻址寄存器间接寻址1. 1. 操作数存放在内存单元中操作数存放在内存单元中; ;2.2.指令地址码字段给出指令地址码字段给出 寄存器编号(名)寄存器编号(名); ;3.3.指令执行时根据寄存器值(指针)找到相应指令执行时根据寄存器值(指针)找到相应的存储单元的存储单元; ;LDRLDRR1,R2R1,R2; R1= R2; R1= R2SWPSWPR1,R1,R2R1,R1,R2; R1; R1 R2 R20 x55R0R20 x400000000 xAA0 x400000000 x
16、AA内存单元内存单元1717微处理器系统结构与嵌入式系统设计微处理器系统结构与嵌入式系统设计基址变址寻址基址变址寻址1. 1. 操作数存放在内存单元中操作数存放在内存单元中; ;2.2.指令地址码字段给出指令地址码字段给出 寄存器编号(名)寄存器编号(名) 和偏移量和偏移量; ;3.3.指令执行时将基址寄存器的内容与偏移量(指令执行时将基址寄存器的内容与偏移量(4K4K)相)相加加/ /减,形成操作数的有效地址。减,形成操作数的有效地址。4.4. 常用于查表、数组操作、功能部件寄存器访问等。常用于查表、数组操作、功能部件寄存器访问等。LDRLDRR2,R3,#0 x0CR2,R3,#0 x0C
17、 ;R2=R3+0 x0C ;R2=R3+0 x0CSTRSTR R1,R0,#-4! R1,R0,#-4! ; ; 先先R0-4=R1, R0=R0-4R0-4=R1, R0=R0-4LDRLDR R0,R1 ,#4 R0,R1 ,#4 ;R0=R1 ;R0=R1,R1R1R1R14 4LDR R0,R1,R2 LDR R0,R1,R2 ;R0=R1+R2 ;R0=R1+R2前索引前索引后索引后索引0 x55R2R3 0 x400000000 xAA0 x4000000C0 xAA内存单元内存单元1818微处理器系统结构与嵌入式系统设计微处理器系统结构与嵌入式系统设计多寄存器寻址多寄存器寻址
18、/ /块复制寻址块复制寻址1. 1. 操作数存放在操作数存放在内存单元内存单元中中; ;2.2.指令地址码字段给出指令地址码字段给出 寄存器编号(名)列表寄存器编号(名)列表 ; ;3.3.编号高编号高的寄存器总是对应内存中的的寄存器总是对应内存中的高地址单元高地址单元;4.4. 可完成存储块和可完成存储块和1616个寄存器或其子集之间的数据传送。个寄存器或其子集之间的数据传送。 LDMIALDMIAR1!,R2-R4,R6 R1!,R2-R4,R6 ; R2= R1 , R3= R1+4; R2= R1 , R3= R1+4; R4= R1+8 , R6= R1+0 xC, R1=R1+0
19、x10; R4= R1+8 , R6= R1+0 xC, R1=R1+0 x10 STMDB STMDBR1,R2-R4,R6 R1,R2-R4,R6 ; R1-4= R6 , R1-8=R4; R1-4= R6 , R1-8=R4; R1-0 xC =R3, R1-0 x10=R2; R1-0 xC =R3, R1-0 x10=R20 x40000000R1R20 x?0 x010 x400000000 x?R3R40 x?R60 x?0 x020 x030 x040 x400000040 x400000080 x4000000C0 x010 x020 x030 x040 x40000010
20、内存单元内存单元Increase AfterDecrease Before!在块操作!在块操作指令中表示指令中表示地址指针要地址指针要回写回写1919微处理器系统结构与嵌入式系统设计微处理器系统结构与嵌入式系统设计堆栈寻址堆栈寻址1. 1. 操作数存放在操作数存放在内存栈顶单元内存栈顶单元中中; ;2.2.指令地址码字段固定使用指令地址码字段固定使用栈顶指针栈顶指针SPSP; ;3.3.指令执行时同多寄存器指令执行时同多寄存器/ /块寻址,可完成多个数据的入块寻址,可完成多个数据的入栈和出栈;栈和出栈; LDMEALDMEASP!,R2-R4,R6 SP!,R2-R4,R6 ; R2= SP-
21、10 , R3= SP-C; R2= SP-10 , R3= SP-C ; R4= SP-8 , R6= SP-4,SP=SP-0 x10 ; R4= SP-8 , R6= SP-4,SP=SP-0 x10 STMFD STMFDSP!,R2-R4,R6 SP!,R2-R4,R6 ; SP-4= R6 , SP-8=R4; SP-4= R6 , SP-8=R4 ; SP-C =R3, SP-0 x10=R2,; SP-C =R3, SP-0 x10=R2, SP=SP-0 x10SP b)a+; Elseb+;对应的汇编代码:对应的汇编代码:CMPR0,R1 ;比较比较R0(a)与)与R1(b
22、)ADDHIR0,R0,#1 ;若若R0R1,则,则R0=R0+1ADDLSR1,R1,#1 ;若若R01,则,则R1=R1+12525微处理器系统结构与嵌入式系统设计微处理器系统结构与嵌入式系统设计2626指令集介绍指令集介绍n ARM指令集指令格式微处理器系统结构与嵌入式系统设计微处理器系统结构与嵌入式系统设计数据处理指令的编码格式数据处理指令的编码格式指令条件码指令条件码I=1I=1:立即数;:立即数; I=0I=0:寄存器移位:寄存器移位第二操作数第二操作数RdRd目标寄存器目标寄存器RnRn第一操作数寄存器第一操作数寄存器S=1S=1:根据结果设置:根据结果设置CPRSCPRS中的条
23、件码中的条件码S=0S=0:不设置:不设置CPRSCPRS中的条件码中的条件码带进位加法带进位加法ADCADC01010101带进位减法指令带进位减法指令SBCSBC01100110带进位逆向减法指令带进位逆向减法指令RSCRSC01110111位测试指令位测试指令TSTTST10001000相等测试指令相等测试指令TEQTEQ10011001比较指令比较指令CMPCMP10101010负数比较指令负数比较指令CMNCMN10111011逻辑或操作指令逻辑或操作指令ORRORR11001100数据传送数据传送MOVMOV11011101位清除指令位清除指令BICBIC11101110数据非传送
24、数据非传送MVNMVN11111111加法运算指令加法运算指令ADDADD01000100逆向减法指令逆向减法指令RSBRSB00110011减法运算指令减法运算指令SUBSUB00100010逻辑异或操作指令逻辑异或操作指令EOREOR00010001逻辑与操作指令逻辑与操作指令ANDAND00000000说明说明指令助记符指令助记符操作码操作码2727微处理器系统结构与嵌入式系统设计微处理器系统结构与嵌入式系统设计乘法指令的编码格式乘法指令的编码格式RmRm被乘数寄存器被乘数寄存器Rn: MLARn: MLA指令相加的寄存器指令相加的寄存器RdLo: 64RdLo: 64位乘法指令目标寄位
25、乘法指令目标寄存器的低存器的低3232位位Rd: Rd: 目标寄存器目标寄存器RdHi: 64RdHi: 64位乘法指令目标寄存器的高位乘法指令目标寄存器的高3232位位RsRs为乘数寄存器为乘数寄存器64位有符号乘加指令位有符号乘加指令SMLAL11164位有符号乘法指令位有符号乘法指令SMULL11064位无符号乘加指令位无符号乘加指令UMLAL10164位无符号乘法指令位无符号乘法指令UMULL10032位乘加指令位乘加指令MLA00132位乘法指令位乘法指令MUL000说明说明指令助记符指令助记符操作码操作码2828微处理器系统结构与嵌入式系统设计微处理器系统结构与嵌入式系统设计单数据
展开阅读全文