版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1TM第第3章章ARM指令集寻址方式指令集寻址方式ARM指令指令寻址方式寻址方式可分为四大类:可分为四大类:数据处理指令寻址数据处理指令寻址Load/Store指令的寻址指令的寻址批量批量Load/Store指令的寻址指令的寻址协处理指令寻址。协处理指令寻址。2TM2本章内容本章内容31 ARM指令的编码格式指令的编码格式32 数据处理指令寻址方式数据处理指令寻址方式33 Load/Store指令寻址指令寻址34 批量批量Load/Store指令寻址方式指令寻址方式35 协处理器指令寻址方式协处理器指令寻址方式3TM3一般编码格式一般编码格式n每条每条ARM指令占有指令占有4个字节,其指令长度
2、为个字节,其指令长度为32位位cond(bit31:28)指令执行的条件码;type(bit27:26)指令类型码 cond(bit31:28)指令执行的条件码;type(bit27:26)指令类型码 cond(bit31:28)指令执行的条件码;type(bit27:26)指令类型码 cond(bit31:28)指令执行的条件码;type(bit27:26)指令类型码 cond(bit31:28)指令执行的条件码;type(bit27:26)指令类型码 cond(bit31:28)指令执行的条件码;type(bit27:26)指令类型码 cond(bit31:28) 指令执行的条件码指令执行
3、的条件码type(bit27:26) 指令类型码指令类型码(表表3-1) I ( bit25)第二操作数类型标志码第二操作数类型标志码(针对数据处针对数据处 理指令:立即数、寄存器或寄存器移位理指令:立即数、寄存器或寄存器移位)opcode(bit24:21)指令操作码)指令操作码S (bit20)决定指令的操作结果是否影响决定指令的操作结果是否影响CPSR Rn (bit19:16)包含第一个操作数的寄存器编码;包含第一个操作数的寄存器编码;Rd (bit15:12)目标寄存器编码;目标寄存器编码;operand2(bit11:0)指令第二个操作数。)指令第二个操作数。4TM4nARM汇编指
4、令语法格式:汇编指令语法格式:S ,例:例:ADDS R0,R1,R25TM5指令条件码指令条件码n0000 EQ 相等相等 Z=1n0001 NE 不相等不相等 Z=0n0010 CS/HS 无符号大于等于无符号大于等于 C=1n0011 CC/LO 无符号小于无符号小于 C=0n0100 MI 负数负数 N=1n0101 PL 非负数非负数 N=0n0110 VS 上溢出上溢出 V=1n0111 VC 没有上溢出没有上溢出 V=0n1000 HI 无符号数大于无符号数大于 C=1且且Z=0n1001 LS 无符号小于等于无符号小于等于 C=0或或Z=1n1010 GE 有符号数大于等于有符
5、号数大于等于 N=1且且V=1 或或 N=0且且V=0 n1011 LT 有符号数小于有符号数小于 N=1且且V=0 或或 N=0且且V=1n1100 GT 有符号数大于有符号数大于 Z=0且且N=Vn1101 LE 有符号数小于有符号数小于/等于等于 Z=1或或N!=Vn1110 AL 无条件执行无条件执行 6TM63.2 数据处理指令寻址方式数据处理指令寻址方式n数据处理指令第数据处理指令第2操作数的构成方式操作数的构成方式立即数立即数寄存器寄存器寄存器移位寄存器移位7TM7n立即数方式立即数方式 每个立即数由一个每个立即数由一个8位的常数进行位的常数进行32位循环右位循环右移偶数位得到,
6、其中循环右移的位数由一个移偶数位得到,其中循环右移的位数由一个4位二位二进制数的两倍表示。即:进制数的两倍表示。即:=immed_8进行进行32位循环右移(位循环右移(2*rotate_4)位)位例:例: 0 xff, 0 x104为合法的立即数为合法的立即数 0 x101, 0 x102为不合法的立即数为不合法的立即数3.2 数据处理指令寻址方式数据处理指令寻址方式8TM8n寄存器方式寄存器方式操作数即为寄存器中的数值操作数即为寄存器中的数值如如:MOV R3,R2 ADD R0,R1,R23.2 数据处理指令寻址方式数据处理指令寻址方式9TM9n寄存器移位方式寄存器移位方式操作数为寄存器的
7、数值做相应的移位而操作数为寄存器的数值做相应的移位而得到。在得到。在ARM指令中移位操作包括指令中移位操作包括逻辑左移逻辑左移、逻辑右移、算术左移、算术右移、循环右、逻辑右移、算术左移、算术右移、循环右移和带扩展的循环右移。移和带扩展的循环右移。 3.2 数据处理指令寻址方式数据处理指令寻址方式10TM10乘法器乘法器ARM7TDMI 内核内核指令指令解码解码地址地址自增器自增器nRESETnMREQSEQABORTnIRQnFIQnRWMAS1:0LOCKnCPICPACPBnWAITMCLKnOPCBIGENDISYNCnTRANSnM4:0D31:0桶形桶形移位器移位器32 位位 ALU
8、DBE写数据写数据 寄存器寄存器读数据读数据 寄存器寄存器地址寄存器地址寄存器寄存器寄存器A31:0ABE及及控制控制 逻辑逻辑PC Update解码站解码站指令指令 解码解码IncrementerPCABusBBusALUBus11TM113.2 数据处理指令寻址方式数据处理指令寻址方式12TM122. 具体寻址类型具体寻址类型 (5种类型种类型)1) 第二操作数为立即数第二操作数为立即数汇编语法格式:汇编语法格式:#例如:例如:MOV R0, #0 xFC03.2 数据处理指令寻址方式数据处理指令寻址方式13TM132)第二操作数为寄存器)第二操作数为寄存器汇编语法格式:汇编语法格式:例:
9、例:ADD R0,R1,R23.2 数据处理指令寻址方式数据处理指令寻址方式14TM143)第二操作数为寄存器移位方式,且移位的位数为一个)第二操作数为寄存器移位方式,且移位的位数为一个5位的立即数位的立即数汇编语法格式:汇编语法格式:, #可用的移位类型:可用的移位类型:LSL、LSR、ASR、ROR例如:例如:MOV R0,R0,LSL #2可用的最大可用的最大值是多少?值是多少?3.2 数据处理指令寻址方式数据处理指令寻址方式15TM154)第二操作数为寄存器移位方式,且移位数值放在)第二操作数为寄存器移位方式,且移位数值放在寄存器中寄存器中n汇编语法格式:汇编语法格式:, 可用的移位类
10、型:可用的移位类型:LSL、LSR、ASR、ROR例如:例如:ADD R0,R1,R2,ASR R33.2 数据处理指令寻址方式数据处理指令寻址方式16TM165)第二操作数为寄存器进行)第二操作数为寄存器进行RRX移位得到移位得到n汇编语法格式:汇编语法格式:,RRXnRm中的数值进行带扩展的循环右移一位中的数值进行带扩展的循环右移一位3.2 数据处理指令寻址方式数据处理指令寻址方式17TM17寄存器移位构造第二操作数有什么用呢?寄存器移位构造第二操作数有什么用呢?1.在逻辑运算中实现寄存器移位操作。在逻辑运算中实现寄存器移位操作。MOV R1,R1 LSL #42.实现特殊的算术运算:实现
11、特殊的算术运算:ADD R1,R2,R2 LSL #13.2 数据处理指令寻址方式数据处理指令寻址方式18TM183.3 Load/Store指令寻址指令寻址nLoad/Store指令是对内存进行存储指令是对内存进行存储/加载数据加载数据操作的指令,根据访问的数据格式的不同,操作的指令,根据访问的数据格式的不同,将这类指令的寻址分为将这类指令的寻址分为字、无符号字节的字、无符号字节的Load/Store指令寻址指令寻址,半字、有符号字节半字、有符号字节Load/Store指令寻址两大类指令寻址两大类。 19TM19地址计算方法地址计算方法 1寄存器间接寻址寄存器间接寻址 寄存器间接寻址就是以寄
12、存器中的值作为操作寄存器间接寻址就是以寄存器中的值作为操作数的地址,而操作数本身存放在存储器中。例如以数的地址,而操作数本身存放在存储器中。例如以下指令:下指令: LDR R0,R1 ;R0 R1 STR R0,R1 ;R1 R0 20TM202.基址加变址寻址基址加变址寻址 将寄存器的内容与指令中给出的将寄存器的内容与指令中给出的地址偏移量地址偏移量相加相加,从而得到一个操作数的有效地址。,从而得到一个操作数的有效地址。n前变址法前变址法:基地址寄存器中的值和地址偏移量先作加:基地址寄存器中的值和地址偏移量先作加减运算,生成的操作数作为内存访问的地址。减运算,生成的操作数作为内存访问的地址。
13、n后变址法后变址法:将基地址寄存器中的值直接作为内存访问:将基地址寄存器中的值直接作为内存访问的地址进行操作,内存访问完毕后基地址寄存器中的的地址进行操作,内存访问完毕后基地址寄存器中的值和地址偏移量作加减运算,并更新基地址寄存器。值和地址偏移量作加减运算,并更新基地址寄存器。21TM212.基址加变址寻址基址加变址寻址 例如:例如:LDR R0,R1,#4LDR R0,R1,#4!LDR R0,R1,#4LDR R0,R1,R222TM22字、无符号字节寻址字、无符号字节寻址汇编指令语法格式为:汇编指令语法格式为:nLDR BT,nSTR BT,23TM2324TM241Addressing
14、_mode中的偏移量为立即数中的偏移量为立即数n前变址不回写形式:前变址不回写形式:,#+/-n前变址回写形式:前变址回写形式:,#+/-!n后变址回写形式:后变址回写形式:,#+/-25TM25n偏移量为立即数的指令编码类型偏移量为立即数的指令编码类型n例例3-1LDR R0,R1,#4;LDR R0,R1,#-4;LDR R0,R1,#4!;LDR R0,R1,#4;26TM262Addressing_mode中的偏移量为寄存器的值中的偏移量为寄存器的值n前变址不回写形式前变址不回写形式:,+/-n前变址回写形式:前变址回写形式:,+/-!n后变址回写形式:后变址回写形式:,+/-27TM
15、27n偏移量为寄存器的指令编码类型对应关系偏移量为寄存器的指令编码类型对应关系例例3-2LDR R0,R1,R2LDR R0,R1,-R2LDR R0,R1,R2!LDR R0,R1 ,R228TM283Addressing_mode中偏移量通过寄存器移位得到中偏移量通过寄存器移位得到n前变址不回写形式:前变址不回写形式:,+/-,#shift_amount n前变址回写形式:前变址回写形式:,+/-,#shift_amount!n后变址回写形式:后变址回写形式:,+/-,#shift_amount29TM29n偏移量为移位寄存器的指令编码类型对应关系偏移量为移位寄存器的指令编码类型对应关系例
16、例3-3LDR R0,R1,R2,LSL #2LDR R0,R1,R2,LSL #2!LDR R0,R1,R2,LSL #230TM30字、无符号字节寻址字、无符号字节寻址偏移量的提供形式偏移量的提供形式偏移量的作用时间偏移量的作用时间立即数立即数前变址不回写前变址不回写寄存器寄存器前变址回写前变址回写寄存器移位寄存器移位后变址回写后变址回写31TM31半字、有符号字节寻址半字、有符号字节寻址n这类指令可用来这类指令可用来加载有符号字节、加载有符加载有符号字节、加载有符号半字、号半字、加载加载/存储无符号半字。存储无符号半字。nLoad/Store指令对半字、有符号字节操作指指令对半字、有符号
17、字节操作指令编码格式如下:令编码格式如下:为什么要区分为什么要区分有无符号有无符号32TM32n加载有符号字节到寄存器:加载有符号字节到寄存器:LDR SB ,n加载有符号半字到寄存器:加载有符号半字到寄存器:LDR SH ,n加载无符号半字到寄存器:加载无符号半字到寄存器:LDR H ,n存储无符号半字到内存:存储无符号半字到内存:STR H ,半字、有符号字节寻址半字、有符号字节寻址33TM331Addressing_mode中的偏移量为立即数中的偏移量为立即数n前变址不回写形式:前变址不回写形式:,#+/-n前变址回写形式:前变址回写形式:,#+/-!n后变址回写形式:后变址回写形式:,
18、#+/-半字、有符号字节寻址半字、有符号字节寻址34TM34n偏移量为立即数的指令编码类型偏移量为立即数的指令编码类型n例例3-4LDRSB R0,R1,#4LDRH R2,R1,#-4STRH R0,R1,#4!LDRSH R0,R1,#4半字、有符号字节寻址半字、有符号字节寻址35TM352Addressing_mode偏移量为寄存器的值偏移量为寄存器的值n前变址不回写形式前变址不回写形式:,+/-n前变址回写形式:前变址回写形式:,+/-!n后变址回写形式:后变址回写形式:,+/-半字、有符号字节寻址半字、有符号字节寻址36TM36n偏移量为寄存器值的指令编码类型对应关系偏移量为寄存器值
19、的指令编码类型对应关系n例例3-5LDRSB R0,R1,R5LDRH R2,R1,-R5STRH R0,R1,R5!LDRSH R0,R1,R5半字、有符号字节寻址半字、有符号字节寻址37TM37偏移量的提供形式偏移量的提供形式偏移量的作用时间偏移量的作用时间立即数立即数前变址不回写前变址不回写寄存器寄存器前变址回写前变址回写后变址回写后变址回写半字、有符号字节寻址半字、有符号字节寻址38TM383.4 批量批量Load/Store指令寻址方式指令寻址方式nARM指令系统提供了批量指令系统提供了批量Load/Store指令寻指令寻址方式,即通常所说的多寄存器寻址,也就址方式,即通常所说的多寄
20、存器寻址,也就是一次可以传送几个寄存器的值,允许一条是一次可以传送几个寄存器的值,允许一条指令最多传送指令最多传送16个寄存器。个寄存器。39TM39编码格式编码格式n批量加载:批量加载:LDM !, n批量存储:批量存储:STM !, 40TM40nregister_list表示要加载或存储的寄存器列表,表示要加载或存储的寄存器列表,bit15:0可以表示可以表示16个寄存器,如果某位为个寄存器,如果某位为1,则,则该位的位置作为寄存器的编号,此寄存器参预加载该位的位置作为寄存器的编号,此寄存器参预加载或存储。或存储。nS用于恢复用于恢复CPSR和强制用户位。当程序计数器和强制用户位。当程序
21、计数器PC包含在包含在LDM指令的指令的register_list中,且中,且S为为1时,则时,则当前模式的当前模式的SPSR被拷贝到被拷贝到CPSR中,使处理器的中,使处理器的程序返回和状态的恢复成为一个原子操作。如果程序返回和状态的恢复成为一个原子操作。如果register_list中不包含程序计数器中不包含程序计数器PC,S为为1则加载则加载或存储的是用户模式下的寄存器组。或存储的是用户模式下的寄存器组。41TM41n注意事项:注意事项:* 指令中寄存器和连续内存地址单元的对应关指令中寄存器和连续内存地址单元的对应关系:系:编号低的寄存器对应内存低地址单元,编号低的寄存器对应内存低地址单
22、元,编号高的寄存器对应内存高地址单元。编号高的寄存器对应内存高地址单元。42TM42内存操作内存操作 批量批量Load/Store指令在实现寄存器组和连续内存单指令在实现寄存器组和连续内存单元中数据传递时,地址的变化方式(元中数据传递时,地址的变化方式(addr_mode)有以下四种:有以下四种:n后增后增IA (Increment After) :每次数据传送后地址加:每次数据传送后地址加4; n先增先增IB (Increment Before) :每次数据传送前地址加:每次数据传送前地址加4 ; n后减后减DA (Decrement After) :每次数据传送后地址减:每次数据传送后地址
23、减4 ; n先减先减DB (Decrement Before) :每次数据传送前地址减:每次数据传送前地址减4 ; 43TM43内存操作内存操作 nLDMIA R0,R2,R3,R5,R7nSTMDB R1!,R0,R2-R5 练习:练习:1、将、将src开始的开始的6个字复制到个字复制到dest开始的存储单元中开始的存储单元中2、将、将src开始的开始的6个字读入后分别乘以个字读入后分别乘以2再存回到原来的存储单再存回到原来的存储单元中。元中。44TM44堆栈操作堆栈操作1. 根据堆栈指针指向位置的不同可以分为满规模和空堆栈:根据堆栈指针指向位置的不同可以分为满规模和空堆栈:n满堆栈(满堆栈
24、(Full Stack):当堆栈指针指向最后压入堆栈的数据时;当堆栈指针指向最后压入堆栈的数据时;n空堆栈(空堆栈(Empty Stack): 当堆栈指针指向下一个将要放入数据的空位置时;当堆栈指针指向下一个将要放入数据的空位置时;2. 根据堆栈的生成方式,又可以分为递增堆栈和递减堆栈:根据堆栈的生成方式,又可以分为递增堆栈和递减堆栈:n递增堆栈(递增堆栈(Ascending Stack) :当堆栈由低地址向高地址生成时;当堆栈由低地址向高地址生成时;n递减堆栈(递减堆栈(Decending Stack) :当堆栈由高地址向低地址生成时;当堆栈由高地址向低地址生成时;45TM45堆栈操作堆栈操
25、作四种类型的堆栈工作方式:四种类型的堆栈工作方式:n满递增堆栈(满递增堆栈(FA)n满递减堆栈(满递减堆栈(FD)n空递增堆栈(空递增堆栈(EA)n空递减堆栈(空递减堆栈(ED)46TM46堆栈操作堆栈操作nSTMFD R13!,R0,R3-R10,LRnLDMFD R13!,R0,R3-R10,PCnSTMDB R1!,R0,R2-R5nLDMFD R13!,R0-R3,R12,PCnLDMFD R13!,R0-R3,R12练习:用堆栈操作完成下面的处理练习:用堆栈操作完成下面的处理1、将、将src开始的开始的6个字复制到个字复制到dest开始的存储单元中开始的存储单元中2、将、将src开始的开始的6个字读入后分别乘以个字读入后分别乘以
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026江苏事业单位统考泰州市直招聘56人笔试备考题库及答案解析
- 2026四川乐山市峨边彝族自治县招聘县属国有企业人员27人笔试参考题库及答案解析
- 2026浙江中外运有限公司温州分公司招聘2人考试备考题库及答案解析
- 2026四川广安邻水县中医医院诚聘高层次人才16人(本岗位长期有效)考试备考题库及答案解析
- 2026年铁岭卫生职业学院单招综合素质考试题库有答案详细解析
- 2026江苏苏州市昆山市事业单位招聘83人笔试备考题库及答案解析
- 2026北京市法院系统事业单位招聘2人笔试备考试题及答案解析
- 2026江西吉安市永新县薪火人力资源服务有限公司招聘见习人员14人笔试备考题库及答案解析
- 2026中国劳动关系学院高校应届毕业生招聘8人笔试模拟试题及答案解析
- 2026年湖北武汉一初慧泉中学初三第二学期期初模拟训练二英语试题含解析
- 《成人住院患者静脉血栓栓塞症风险评估技术》
- 汽车机械基础课件:第七单元汽车液压传动课件
- 个人房屋买卖合同范本复制
- 肝的生理功能中医
- 大咯血患者急救及护理
- GB/T 44233.2-2024蓄电池和蓄电池组安装的安全要求第2部分:固定型电池
- 地质钻探施工方案
- 2024年河北省中考数学试题(含答案解析)
- Unit2Yummy!(课件)新概念英语青少版StarterA
- T-CSEM 0024-2024 智慧消防 火灾防控系统建设要求
- 沪教版初中英语语法大全
评论
0/150
提交评论