ARM的六大类指令集--- 加载/存储指令
来源:互联网 发布:php手机网站源码下载 编辑:程序博客网 时间:2024/04/30 03:34
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为地址的存储器中。
上一篇:ARM的六大类指令集---跳转指令
下一篇:ARM的六大类指令集--- 程序状态寄存器访问指令
- A sample .exrc file for vi e...
- IBM System p5 服务器 HACMP ...
- 游标的特征
- busybox的httpd使用CGI脚本(Bu...
- Solaris PowerTOP 1.0 发布
- linux dhcp peizhi roc
- 关于Unix文件的软链接
- 求教这个命令什么意思,我是新...
- sed -e "/grep/d" 是什么意思...
- 谁能够帮我解决LINUX 2.6 10...
- ARM的六大类指令集--- 加载/存储指令
- ARM的六大类指令集--- 加载/存储指令
- ARM的六大类指令集--- 加载/存储指令
- ARM的六大类指令集
- ARM的六大类指令集---跳转指令
- ARM的六大类指令集---跳转指令
- ARM的六大类指令集--- 程序状态寄存器访问指令
- ARM的六大类指令集---LDR、LDRB、LDRH、LDM、STR、STRB、STRH、STM
- ARM的六大类指令集---LDR、LDRB、LDRH、LDM、STR、STRB、STRH、STM
- ARM的六大类指令集---LDR、LDRB、LDRH、LDM、STR、STRB、STRH、STM
- ARM指令集中常用的存储和加载指令
- ARM汇编语言-j加载存储指令
- ARM汇编基础-存储和加载指令
- ARM基础 六、ARM指令集
- 【汇编指令】arm指令集之但寄存器数据load/store (加载存储)
- ARM 的指令集
- ARM的指令集
- 【基于Android的ARM汇编语言系列】之六:NEON指令集与VFP指令集
- ARM汇编伪指令详解
- 关于循环查询 循环赋值的笔记
- ARM寻址方式小结
- excel文件排版为印刷版:对文件进行规范化,批量删除空行
- ARM的六大类指令集---跳转指令
- ARM的六大类指令集--- 加载/存储指令
- OpenCV4Android调试人脸识别sample时遇到的问题和解决办法
- ARM的六大类指令集--- 程序状态寄存器访问指令
- iOS开发——创建你自己的Framework
- 计算机三级嵌入式复习整理——第三章 嵌入式系统硬件组成
- [Ubuntu]Ubuntu14.04软件中心安装软件会提示下载软件包文件失败解决方法
- 做一个不浮躁的嵌入式工程师
- 网络请求参数为json形式
- 嵌入式软件工程师前期职业生涯规划