第4章 ARM寻址方式与指令系统.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第4章 ARM指令系统 数据处理指令(22种) 跳转指令(4种) Load/Store指令(16种) 程序状态寄存器指令(2种) 协处理器指令(5种) 软件中断指令 (2种) 机器指令、伪指令和宏指令 机器指令:能被处理器直接执行,而伪指令宏和宏指令不能。机器指令包括ARM指令集和Thumb指令集 ; 伪指令:在源程序汇编期间,由汇编编译器处理。其作用是为汇编程序完成准备工作; 宏指令:在程序中用于调用宏,宏是一段独立的程序代码;在程序汇编时,对宏调用进行展开,用宏体代替宏指令。 ARM指令的助记符 ARM指令在汇编程序中用助记符表示,一般ARM指令的助记符格式为: opcode {cond} {S} Rd,Rn, { op2 } 其中: opcode 操作码,如ADD表示算术加操作指令; {cond} 决定指令执行的条件域; {S} 决定指令执行是否影响CPSR寄存器的值; Rd 目的寄存器; Rn 第一个操作数,为寄存器; op2 第二个操作数。 例如,指令 ADDE QS R1,R2,#5 ARM指令的编码格式 实际指令语法格式为: ADDEQS R0,R1,R2; 该指令的编码格式为: 条件域cond 几乎所有的ARM指令都可以根据当前程序状态寄存器CPSR中标志位的值,有条件地执行。 ARM指令的条件域cond有16种类型。 第4章 ARM指令系统 数据处理指令(22种) 跳转指令(4种) Load/Store指令(16种) 程序状态寄存器指令(2种) 协处理器指令(5种) 软件中断指令 (2种) 寻址方式 9种: 立即数寻址 寄存器寻址 寄存器移位寻址 寄存器间接寻址 基址变址寻址 相对寻址 多寄存器寻址 块拷贝寻址 堆栈寻址 立即数寻址 在立即数寻址中,操作数本身直接在指令中给出,取出指令也就获得了操作数,这个操作数也称为立即数。 例: ADD R0,R1,#5; R0=R1+5 MOV R0,#0x55; R0=0x55 其中:操作数5,0x55就是立即数,立即数在指令中要以“#”为前缀,后面跟实际数值。 有效立即数问题 在32位指令编码中存放32位立即数的方法是: 在ARM数据处理指令中,当参与操作的第二操作数为立即数型时,每个立即数都是采用一个8位的常数循环右移偶数位而间接得到。 其中循环右移的位数由一个4位二进制的两倍表示,如果立即数记作immediate,8位常数记作immed_8,4位的循环右移值记作rotate_imm,有效的立即数是由一个8位的立即数循环右移偶数位得到。 因此有效立即数immediate可以表示成: immediate=immed_8循环右移(2×rotate_imm) 寄存器寻址 在寄存器寻址方式下,寄存器的值即为操作数。ARM指令普遍采用此种寻址方式。 例: ADD R0,R1,R2 ; R0=R1+R2 MOV R0,R1 ; R0=R1 寄存器移位寻址 寄存器移位寻址的操作数由寄存器的数值做相应移位而得到。 移位的方式在指令中以助记符的形式给出,而移位的位数可用立即数或寄存器寻址方式表示。 例: ADD R0,R1,R2,ROR #5 ;R0=R1+R2循环右移5位 MOV R0,R1,LSL R3 ;R0=R1逻辑左移R3位 移位操作在ARM指令集中不作为单独的指令使用,ARM指令集共有5种位移操作。 ARM指令集的5种位移操作 LSL逻辑左移 :Rx,LSL op1 LSR逻辑右移 : Rx,LSR op1 ASR算术右移 :Rx,ASR op1 ROR循环右移 :Rx,ROR op1 RRX带扩展的循环右移:Rx,RRX 寄存器间接寻址 寄存器中的值为操作数的物理地址,而实际的操作数存放在存储器中。 例: STR R0,[R1] ; [R1]=R0 LDR R0,[R1] ; R0=[R1] 基址变址寻址 将寄存器(称为基址寄存器)的值与指令中给出的偏移地址量相加,所得结果作为操作数的物理地址。 例: LDR R0,[R1,#5] ; R0=[R1+5] LDR R0,[R1,R2] ; R0=[R1+R2] 相对寻址 相对寻址同基址变址寻址相似,区

文档评论(0)

书房 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档