《汇编语言程序设计-—基于ARM体系结构-(第4版)》教学课件—03ARM指令系统.pptVIP

《汇编语言程序设计-—基于ARM体系结构-(第4版)》教学课件—03ARM指令系统.ppt

  1. 1、本文档共172页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
3.11.5单寄存器加载和存储指令 Thumb指令集支持寄存器的加载和存储,即LDR和STR指令。这些指令使用2种前变址寻址方式:寄存器偏移和立即数偏移。单寄存器加载和存储指令如表3-15所示。 例 3.67 LDR指令举例,假设执行前: Men32[0x9000]=0 Men32[0x9004]=0 Men32[0x9008]=0 R0=0 R1=0 R4=0 若有指令LDR R0, [R1,R4], 则执行后R0、R1、R4有何变化? 若有指令LDR R0,[R1,#0x4],则执行后R0、R1、R4有何变化? 分析:这两条 Thumb指令,它们执行前的条件是一样的。这2条指令 执行同样的操作。惟一的区别是第二条LDR使用一个立即数作 为固定偏移,而第一条LDR的偏移依赖于寄存器R4 ,即寄存 器变址。这两条指令执行后 R0=0 R1=0 R4=03.11.6 多寄存器加载和存储指令 Thumb指令集的多寄存器加载和存储(load-store)指令是ARM指令集的多寄存器加载和存储指令的简化形式。多寄存器加载和存储指令如表3-16所示。 Thumb指令集中的多寄存器加载和存储指令只支持后增量(IA,Increment After)寻址方式。其语法格式如下: LDM|STM IA Rn!,{low register list:R0~R7} 这里N是寄存器列表中寄存器的数目。从表中可看到,指令执行后总是更新基址寄存器,基址寄存器和可以使用的寄存器列表仅限于R0~R7。 例 3.68 多寄存器加载与存储指令举例,假设执行前各寄存器的值 如下: R1=0 R2=0 R3=0 R4=0x9000 则执行指令STMIA R4!, {R1,R2,R3}后各寄存器和存储器发生什 么变化? 分析:保存R1~R3到内存地址0x9000~0x900c,并且更新基址 寄存器R4。需要指出的是,这里更新字符“!”不是可选的, 这与ARM指令集不同。指令执行后 mem32[0x9000]=0 mem32[0x9004]=0 mem32[0x9008]=0 R4=0x900c 3.11.7堆栈指令 Thumb的堆栈操作与等效的ARM指令是不同的,因为它们使用了更传统的POP和PUSH的概念。 Thumb堆栈指令如表3-17所示,其指令的语法格式如下: POP{low-register-list{,pc}}

文档评论(0)

139****1983 + 关注
实名认证
文档贡献者

副教授、一级建造师持证人

一线教师。

领域认证该用户于2023年06月21日上传了副教授、一级建造师

1亿VIP精品文档

相关文档