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

[<Rn>, +/-<Rm>]

指令编码格式:

内存地址计算方法:

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

当U=1时,address = Rn + Rm;

当U=0时,address = Rn - Rm。

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

[<Rn>, +/-<Rm>]

伪代码如下:

if U == 1 then

    address = Rn + Rm

else

    address = Rn - Rm

使用说明:

    该寻址方式适合用适合访问字节数组中的数据成员。

    B标志位用于控制指令操作的数据的类型,当B = 1时,指令访问的是无符号的字节数据;当B = 0时,指令访问的是字数据。

    L标志位用于控制内存操作的方向。当L = 1时,指令执行Load操作;当L = 0时,指令执行Store操作。

    当R15用作基址寄存器Rn时,内存基地址为当前指令地址加8字节偏移量。

    当R15用作索引寄存器Rm时,会产生不可预期的结果。

例子:

    LDR R0, [R1,R2]    ;将内存单元R1+R2中的字读取到R0寄存器中

    LDR R0, [R1,-R2]   ; 将内存单元R1-R2中的字读取到R0寄存器中

猜你喜欢

转载自blog.csdn.net/shuai532209720/article/details/88699733