购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

5.1 数据传送指令

ARM处理器的基本功能之一就是数据传送。ARM Cortex-M3中的数据传送类指令可以实现两个寄存器间传送数据、寄存器与存储器间传送数据、寄存器与特殊功能寄存器间传送数据,以及把一个立即数加载到寄存器。下面详细介绍一下数据传送指令。

5.1.1 寄存器间数据传送指令

用于在寄存器间传送数据的指令是 MOV。比如,如果要把寄存器 R3 的数据传送给寄存器R8,则写为:

与MOV指令相关的另一个指令是MVN,它把寄存器的内容取反后再传送。

5.1.2 存储器数据传送指令

用于访问存储器的基础指令是“加载(Load)”和“存储(Store)”。加载指令LDR把存储器中的内容加载到寄存器中,存储指令 STR 则把寄存器的内容存储至存储器中,传送过程中数据类型也可以变通,常用的存储器访问指令如表5-1所示。

表5-1 常用的存储器访问指令

续表

另外,也可以采用LDM/STM指令访问多重存储器,它们相当于把若干个LDR/STR给合并起来了,有利于减少代码量,如表5-2所示。

表5-2 常用的多重存储器访问指令

5.1.3 索引数据传送指令

索引数据传送指令包括预索引和后索引两类。带预索引的数据传送可以用在多种数据类型上,并且既可用于加载,又可用于存储。常用的预索引数据传送指令如表5-3所示。

表5-3 常用的预索引数据传送指令

除了支持“预索引”,还支持“后索引”(Post‐indexing)。后索引也要使用一个立即数offset,但与预索引不同的是,后索引是忠实使用基址寄存器Rd的值作为数据传送的地址的。待到数据传送后,再执行Rd←Rd+offset。其中,offset 可以是负数。常用的后索引数据传送指令如表5-4所示。

表5-4 常用的后索引数据传送指令

续表 SUXfCJL4uxhQKUWIGzHzKHoP8KuuTxvr32/X8iTDJovTW2RA7P+W54WQMk/rb1Z+

点击中间区域
呼出菜单
上一章
目录
下一章
×