微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 数据传送指令之:单寄存器的Load/Store指令

数据传送指令之:单寄存器的Load/Store指令

时间:09-13 来源:互联网 点击:

令加载一个内存地址的8位字节到一个通用寄存器中。寄存器的高位数据补0。

(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}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top