网站大量收购闲置独家精品文档,联系QQ:2885784924

ARM体系结构与编程---第二章教程.ppt

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

第2章 ARM指令分类及寻址方式;第2章 目录;第2章 目录;ARM指令的分类;2.1 ARM指令的一般格式;2.1 ARM指令的一般格式; ARM指令的基本书写格式如下:;操作码;2.1 ARM指令的一般格式;2.1 ARM指令的一般格式;对应的错误汇编代码: CMP R0,#10 ADDNE R0,R0,R1 CMPEQ R1,#20 ADDNE R0,R0,R1 ;2.1 ARM指令的一般格式;2.2 ARM处理器寻址方式; ARM指令的基本书写格式如下:;2.2 ARM处理器寻址方式;先介绍 :#immediate——立即数 MOV R0,#0;R0=0在数据处理指令中,规定这个立即数必须是一个8bit的常数通过循环右移偶数位得到。;合法的立即数(参见教材25页图) ;判断合法立即数的方法;练习;0x8000 0010 0x108 循环右移4位得到0x8000 0010 0001 0000 1000 取0x42循环右移30位可以得到0x108 0100 0010 那么,0x42循环右移34位可以得到0x8000 0010 也就是0x42循环右移两位就可得到0x8000 0010。 0x8000 0010 为合法立即数 0x2000 0010 0x102 循环右移4位得到0x2000 0010 0001 0000 0010 取0x81循环右移31位可以得到0x102,移位为奇数,则0x102非法。 那么0x2000 0010 为非法。;立即数(2);ARM汇编编译器按照下面的规则来生成立即数编码: 当立即数数值在0—0xff范围内时,令immediate=immed_8, rotate_imm=0 其它情况下,汇编编译器选择rotate_imm数值最小的编码方法。;装载32 bit常数; 操作数的值存放在寄存器中,指令执行时直接取出寄存器值来操作。寄存器寻址指令举例如下: MOV R1,R2 ;将R2的值存入R1 SUB R0,R1,R2 ;将R1的值减去R2的值,结果保存到R0 ; 可以采取的移位操作如下: LSL:逻辑左移(Logical Shift Left) LSR:逻辑右移(Logical Shift Right) ASR:算术右移(Arithmetic Shift Right) ROR:循环右移(ROtate Right) RRX:扩展为1的循环右移(Rotate Right eXtended by 1 place ) ;LSL逻辑左移:右侧用0填充,最后移出位入C;2.2 ARM处理器寻址方式;2.2 ARM处理器寻址方式;Load指令用于从存储器(包括内存和外存)中读取数据加载到寄存器中; Store指令用于将寄存器的数据保存到存储器。 各种类型的Load/Store指令中寻找的地址由两部分组成: 1〉基址寄存器:一般使用通用寄存器 2〉地址偏移量:立即数、寄存器、寄存器及一个移位常数。 需要的地址=基址寄存器+地址偏移量 ; 寄存器移位寻址是ARM指令集特有的寻址方式。; 变址寻址就是将基址寄存器中的地址与指令中给出的偏移量相加/减,形成有效地址。变址寻址用于访问基址附近的存储单元,常用于查表、数组操作、功能部件寄存器(与通用寄存器R0-R12不同)访问等。;LDR 指令的语法格式如下:(访问的数据的地址 ) LDR{cond}{B}{T} Rd,address_mode;T后缀,在特权模式下对存储器的访问,将被存储器看成是用户模式(即非特权)的访问,操作的寄存器也是用户模式下的。(destination目的地)(书上34页*,35页*);偏移量方法 LDR R0,[R1,R2,LSL #2];R0←[R1+R2*4],R1不变 事先更新基址(前索引)(前变址) 操作之前,先改变基址寄存器。 LDR R0,[R1,R2,LSL #2]! ;R0←[R1+R2*4] ,更新R1为R1+R2*4 事后更新基址(后索引)(后变址) 操作之后,再改变基址寄存器。 LDR R0,[R1] ,R2,LSL #2;R0←[R1],更新R1为R1+R2*4;Pre or Post Indexed store寻址;I=0,立即数偏移 I=1,寄存器偏移 P=1,偏移量/前索引 P=0,后索引 U=1,加偏移 U=0,减偏移 W=1,后缀有! 回写基址寄存器 W=0,后缀无!不回写基址寄存器;2.2 ARM处理器寻址方式;2.2 ARM处理器寻址方式;批量L

文档评论(0)

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

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

1亿VIP精品文档

相关文档