电子的科大微嵌ppt8.ppt

  1. 1、本文档共57页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
电子的科大微嵌ppt8

伪指令 在ARM汇编指令中,有一类特殊的指令没有对应的指令编码。在汇编时根据情况会解释为相应的ARM、Thumb-2或Thumb-2之前的Thumb指令的组合。这类指令被ARM公司称为“伪指令”。 需要特别注意的是,这几条指令和第9章中介绍的伪指令虽然形式上类似,但作用却大不相同。第9章中介绍的伪指令用于指导汇编器完成相应的汇编工作,符合通常意义上对伪指令的定义,而本节所介绍的这几条伪指令的作用和正常的ARM汇编指令类似,设计这几条伪指令的目的主要是使用一条指令替代多条指令的组合,方便程序员完成汇编程序设计工作,其作用类似于80x86处理器的宏指令。 伪指令 ADR/ADRL 将相对于程序或相对于寄存器的地址载入寄存器中(中等范围,与位置无关)。 指令书写格式:ADR(ADRL)[cond] Rd, label …… MOV R0, #0x18 ; 给R0赋值用于查表 ADR R3, JumpTable ; 装载跳转表的首地址 LDR PC, [R3,R0,LSL#2] ; 查表,将查到的地址赋给PC JumpTable …… ADR R3 JumpTable LDR PC,[R3,R0,LSL#2] xxx JumpTable xxx xxx JumpTable+72 xxx PC R3 JumpTable PC xxx 栈顶 SP? 栈顶 SP? 栈底 栈底 堆栈的空与满 空堆栈:堆栈指针SP指向下一个待压入数据的空位置 满堆栈:堆栈指针SP指向最后压入的堆栈的有效数据项 00栈顶 SP? 0栈顶 SP? 满堆栈压栈 空堆栈压栈 * */95 堆栈的递增与递减 递增堆栈:向高地址方向生长,即向上生长 递减堆栈:向低地址方向生长,即向下生长 栈底 栈顶 栈区 SP? 堆栈存储区 栈顶 栈底 栈区 ?SP 地址减少 地址增加 00递增堆栈压栈 递减堆栈压栈 * */95 堆 栈 寻 址 1. 操作数存放在内存栈顶单元中; 2.指令地址码字段固定使用栈顶指针SP; 3.指令执行时同多寄存器/块寻址,可完成多个数据的入栈和出栈; LDMEA SP!,{R2-R4,R6} ; R6= [SP-4] , R4= [SP-8] ; R3= [SP-C] , R2= [SP-10],SP=SP-10 STMFD SP!,{R2-R4,R6} ; [SP-4]= R6 , [SP-8]=R4 ; [SP-C] =R3, [SP-10]=R2, SP=SP-10 0SP R2 0x?? 0x01 00x?? R3 R4 0x?? R6 0x?? 0x02 0x03 0x04 000x4000000C 0x01 0x02 0x03 0x04 0堆栈单元 Empty Ascending Full Desending 多寄存器/块寻址 相 对 寻 址 1. 操作数为指令存放地址; 2.指令地址码字段为地址偏移量; 3.指令执行时同基址寻址,由PC提供基地址根据偏移量完成跳转; BL SUBR1 ;调用SUBR1子程序 BEQ LOOP ;条件跳转到LOOP处 ... LOOP MOV R6,#1 * */95 带条件码的指令 C代码: If(a b) a++; Else b++; 对应的汇编代码: CMP R0,R1 ;比较R0(a)与R1(b) ADDHI R0,R0,#1 ;若R0R1,则R0=R0+1 ADDLS R1,R1,#1 ;若R0≤1,则R1=R1+1 * */95 数据处理指令的编码格式 指令条件码 I=1:立即数; I=0:寄存器移位 第二操作数 Rd目标寄存器 Rn第一操作数寄存器 S=1:根据结果设置CPRS中的条件码 S=0:不设置CPRS中的条件码 带进位加法 ADC 0101 带进位减法指令 SBC 0110 带进位逆向减法指令 RSC 0111 位测试指令 TST 1000 相等测试指令 TEQ 1001 比较指令 CMP 1010 负数比较指令 CMN 1011 逻辑或操作指令 ORR 1100 数据传送 MOV 1101 位清除指令 BIC 1110 数据非传送 MVN 1111 加法运算指令 ADD 0100 逆向减法指令 RSB 0011 减法运算指令 SUB 0010 逻辑异或操作指令 EOR 0001 逻辑与操作指令 AND

文档评论(0)

liwenhua00 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档