刘帅嵌入式系统-杂类Load/Store指令寻址方式四

刘帅嵌入式系统-杂类Load/Store指令寻址方式四

[,+/-]!

指令编码格式


刘帅嵌入式系统-杂类Load/Store指令寻址方式四


内存地址计算方式:

内存地址address为基址寄存器的值加上/减去索引寄存器Rm的值。

当U = 1时,address = Rn + Rm

当U = 0时,address = Rn - Rm

当指令执行条件满足时,生产的地址address将写入基址寄存器Rn中。这种方式为事先访问方式。

指令中寻址方式的语法格式

[, +/-]!

-- !用来设置W位,更新基址寄存器的内容。

伪代码如下:

if U==1 then

address = Rn + Rm

else /*U == 0*/

address = Rn - Rm

if ConditionPassed(cond) then

Rn = address

使用说明:

标志位L、S的用法与[,#+/-<offset>]指令相同。/<offset>

当R15用作基址寄存器Rn或Rm时,会产生不可预期的结果。

当Rn和Rm是同一个寄存器时,会产生不可预期的结果。

示例:

LDRH R0,[R1,R2]! ;将内存单元(R1+R2)中的半字数据读取到R0中,R0中高16位设置成0;R1 = R1 + R2


分享到:


相關文章: