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

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

指令编码格式

内存地址计算方法:

指令使用基址寄存器Rn的值作为实际内存访问的地址。

当指令执行的条件满足时,将基址寄存器的值加上/减去索引寄存器Rm的值,生成新的地址。

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

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

最后将新的地址值写入基址寄存器Rn中。方式称为事后访问方式。

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

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

计算内存实际地址的伪代码如下:

address = Rn

if ConditionPassed(Cond) then

    if U == 1 then

        Rn = Rn + Rm

    else /* U == 0*/

        Rn = Rn - Rm

使用说明:

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

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

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

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

例子:

    LDR R0, [R1],R2    ;将地址为R1内存单元数据读取到R0寄存器中,然后R1 = R1 +R2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值