数据传送指令之:单寄存器的Load/Store指令
(2)指令的语法格式
LDR{cond>}BT Rd>,post_indexed_addressing_mode>
① cond>
为指令编码中的条件域。它指示LDRBT指令在什么条件下执行。当cond>忽略时,指令为无条件执行(cond=AL(Alway))
。
② Rd>
确定使用哪个通用寄存器作为目标寄存器。
③ post_indexed_addressing_mode>
使用后索引地址模式寻址,参见LDRT指令。
(3)指令操作的伪代码
指令操作的伪代码如下面程序段所示。
If ConditionPassed{cond} then
Rd=Memory[address,1]
2.STRBT指令
(1)指令编码格式
STRBT指令用于将一个8位的字节数据写入到指令中指定的内存单元。
当处理器在特权模式下执行此指令时,内存系统将该操作当作一般用户模式下的内存访问操作。
指令的编码格式如图5.12所示。
图5.12 STRBT指令编码格式
(2)指令的语法格式
STR{cond>}BT Rd>,addr_mode>
① cond>
为指令编码中的条件域。它指示LDRBT指令在什么条件下执行。当cond>忽略时,指令为无条件执行(cond=AL(Alway))。
② Rd>
确定使用哪个通用寄存器作为目标寄存器。
③ post_indexed_addressing_mode>
使用后索引地址模式寻址,参见LDRT指令。
(3)指令操作的伪代码
指令操作的伪代码如下面程序段所示。
If ConditionPassed{cond} then
Memory[address,1]=Rd[7:0]
5.3.6 有符号的字节/半字数据传送指令(LDRBT/STRBT)
1.LDRSB指令
(1)指令编码格式
LDRSB指令根据addr_mode>所确定的地址模式将一个8位字节读取到指令中的目标寄存器Rd>。
注意 | LDRSB与LDRB指令的不同之处在于它将寄存器的高24位设置成该字节数据的符号位的值(即将该8位字节数据进行符号位扩展,生成32位字数据)。 |
指令的编码格式如图5.13所示。
图5.13 LDRSB指令编码格式
(2)指令的语法格式
LDR{cond>}SB Rd>,addr_mode>
① cond>
为指令编码中的条件域。它指示LDRSB指令在什么条件下执行。当cond>忽略时,指令为无条件执行(cond=AL(Alway))。
② Rd>
确定使用哪个通用寄存器作为目标寄存器。
③ addr_mode>
它确定了指令编码中的I、P、U、W、Rn和addr_mode>位。所有的寻址模式中,都会确定一个基址寄存器Rn。
(3)指令操作的伪代码
If ConditionPassed{cond} then
data=Memory[address,1]
Rd=SignExtend{data}
2.LDRSH指令
(1)指令编码格式
LDRSH指令根据addr_mode>所确定的地址模式将一个16位半字读取到指令中的目标寄存器Rd>。
注意 | LDRSH与LDRH指令的不同之处在于它将寄存器的高16位设置成该字节数据的符号位的值(即将该16位字节数据进行符号位扩展,生成32位字数据)。 |
指令的编码格式如图5.14所示。
图5.14 LDRSH指令编码格式
(2)指令的语法格式
LDR{cond>}SH Rd>,addr_mode>
① cond>
为指令编码中的条件域。它指示LDRSH指令在什么条件下执行。当cond>忽略时,指令为无条件执行(cond=AL(Alway))。
② Rd>
确定使用哪个通用寄存器作为目标寄存器。
③ addr_mode>
它确定了指令编码中的I、P、U、W、Rn和addr_mode>位。所有的寻址模式中,都会确定一个基址寄存器Rn。
(3)指令操作的伪代码
If ConditionPassed{cond} then
if address[0]==0
data=Memory[address,2]
else /*address[0] ==1*/
data=UNPREDICTABLE
Rd=SignExtend{data}
数据传送指令 单寄存器 Load Store指令 微处理器 ARM 相关文章:
- 数据传送指令之:MOV指令(08-13)
- 数据传送指令之:MVN指令(08-13)
- 数据传送指令之:单数据交换指令(08-13)
- Thumb指令集之: 多寄存器数据传送指令(09-30)
- Thumb指令集之: 单寄存器数据传送指令(09-30)
- 数据传送指令之: 程序状态寄存器指令(09-13)