我是靠谱客的博主 深情老鼠,最近开发中收集的这篇文章主要介绍刘帅嵌入式系统-Load/Store指令寻址方式四,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

[<Rn>, #+/-<offset_12>]!

指令编码格式:

 

内存地址计算方法:

内存地址address为基址寄存器的值加上/减去偏移量offset_12。

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

当U = 2时,address = Rn - offset_12。

当指令执行的条件满足时,生成的新地址值将写入基址寄存器Rn种。这种在指令的内存访问完成后进行基址寄存器内容更新的方式称为事先访问方式(pre-indexed)。

 

指令中寻址方式的语法格式:
[<Rn>, #+/-<offset_12>]!

-- !用于设置W位,更新基址寄存器的内容。

 

伪代码如下:

if U == 1 then

    address = Rn + offset_12

else 

    address = Rn - offset_12
if CondirionPassed(cond) then

    Rn = address

使用说明:

    该寻址方式适合访问数组时,自动进行数组下标的更新。

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

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

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

 

例子:

    LDR R0, [R1, #4]!    ;将地址单元(R1+4)中的字读取到R0中,同时R1 = R1 + 4

最后

以上就是深情老鼠为你收集整理的刘帅嵌入式系统-Load/Store指令寻址方式四的全部内容,希望文章能够帮你解决刘帅嵌入式系统-Load/Store指令寻址方式四所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部