ARM汇编指令集之六——加载/存储指令

发布者:advancement3最新更新时间:2016-07-11 来源: eefocus关键字:ARM  汇编指令集  加载  存储指令 手机看文章 扫描二维码
随时随地手机看文章
ARM微处理器支持加载/存储指令用于在寄存器和存储器之间传送数据,加载指令用于将存储器中的数据传送到寄存器,存储指令则完成相反的操作。常用的加载存储指令如下:

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;将寄存器R0中的半字数据写入以R1+8为地址的存储器中。

 

7、批量数据加载/存储指令

ARM微处理器所支持批量数据加载/存储指令可以一次在一片连续的存储器单元和多个寄存器之间传送数据,批量加载指令用于将一片连续的存储器中的数据传送到多个寄存器,批量数据存储指令则完成相反的操作。常用的加载存储指令如下:

LDM(或STM)指令

LDM(或STM)指令的格式为:

LDM(或STM){条件}{类型} 基址寄存器{!},寄存器列表{∧}

LDM(或STM)指令用于从由基址寄存器所指示的一片连续存储器到寄存器列表所指示的多个寄存器之间传送数据,该指令的常见用途是将多个寄存器的内容入栈或出栈。其中,{类型}为以下几种情况:

IA   每次传送后地址加1;

IB   每次传送前地址加1;

DA   每次传送后地址减1;

DB   每次传送前地址减1;

FD   满递减堆栈;

ED   空递减堆栈;

FA   满递增堆栈;

EA   空递增堆栈;

{!}为可选后缀,若选用该后缀,则当数据传送完毕之后,将最后的地址写入基址寄存器,否则基址寄存器的内容不改变。

基址寄存器不允许为R15,寄存器列表可以为R0~R15的任意组合。

{∧}为可选后缀,当指令为LDM且寄存器列表中包含R15,选用该后缀时表示:除了正常的数据传送之外,还将SPSR复制到CPSR。同时,该后缀还表示传入或传出的是用户模式下的寄存器,而不是当前模式下的寄存器。

指令示例:

STMFD  R13!,{R0,R4-R12,LR}        ;将寄存器列表中的寄存器(R0,R4到R12,LR)存入堆栈。

LDMFD  R13!,{R0,R4-R12,PC}        ;将堆栈内容恢复到寄存器(R0,R4到 R12,LR)。

 
 
 
 
 
关键字:ARM  汇编指令集  加载  存储指令 引用地址:ARM汇编指令集之六——加载/存储指令

上一篇:ARM汇编指令集之七——数据交换指令
下一篇:ARM汇编指令集之六——程序状态寄存器访问指令

推荐阅读最新更新时间:2024-03-16 14:59

到2012年,ARM将取代x86在军工业与医疗的主导
市场研究机构Semicast预估,工业与医疗应用领域的32/64位微控制器(MCU)与嵌入式微处理器(eMPU)营收,可由2010年的16亿美元成长一倍,到2015年达到32亿美元的水平,这期间的年平均复合成长率(CAGR)约为15%。而其中受益最多的厂商是ARM,该机构预测在以上应用市场采用ARM核心的微控制器/嵌入式微处理器销售额,可在2015年超越10亿美元。 Semicast指出,从历史记录来看,工业与医疗应用领域通常被视为对组件处理效能要求不高,但事实上,这些应用领域已经成为32/64位嵌入式微处理的大客户许多年。在过去,对嵌入式处理器的需求一般是以“类PC(PC-like)”应用的x86架构组件为主,例如AT
[医疗电子]
ARM·中断控制器
【本章内容】 之前在基础篇里面看过中断概念的视频,不过因为介绍的十分繁琐,效果不是很好。今天看了高级开发篇,决定把中断的内容简化一些。 我觉得可以把这篇笔记分成2个区,寄存器区和代码区。寄存器区方便以后查看,代码区方便对中断控制的分析 【代码分析】 @****************************************************************************** @ File:head.S @ 功能:初始化,设置中断模式、管理模式的栈,设置好中断处理函数 @**********************************************************
[单片机]
ARM指令中特殊符号意义
特殊符号 对应指令 含义 = DCB 分配一片连续的字节存储单元并用指定的数据初始化 & DCD 分配一片连续的字存储单元并用指定的数据初始化 % SPACE 分配一片连续的存储单元 ^ MAP 定义一个结构化内存表的首地址 # FILED 定义一个结构化内存表的数据域(经常和MAP一使 用,一个定义起始地址,一个定义长度) * EQU 为程序中的常量、标号等定义一个等效的字符名称, ! 地址更新,结果写回到Rn中,Rn不允许是R15 相当于IF ELSE ENDIF 其他: LDM中{ }为可选后缀,当指令为LDM且寄存器列表中包含R15,选用该后缀时表示:除了正常的数据传送之外,还将SPSR复制到CPSR。同时
[单片机]
从0开始学ARM-CPU原理,基于ARM的SOC讲解
一、计算机架构 在了解计算机架构之前,我们先来认识几位对计算机的发明做出关键共享的几位大佬。 1. 巴贝奇 机械计算机之父,英国贵族,曾孤军奋战下造出的第一台差分机,运算精度达到了6位小数,后来又设计了20位精度的差分机,其设计理念已经达到了机械设计登峰造极的境界。 1985~1991年,伦敦科学博物馆为了纪念巴贝奇诞辰200周年,根据其1849年的设计,用纯19世纪的技术成功造出了差分机2号。 巴贝奇堪称上个世纪最强大脑,他的大脑现保存在英国科学博物馆。 程序员的祖师奶奶Ada正是在和巴贝奇共同工作时提出了程序循环分支等等我们现在都习以为常的编程理念。 2. 图灵 被称为计算机科学之父,人工智能之父。1931年图灵
[单片机]
从0开始学<font color='red'>ARM</font>-CPU原理,基于<font color='red'>ARM</font>的SOC讲解
嵌入式Linux下ARM处理器与DSP的数据通信
摘要:本文通过一个开发实例详细说明如何通过DSP的HPI接口与运行Linux操作系统的ARM架构处理器进行数据通信。给出接口部分的实际电路和ARM-Linux下驱动程序的开发过程。 关键词:设备驱动程序 嵌入式Linux HPI ARM DSP 1 引言 基于ARM核心处理器的嵌入式系统以其自身资源丰富、功耗低、价格低廉、支持厂商众多的缘故,越来越多地应用在各种需要复杂控制和通信功能的嵌入式系统中。 内核源码开放的Linux与ARM体系处理器相结合,可以发挥Linux系统支持各种协议及存在多进程调度机制的优点,从而使开发周期缩短,扩展性增强。作为数字处理专用电路,DSP的数字信号处理能力十分强大,但对诸如任务管理、通信、
[嵌入式]
基于ARM7 SoC芯片的空调节能多工况分区及专家控制系统的实现
  空调技术对空气的处理过程具有很强的季节性,一年中至少可分为冬季、过渡季和夏季三个季节。由于季节不同,工况不同,空调过程也不同。本文介绍了以ARM7 SoC为核心构成多功能现场控制器,运行uClinux嵌入式操作系统,实现任务调度。其目的是为了使空调系统的运行与调节在保证满足功能指标(如舒适度)的情况下,尽量节约能源和安全运行。空调微机控制系统结构如图1所示。 1 系统硬件结构   系统硬件结构如图2所示。图中,微控制器采用AT91M55800A系列的ARM7 SoC芯片;I/O接口用来连接各种外部报警信号、限位开关和风机开关命令等;A/D接口用来连接温、湿度传感器的测量信号;D/A接口用来连接风阀开度信号等;显示器及键盘是
[单片机]
基于<font color='red'>ARM</font>7 SoC芯片的空调节能多工况分区及专家控制系统的实现
ARM7 LPC2378 远程升级----软中断SWI
我在这里,将我在学习这篇文章时遇到的疑问及理解和大家分享一下 LPC2300.S文件中的相关软中断代码如下: EXPORT SWI_Handler extern EnableIrqFunc ;使能中断函数名,用C语言实现 extern DisableIrqFunc ;禁止中断函数名,用C语言实现 SWI_Handler STMFD SP!, {R0,R12,LR} ;入栈 LDR R0, ;取指令 BIC R0,R0,#0xFF000000 ;取软件中断命令号 CMP R0,#0 ;和0比较,因为我的使能中断用了软件中断命令0,禁止中
[单片机]
<font color='red'>ARM</font>7 LPC2378 远程升级----软中断SWI
TMS320VC54系列EPROM的加载实现
    摘要: 文中介绍了TMS320VC5000系列DSP的各种加载方法。并结合实例,着重介绍了其中C5402的EPROM加载方式和实现过程,提出了实际中应注意的问题。另外,也对8位EPROM加载过程及自举表作了详细的介绍。     关键词: 数字信号处理器(DSP) 程序加载 TMS320VC54 自举表 DSP芯片(数字信号处理器)已成为人们日益关注并得到迅速发展的具有前关沿技术的一种集成电路,而且已得到越来越广泛的应用。TI公司推出的5000系列DSP具有高性能、低功耗等优良性能,一推出就得到了用户的欢迎。5000系列DSP被广泛应用于电信、雷达、仪器仪表、图像处理等许多方面。其应用范围的广泛性决定了
[嵌入式]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved