![刘帅嵌入式系统-杂类Load/Store指令寻址方式五](http://p2.ttnews.xyz/loading.gif)
[
指令编码格式:
![刘帅嵌入式系统-杂类Load/Store指令寻址方式五](http://p2.ttnews.xyz/loading.gif)
内存地址计算方式:
指令使用基址寄存器Rn的值作为实际内存访问的地址。
当指令执行的条件满足时,将基址寄存器的值加上/减去偏移量offset_8,生成新的地址。
当U = 1时,address = Rn + offset_8
当U = 0时,address = Rn - offset_8
最后将新的地址address写入基址寄存器Rn中。这种方式为事后访问方式。
指令中寻址方式的语法格式
[
-- offset_8为地址偏移量,被编码成高4位immedH和低4位immedL。
伪代码如下:
offset_8 = (immedH << 4) OR immedL
if ConditionPassed(cond) then
if U==1 then
Rn= Rn + offset_8
else /*U == 0*/
Rn = Rn - offset_8
使用说明:
当R15用做基址寄存器Rn或Rm时,会产生不可预知的结果。
标为为L、S的用法与前面的指令相同。
示例:
STRH R0, [R1], #8 ;将R0中的低16位数据保存到内存单元(R1)中,同时,指令执行后 R1 = R1 + 8
閱讀更多 劉帥嵌入式系統 的文章