[<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寄存器中