刘帅嵌入式系统-STRH半字数据写入指令

刘帅嵌入式系统-STRH半字数据写入指令

STRH指令用于将一个16位的半字数据写入到指令中指定的内存单元。该半字数据为指令中存放源操作数的寄存器的低16位。

如果指令中的内存地址不是半字对齐的,指令会产生不可预知的结果。

指令的编码格式

刘帅嵌入式系统-STRH半字数据写入指令

指令的编码格式

LDR{< cond >}H < Rd >, < addressing_mode >

其中:

  • < cond >为指令执行的条件码。当< cond >忽略时,指令为无条件执行。

  • < Rd >为目标寄存器。

  • < addressing_mode >为指令的寻址方式。

指令操作的伪代码

if ConditionPassed(cond) then
    ​if address[0] == 0
    ​    ​Memory[address,2] = Rd[15:0]
    ​else /* address[0] == 1 */
    ​    ​data = UNPREDICTABLE
    ​    ​Memory[address,2] = data

指令的使用

STRH指令用于将寄存器中低16位的半字数据写入到指令中指定的内存单元。

示例

STRH R0, [R1,R2];将R0中的低16位数据保存到内存单元(R1 + R2)中
STRH R0, [R1], #8;将R0中的低16位数据保存到内存单元(R1)中,R1 = R1 + 8