51/AVR单片机技术驿站!  <在线翻译>     便利工具    特色网址   无弹窗、无插件的绿色站点...  英才招聘   学历查询  喜欢>>收藏我站 

当前位置:首页 > ARM/CPLD/综合 > 详细内容
【ARM指令集】-加载/存储指令
发布时间:2009/6/4  阅读次数:743  字体大小: 【】 【】【
来源:全民业务网     作者:不详

ARM 微处理器支持加载 / 存储指令用于在寄存器和存储器之间传送数据,加载指令用于将存储器中的数据传送到寄存器,存储指令则完成相反的操作。常用的加载存储指令如下:

— LDR 字数据加载指令

— LDRB 字节数据加载指令

— LDRH 半字数据加载指令

— STR 字数据存储指令

— STRB 字节数据存储指令

— STRH 半字数据存储指令

1、LDR 指令

LDR 指令的格式为:

LDR{条件} 目的寄存器,<存储器地址>

LDR 指令用于从存储器中将一个32 位的字数据传送到目的寄存器中。该指令通常用于从存储器中读取32 位的字数据到通用寄存器,然后对数据进行处理。当程序计数器PC 作为目的寄存器时,指令从存储器中读取的字数据被当作目的地址,从而可以实现程序流程的跳转。该指令在程序设计中比较常用,且寻址方式灵活多样。

指令示例:

LDR R0 , [R1] ;将存储器地址为 R1 的字数据读入寄存器 R0 。

LDR R0 , [R1 , R2] ;将存储器地址为 R1+R2 的字数据读入寄存器 R0 。

LDR R0 , [R1 ,# 8] ;将存储器地址为 R1+8 的字数据读入寄存器 R0 。

LDR R0 , [R1 , R2] ! ;将存储器地址为 R1+R2 的字数据读入寄存器 R0 ,并将新地址              R1+ R2 写入 R1 。

LDR R0 , [R1 ,# 8] ! ;将存储器地址为 R1+8 的字数据读入寄存器 R0 ,并将新地址               R1 + 8 写入 R1 。

LDR R0 , [R1] , R2 ;将存储器地址为 R1 的字数据读入寄存器 R0 ,并将新地址 R1 +             R2 写入 R1 。

LDR R0 , [R1 , R2 , LSL # 2] ! ;将存储器地址为 R1 + R2 × 4 的字数据读入寄存器 R0 ,并将新地址 R1 + R2 × 4 写入 R1 。

LDR R0 , [R1] , R2 , LSL # 2 ;将存储器地址为 R1 的字数据读入寄存器 R0 ,并将新地址 R1 + R2 × 4 写入 R1 。

2、LDRB 指令

LDRB 指令的格式为:

LDR{条件}B 目的寄存器,<存储器地址>

LDRB 指令用于从存储器中将一个8 位的字节数据传送到目的寄存器中,同时将寄存器的高24位清零。该指令通常用于从存储器中读取8 位的字节数据到通用寄存器,然后对数据进行处理。当程序计数器PC 作为目的寄存器时,指令从存储器中读取的字数据被当作目的地址,从而可以实现程序流程的跳转。

指令示例:

LDRB R0 , [R1] ;将存储器地址为 R1 的字节数据读入寄存器 R0 ,并将 R0 的高 24 位清零。

LDRB R0 , [R1 ,# 8] ;将存储器地址为 R1 + 8 的字节数据读入寄存器 R0 ,并将 R0 的高 24 位清零。

3、LDRH 指令

LDRH 指令的格式为:

LDR{条件}H 目的寄存器,<存储器地址>

LDRH 指令用于从存储器中将一个16 位的半字数据传送到目的寄存器中,同时将寄存器的高16位清零。该指令通常用于从存储器中读取16 位的半字数据到通用寄存器,然后对数据进行处理。

当程序计数器PC 作为目的寄存器时,指令从存储器中读取的字数据被当作目的地址,从而可以实现程序流程的跳转。

指令示例:

LDRH R0 , [R1] ;将存储器地址为 R1 的半字数据读入寄存器 R0 ,并将 R0 的高 16 位清零。

LDRH R0 , [R1 ,# 8] ;将存储器地址为 R1 + 8 的半字数据读入寄存器 R0 ,并将 R0 的高 16 位清零。

LDRH R0 , [R1 , R2] ;将存储器地址为 R1 + R2 的半字数据读入寄存器 R0 ,并将 R0 的高 16 位清零。

4、STR 指令

STR 指令的格式为:

STR{条件} 源寄存器,<存储器地址>

STR 指令用于从源寄存器中将一个32 位的字数据传送到存储器中。该指令在程序设计中比较常用,且寻址方式灵活多样,使用方式可参考指令LDR。

指令示例:

STR R0 , [R1] ,# 8 ;将 R0 中的字数据写入以 R1 为地址的存储器中,并将新地址 R1 + 8 写入 R1 。

STR R0 , [R1 ,# 8] ;将 R0 中的字数据写入以 R1 + 8 为地址的存储器中。

5、STRB 指令

STRB 指令的格式为:

STR{条件}B 源寄存器,<存储器地址>

STRB 指令用于从源寄存器中将一个8 位的字节数据传送到存储器中。该字节数据为源寄存器中的低8 位。

指令示例:

STRB R0 , [R1] ;将寄存器 R0 中的字节数据写入以 R1 为地址的存储器中。

STRB R0 , [R1 ,# 8] ;将寄存器 R0 中的字节数据写入以 R1 + 8 为地址的存储器中。

6、STRH 指令

STRH 指令的格式为:

STR{条件}H 源寄存器,<存储器地址>

STRH 指令用于从源寄存器中将一个16 位的半字数据传送到存储器中。该半字数据为源寄存器中的低16 位。

指令示例:

STRH R0 , [R1] ;将寄存器 R0 中的半字数据写入以 R1 为地址的存储器中。

STRH R0 , [R1 ,# 8] ;将寄存器 R0 中的半字数据写入以 R1 + 8 为地址的存储器中。

  

我要评论
  • 匿名发表
  • [添加到收藏夹]
  • 发表评论:(匿名发表无需登录,已登录用户可直接发表。) 登录状态:未登录
最新评论
所有评论[0]
    暂无已审核评论!

网站导航 管理登陆 ┊ 免责声明 问题反馈  友链说明
本站部分内容来自网络共享资源,如有冒犯您的权利请来信告之删除或纠正!
不得对本站进行复制、盗链或镜像,转载内容须获得同意或授权;欢迎友情链接、站务合作!

    我要报警 Alexa
 mcusy_cn#126.com (请把#改成@) 交流:522422171
本站学习交流群:138..158(高级群1-)、77930286(高级群2)、61804809(群3)
Copyright© MCUSY All Rights Reserved
本站网警备案号: WZ36040002485
  ICP备案证书号:粤ICP备09034963号