概述
[<Rn>, +/-<Rm>]!
指令编码格式:
内存地址计算方法:
内存地址address为基址寄存器Rn的值加上/减去索引寄存器Rm的值。
当U = 1时,address = Rn + offset_12;
当U = 0时,address = Rn - offset_12。
当指令执行的条件满足时,生成的新地址值将写入基址寄存器Rn种。这种在指令的内存访问完成后进行基址寄存器内容更新的方式称为事先访问方式(pre-indexed)。
指令中寻址方式的语法格式:
[<Rn>, +/-<Rm>]!
-- !用于设置W位,更新基址寄存器的内容。
伪代码如下:
if U == 1 then
address = Rn + Rm
else
address = Rn - Rm
if CondirionPassed(cond) then
Rn = address
使用说明:
B标志位用于控制指令操作的数据的类型,当B = 1时,指令访问的是无符号的字节数据;当B = 0时,指令访问的是字数据。
L标志位用于控制内存操作的方向。当L = 1时,指令执行Load操作;当L = 0时,指令执行Store操作。
当R15用作基址寄存器Rn时,会产生不可预期的结果。
当Rn和Rm是同一个寄存器时,会产生不可预期的结果。
例子:
LDR R0, [R1,R2]! ;将内存单元(R1+R2)中的数据读取到R0中,同时R1 = R1 + R2
最后
以上就是自然奇异果为你收集整理的刘帅嵌入式系统-Load/Store指令寻址方式五的全部内容,希望文章能够帮你解决刘帅嵌入式系统-Load/Store指令寻址方式五所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复