资料介绍
5.3 单寄存器的Load/Store指令
Load/Store内存访问指令在ARM寄存器和存储器之间传送数据。ARM指令中有3种基本的数据传送指令。
① 单寄存器Load/Store指令(Single Register)
这些指令在ARM寄存器和存储器之间提供更灵活的单数据项传送方式。数据项可以是字节、16位半字或32位字。
② 多寄存器Load/Store内存访问指令
这些指令的灵活性比单寄存器传送指令差,但可以使大量的数据更有效地传送。它们用于进程的进入和退出、保存和恢复工作寄存器以及拷贝存储器中的一块数据。
③ 单寄存器交换指令(Single Register Swap)
这些指令允许寄存器和存储器中的数值进行交换,在一条指令中有效地完成Load/Store操作。它们在用户级编程中很少用到。它的主要用途是在多处理器系统中实现信号量(Semaphores)的操作,以保证不会同时访问公用的数据结构。
5.3.1 字数据传送指令
这种指令用于把单一的数据传入或者传出一个寄存器。支持的数据类型有字节(8位)、半字(16位)和字(32位)。
表5.1总结了所有单寄存器的Load/Store指令。
表5.1 单寄存器Load/Store指令
指 令作 用操 作
LDR把一个字装入一个寄存器Rd←mem32[address]
STR将存储器中的字保存到寄存器Rd→mem32[address]
LDRB把一个字节装入一个寄存器Rd←mem8[address]
STRB将寄存器中的低8位字节保存到存储器Rd→mem8[address]
LDRH把一个半字装入一个寄存器Rd←mem16[address]
STRH将寄存器中的低16位半字保存到存储器Rd→mem16[address]
LDRBT用户模式下将一个字节装入寄存器Rd←mem8[address] under user mode
STRBT用户模式下将寄存器中的低8位字节保存到存储器Rd→mem8[address] under user mode
LDRT用户模式下把一个字装入一个寄存器Rd←mem32[address]under user mode
STRT用户模式下将存储器中的字保存到寄存器Rd→mem32[address] ]under user mode
LDRSB把一个有符号字节装入一个寄存器Rd←sign{mem8[address]}
LDRSH把一个有符号半字装入一个寄存器Rd←sign{mem16[address]}
1.LDR指令
(1)指令编码格式
LDR指令用于从内存中将一个32位的字读取到目标寄存器。
指令的编码格式如图5.3所示。
图5.3 LDR指令编码格式
LDR指令根据《addr_mode》所确定的地址模式将一个32位字读取到指令中的目标寄存器《Rd》。如果指令中的寻址方式确定的地址不是字对齐的,则读出的数值要进行循环右移。所移位数为寻址方式确定的地址bits[1∶0]8的倍,也就是说处理器将取到的数值作为字的最低位处理。
如果设置了L位,则进行装载,否则进行存储。
如果设置了P位,则使用预先变址寻址,否则使用过后变址寻址。
如果设置了U位,则给出的偏移量被加到基址寄存器上,否则从中减去偏移量。
如果设置了B位,传送内存的一个字节,否则传送一个字。这在助记符末尾添加后缀“B”,如MOV r7,r5变为MOVB r7,r5。
W位的解释依赖于使用的地址模式。
· 对于预先变址寻址,设置W位强制把它用做地址转换的最终地址写回基址寄存器中(例如,传送的副作用是Rn:= Rn +/-offset。这在汇编器中表示为给指令加上后缀“!”。)。
· 对于过后变址寻址,地址总是写回,设置 W 位指示在进行传送之前强制地址转换。这在汇编器中表示为给指令加上后缀“T”。
当PC作为LDR的目的寄存器《Rd》时,从存储器取得的数据将被当作目标地址值,程序将跳转到目标地址开始执行。
(2)指令的语法格式
LDR{《cond》} 《Rd》,《addr_mode》
① 《cond》
为指令编码中的条件域。它指示LDR指令在什么条件下执行。当《cond》忽略时,指令为无条件执行(cond=AL(Alway))。
② 《Rd》
确定使用哪个通用寄存器作为目标寄存器。
③ 《addr_mode》
它确定了指令编码中的I、P、U、W、Rn和《addr_mode》位。所有的寻址模式中,都会确定一个基址寄存器Rn。
Load/Store内存访问指令在ARM寄存器和存储器之间传送数据。ARM指令中有3种基本的数据传送指令。
① 单寄存器Load/Store指令(Single Register)
这些指令在ARM寄存器和存储器之间提供更灵活的单数据项传送方式。数据项可以是字节、16位半字或32位字。
② 多寄存器Load/Store内存访问指令
这些指令的灵活性比单寄存器传送指令差,但可以使大量的数据更有效地传送。它们用于进程的进入和退出、保存和恢复工作寄存器以及拷贝存储器中的一块数据。
③ 单寄存器交换指令(Single Register Swap)
这些指令允许寄存器和存储器中的数值进行交换,在一条指令中有效地完成Load/Store操作。它们在用户级编程中很少用到。它的主要用途是在多处理器系统中实现信号量(Semaphores)的操作,以保证不会同时访问公用的数据结构。
5.3.1 字数据传送指令
这种指令用于把单一的数据传入或者传出一个寄存器。支持的数据类型有字节(8位)、半字(16位)和字(32位)。
表5.1总结了所有单寄存器的Load/Store指令。
表5.1 单寄存器Load/Store指令
指 令作 用操 作
LDR把一个字装入一个寄存器Rd←mem32[address]
STR将存储器中的字保存到寄存器Rd→mem32[address]
LDRB把一个字节装入一个寄存器Rd←mem8[address]
STRB将寄存器中的低8位字节保存到存储器Rd→mem8[address]
LDRH把一个半字装入一个寄存器Rd←mem16[address]
STRH将寄存器中的低16位半字保存到存储器Rd→mem16[address]
LDRBT用户模式下将一个字节装入寄存器Rd←mem8[address] under user mode
STRBT用户模式下将寄存器中的低8位字节保存到存储器Rd→mem8[address] under user mode
LDRT用户模式下把一个字装入一个寄存器Rd←mem32[address]under user mode
STRT用户模式下将存储器中的字保存到寄存器Rd→mem32[address] ]under user mode
LDRSB把一个有符号字节装入一个寄存器Rd←sign{mem8[address]}
LDRSH把一个有符号半字装入一个寄存器Rd←sign{mem16[address]}
1.LDR指令
(1)指令编码格式
LDR指令用于从内存中将一个32位的字读取到目标寄存器。
指令的编码格式如图5.3所示。
图5.3 LDR指令编码格式
LDR指令根据《addr_mode》所确定的地址模式将一个32位字读取到指令中的目标寄存器《Rd》。如果指令中的寻址方式确定的地址不是字对齐的,则读出的数值要进行循环右移。所移位数为寻址方式确定的地址bits[1∶0]8的倍,也就是说处理器将取到的数值作为字的最低位处理。
如果设置了L位,则进行装载,否则进行存储。
如果设置了P位,则使用预先变址寻址,否则使用过后变址寻址。
如果设置了U位,则给出的偏移量被加到基址寄存器上,否则从中减去偏移量。
如果设置了B位,传送内存的一个字节,否则传送一个字。这在助记符末尾添加后缀“B”,如MOV r7,r5变为MOVB r7,r5。
W位的解释依赖于使用的地址模式。
· 对于预先变址寻址,设置W位强制把它用做地址转换的最终地址写回基址寄存器中(例如,传送的副作用是Rn:= Rn +/-offset。这在汇编器中表示为给指令加上后缀“!”。)。
· 对于过后变址寻址,地址总是写回,设置 W 位指示在进行传送之前强制地址转换。这在汇编器中表示为给指令加上后缀“T”。
当PC作为LDR的目的寄存器《Rd》时,从存储器取得的数据将被当作目标地址值,程序将跳转到目标地址开始执行。
(2)指令的语法格式
LDR{《cond》} 《Rd》,《addr_mode》
① 《cond》
为指令编码中的条件域。它指示LDR指令在什么条件下执行。当《cond》忽略时,指令为无条件执行(cond=AL(Alway))。
② 《Rd》
确定使用哪个通用寄存器作为目标寄存器。
③ 《addr_mode》
它确定了指令编码中的I、P、U、W、Rn和《addr_mode》位。所有的寻址模式中,都会确定一个基址寄存器Rn。
下载该资料的人也在下载
下载该资料的人还在阅读
更多 >
- CS,IP和PC寄存器
- HELLODSP中F2812寄存器速查 12次下载
- ARM的交换指令总结 1次下载
- 浅谈单寄存器数据传送指令 1次下载
- Thumb指令集之多寄存器数据传送指令解析 0次下载
- 数据传送指令之程序状态寄存器指令简述 1次下载
- ARM指令寻址方式之内存访问指令寻址 1次下载
- 多寄存器Load/Store内存访问指令 1次下载
- 51寄存器的所有寄存器名称,(包括寄存器每一位的作用及用法)资源详解 14次下载
- 寄存器的使用技巧及定义 2次下载
- 基于PIT寄存器图解 7次下载
- arm程序状态寄存器访问指令 0次下载
- DSP2812寄存器详解 8次下载
- 间接寻址及地址寄存器指令
- 寄存器与移位寄存器
- PLC移位寄存器指令的工作过程 923次阅读
- ARM通用寄存器及状态寄存器详解 6334次阅读
- PLC移位寄存器指令应用举例 3263次阅读
- PLC移位寄存器指令的工作原理 5415次阅读
- 寄存器与内存的区别 9939次阅读
- 移位寄存器的原理 7.3w次阅读
- 技术 | FANUC数据寄存器和位置寄存器的运用介绍 1.6w次阅读
- 工业机器人FANUC数据位置寄存器和位置寄存器的运用小知识分享 3.1w次阅读
- CPU寄存器详解 1.1w次阅读
- 寄存器操作方法_对寄存器操作的通用方法总结 2.1w次阅读
- 逆向基础之寄存器和内存详解 2902次阅读
- 移位寄存器怎么用_如何使用移位寄存器_移位寄存器的用途 1.9w次阅读
- plc移位寄存器指令的应用 1.8w次阅读
- 西门子plc移位寄存器指令 4.8w次阅读
- 寄存器传输语言详解 5997次阅读
下载排行
本周
- 1电子电路原理第七版PDF电子教材免费下载
- 0.00 MB | 1490次下载 | 免费
- 2单片机典型实例介绍
- 18.19 MB | 92次下载 | 1 积分
- 3S7-200PLC编程实例详细资料
- 1.17 MB | 27次下载 | 1 积分
- 4笔记本电脑主板的元件识别和讲解说明
- 4.28 MB | 18次下载 | 4 积分
- 5开关电源原理及各功能电路详解
- 0.38 MB | 10次下载 | 免费
- 6基于AT89C2051/4051单片机编程器的实验
- 0.11 MB | 4次下载 | 免费
- 7蓝牙设备在嵌入式领域的广泛应用
- 0.63 MB | 3次下载 | 免费
- 89天练会电子电路识图
- 5.91 MB | 3次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234313次下载 | 免费
- 2PADS 9.0 2009最新版 -下载
- 0.00 MB | 66304次下载 | 免费
- 3protel99下载protel99软件下载(中文版)
- 0.00 MB | 51209次下载 | 免费
- 4LabView 8.0 专业版下载 (3CD完整版)
- 0.00 MB | 51043次下载 | 免费
- 5555集成电路应用800例(新编版)
- 0.00 MB | 33562次下载 | 免费
- 6接口电路图大全
- 未知 | 30320次下载 | 免费
- 7Multisim 10下载Multisim 10 中文版
- 0.00 MB | 28588次下载 | 免费
- 8开关电源设计实例指南
- 未知 | 21539次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935053次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537791次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420026次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234313次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233045次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191183次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183277次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138039次下载 | 免费
评论
查看更多