电子发烧友App

硬声App

0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示
电子发烧友网>电子资料下载>ARM>多寄存器Load/Store内存访问指令

多寄存器Load/Store内存访问指令

2017-10-18 | rar | 0.6 MB | 次下载 | 1积分

资料介绍

  5.4 多寄存器Load/Store内存访问指令
  多寄存器Load/Store内存访问指令也叫批量加载/存储指令,它可以实现在一组寄存器和一块连续的内存单元之间传送数据。LDM用于加载多个寄存器,STM用于存储多个寄存器。多寄存器Load/Store内存访问指令允许一条指令传送16个寄存器的任何子集或所有寄存器。
  多寄存器Load/Store内存访问指令主要用于现场保护、数据复制和参数传递等。
  注意多寄存器Load/Store内存访问指令会增加中断延时,因为ARM通常不会打断正在执行的指令去响应中断,而必须等到指令执行完。也就是说,如果一个中断在多寄存器Load/Store内存访问指令执行期间产生,那么处理器在多寄存器Load/Store内存访问指令执行完后才对中断响应。
  表5.2总结了多寄存器Load/Store内存访问指令
  表5.2 多寄存器Load/Store内存访问指令
  指 令作 用操 作
  LDM装载多个寄存器{Rd}*N←mem32[start address+4*N]
  STM保存多个寄存器{Rd}*N→mem32[start address+4*N]
  5.4.1 多寄存器内存字数据传送指令
  1.LDM(1)指令
  (1)指令编码格式
  LDM(1)指令将数据从连续的内存单元中读取到指令中指定的寄存器列表中的各寄存器中。
  当PC包含在LDM指令的寄存器列表中时,指令从内存中读取的字数据将被作为目标地址值,指令执行后程序将从目标地址处开始执行,从而实现了指令的跳转。
  指令的编码格式如图5.15所示。
  多寄存器Load/Store内存访问指令
  图5.15 LDM(1)指令编码格式
  (2)指令的语法格式
  LDM{《cond》}《addressing_mode》 《Rn》{!}, 《registers
  ① 《cond》
  为指令编码中的条件域。它指示LDM(1)指令在什么条件下执行。当《cond》忽略时,指令为无条件执行(cond=AL(Alway))。
  ② 《address_mode》
  指令的寻址方式。确定编码格式中的P、U和W位。
  ③ 《Rn》
  确定寻址模式所使用的基址寄存器。
  如果r15作为指令的基址寄存器,指令的执行结果不可预知。
  ④ !
  设置指令编码格式中的W位。它使指令执行后将操作数的内存地址写入基址寄存器《Rn》中;如果!被忽略,W位为0,指令执行完后,不修改基址寄存器的值。
  注意如果基址寄存器包含在指令列表中,当指令执行完后,基址寄存器的值是新加载进的特定内存地址的值。也就是说,即使指令没有出现在指令列表中,基址寄存器的值也可能被修改。
  ⑤ 《registers》
  被加载的寄存器列表。不同的寄存器之间用“,”隔开。完整的寄存器列表包含在“{}”中。编号低的寄存器对应于内存中低地址单元,编号高的寄存器对应于内存中高地址单元。
  注意无论寄存器在寄存器列表“{}”中如何排列,都将遵循上述规则。
  寄存器r0~r15分别对应于指令编码中bit[0]~bit[15]位。如果Ri存在于寄存器列表中,则相应的位等于1,否则为0。
  (3)指令操作的伪代码
  指令操作伪代码如下面程序段所示。
  If ConditionPass{cond} then
  Address=start_address
  For i=0 to 14
  If register_list[i]==1 then
  Ri=Memory[address,4]
  Address=address+4
  If register_list[15]==1 then
  Value = Memory[address,4]
  If(architecture version 5 or above) then
  Pc= value AND 0xfffffffe
  T bit=value[0]
  Else
  Pc= value AND 0xfffffffc
  Address=address+4
  Assert end_address=address+4
 
下载该资料的人也在下载 下载该资料的人还在阅读
更多 >

评论

查看更多

下载排行

本周

  1. 1电子电路原理第七版PDF电子教材免费下载
  2. 0.00 MB  |  1490次下载  |  免费
  3. 2单片机典型实例介绍
  4. 18.19 MB  |  92次下载  |  1 积分
  5. 3S7-200PLC编程实例详细资料
  6. 1.17 MB  |  27次下载  |  1 积分
  7. 4笔记本电脑主板的元件识别和讲解说明
  8. 4.28 MB  |  18次下载  |  4 积分
  9. 5开关电源原理及各功能电路详解
  10. 0.38 MB  |  10次下载  |  免费
  11. 6基于AT89C2051/4051单片机编程器的实验
  12. 0.11 MB  |  4次下载  |  免费
  13. 7蓝牙设备在嵌入式领域的广泛应用
  14. 0.63 MB  |  3次下载  |  免费
  15. 89天练会电子电路识图
  16. 5.91 MB  |  3次下载  |  免费

本月

  1. 1OrCAD10.5下载OrCAD10.5中文版软件
  2. 0.00 MB  |  234313次下载  |  免费
  3. 2PADS 9.0 2009最新版 -下载
  4. 0.00 MB  |  66304次下载  |  免费
  5. 3protel99下载protel99软件下载(中文版)
  6. 0.00 MB  |  51209次下载  |  免费
  7. 4LabView 8.0 专业版下载 (3CD完整版)
  8. 0.00 MB  |  51043次下载  |  免费
  9. 5555集成电路应用800例(新编版)
  10. 0.00 MB  |  33562次下载  |  免费
  11. 6接口电路图大全
  12. 未知  |  30320次下载  |  免费
  13. 7Multisim 10下载Multisim 10 中文版
  14. 0.00 MB  |  28588次下载  |  免费
  15. 8开关电源设计实例指南
  16. 未知  |  21539次下载  |  免费

总榜

  1. 1matlab软件下载入口
  2. 未知  |  935053次下载  |  免费
  3. 2protel99se软件下载(可英文版转中文版)
  4. 78.1 MB  |  537791次下载  |  免费
  5. 3MATLAB 7.1 下载 (含软件介绍)
  6. 未知  |  420026次下载  |  免费
  7. 4OrCAD10.5下载OrCAD10.5中文版软件
  8. 0.00 MB  |  234313次下载  |  免费
  9. 5Altium DXP2002下载入口
  10. 未知  |  233045次下载  |  免费
  11. 6电路仿真软件multisim 10.0免费下载
  12. 340992  |  191183次下载  |  免费
  13. 7十天学会AVR单片机与C语言视频教程 下载
  14. 158M  |  183277次下载  |  免费
  15. 8proe5.0野火版下载(中文版免费下载)
  16. 未知  |  138039次下载  |  免费