数据传送指令之:单寄存器的Load/Store指令
(3)指令操作的伪代码
if ConditionPassed{cond} then
Memory[address,1] = Rd[7:0]
5.3.3 半字数据传送指令(LDRH/STRH)
1.LDRH指令
(1)指令编码格式
LDRH指令用于从内存中将一个16位的半字读取到目标寄存器。
如果指令的内存地址不是半字节对齐的,指令的执行结果不可预知。
指令的编码格式如图5.7所示。
图5.7 LDRH指令的编码格式
(2)指令的语法格式
LDR{cond>}H Rd>,addr_mode>
① cond>
为指令编码中的条件域。它指示LDRH指令在什么条件下执行。当cond>忽略时,指令为无条件执行(cond=AL(Alway))。
② Rd>
确定使用哪个通用寄存器作为目标寄存器。
注意 | 如果PC作为目标寄存器,指令的执行结果不可预知。 |
③ 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=data
注意 | 在包含系统控制协处理器的芯片应用中,如果定义了地址对齐检测,当bit[0]!=0时,将发生地址对齐异常。 |
2.STRH指令
(1)指令编码格式
STRH指令从寄存器中取出指定的16位半字放入寄存器的低16位,并将寄存器的高位补0。
指令的编码格式如图5.8所示。
图5.8 STRH指令的编码格式
(2)指令的语法格式
STR{cond>}H Rd>,addr_mode>
① cond>
指令编码中的条件域。它指示STRH指令在什么条件下执行。当cond>忽略时,指令为无条件执行(cond=AL(Alway))。
② Rd>
确定使用哪个通用寄存器作为目标寄存器。
注意 | 如果PC作为目标寄存器,指令的执行结果不可预知。 |
③ addr_mode>
它确定了指令编码中的I、P、U、W、Rn和addr_mode>位。所有的寻址模式中,都会确定一个基址寄存器Rn。
(3)指令操作的伪代码
if ConditionPassed{cond} then
if address[0]==0
data=Rd[15:0]
else /*address[0]==1*/
data=unpredictable
Memory[address,2]=data
存储器相关文章:存储器原理
评论