ARM微处理器的9种寻址方式

发布者:清新风华最新更新时间:2016-08-14 来源: eefocus关键字:ARM  微处理器  寻址方式 手机看文章 扫描二维码
随时随地手机看文章
寻址方式是根据指令中给出的地址码字段来实现寻找真实操作数地址的方式。

ARM处理器具有9种基本寻址方式:
1.寄存器寻址;  

2.立即寻址;
3.寄存器移位寻址; 

4.寄存器间接寻址;
5.基址寻址;  

6.多寄存器寻址;
7.堆栈寻址;  

8.块拷贝寻址;
9.相对寻址。

1,寻址方式分类——立即寻址
立即寻址指令中的操作码字段后面的地址码部分即是操作数本身,也就是说,数据就包含在指令当中,取出指令也就取出了可以立即使用的操作数(这样的数称为立即数)。立即寻址指令举例如下: 
SUBS R0,R0,#1     ;R0减1,结果放入R0,并且影响标志位
MOV R0,#0xFF000  ;将立即数0xFF000装入R0寄存器

2,寻址方式分类——寄存器寻址
操作数的值在寄存器中,指令中的地址码字段指出的是寄存器编号,指令执行时直接取出寄存器值来操作。寄存器寻址指令举例如下: 
MOV  R1,R2     ;将R2的值存入R1 
SUB  R0,R1,R2    ;将R1的值减去R2的值,结果保存到R0

3,寻址方式分类——寄存器移位寻址
寄存器移位寻址是ARM指令集特有的寻址方式。当第2个操作数是寄存器移位方式时,第2个寄存器操作数在与第1个操作数结合之前,选择进行移位操作。寄存器移位寻址指令举例如下:
MOV R0,R2,LSL #3     ;R2的值左移3位,结果放入R0,       ;即是R0=R2×8 
ANDS R1,R1,R2,LSL R3  ;R2的值左移R3位,然后和R1相       ;“与”操作,结果放入R1

4,寻址方式分类——寄存器间接寻址
寄存器间接寻址指令中的地址码给出的是一个通用寄存器的编号,所需的操作数保存在寄存器指定地址的存储单元中,即寄存器为操作数的地址指针。寄存器间接寻址指令举例如下: 
LDR R1,[R2] ;将R2指向的存储单元的数据读出
   ;保存在R1中 
SWP R1,R1,[R2] ;将寄存器R1的值和R2指定的存储
   ;单元的内容交换

5,寻址方式分类——多寄存器寻址
多寄存器寻址一次可传送几个寄存器值,允许一条指令传送16个寄存器的任何子集或所有寄存器。多寄存器寻址指令举例如下: 
LDMIA R1!,{R2-R7,R12}  ;将R1指向的单元中的数据读出到
       ;R2~R7、R12中(R1自动加1) 
STMIA R0!,{R2-R7,R12}  ;将寄存器R2~R7、R12的值保
       ;存到R0指向的存储; 单元中
       ;(R0自动加1)
       
6,寻址方式分类——基址寻址
基址寻址就是将基址寄存器的内容与指令中给出的偏移量相加,形成操作数的有效地址。基址寻址用于访问基址附近的存储单元,常用于查表、数组操作、功能部件寄存器访问等。基址寻址指令举例如下: 
LDR R2,[R3,#0x0C]   ;读取R3+0x0C地址上的存储单元
     ;的内容,放入R2 
STR R1,[R0,#-4]!   ;先R0=R0-4,然后把R1的值寄存
     ;到保存到R0指定的存储单元 
       
7,寻址方式分类——堆栈寻址
堆栈是一个按特定顺序进行存取的存储区,操作顺序为“后进先出” 堆栈寻址是隐含的,它使用一个专门的寄存器(堆栈指针)指向一块存储区域(堆栈),指针所指向的存储单元即是堆栈的栈顶。存储器堆栈可分为两种: 
向上生长:向高地址方向生长,称为递增堆栈
向下生长:向低地址方向生长,称为递减堆栈
堆栈指针指向最后压入的堆栈的有效数据项,称为满堆栈;堆栈指针指向下一个待压入数据的空位置,称为空堆栈。 
所以可以组合出四种类型的堆栈方式:
满递增:堆栈向上增长,堆栈指针指向内含有效数据项的最高地址。指令如LDMFA、STMFA等; 
空递增:堆栈向上增长,堆栈指针指向堆栈上的第一个空位置。指令如LDMEA、STMEA等; 
满递减:堆栈向下增长,堆栈指针指向内含有效数据项的最低地址。指令如LDMFD、STMFD等;
空递减:堆栈向下增长,堆栈指针向堆栈下的第一个空位置。指令如LDMED、STMED等。

8,寻址方式分类——块拷贝寻址
多寄存器传送指令用于将一块数据从存储器的某一位置拷贝到另一位置。 如:
STMIA R0!,{R1-R7} ;将R1~R7的数据保存到存储器中。
   ;存储指针在保存第一个值之后增加,
   ;增长方向为向上增长。
STMIB R0!,{R1-R7} ;将R1~R7的数据保存到存储器中。
   ;存储指针在保存第一个值之前增加,
   ;增长方向为向上增长。

9,寻址方式分类——相对寻址
相对寻址是基址寻址的一种变通。由程序计数器PC提供基准地址,指令中的地址码字段作为偏移量,两者相加后得到的地址即为操作数的有效地址。相对寻址指令举例如下:
 BL SUBR1  ;调用到SUBR1子程序
 BEQ LOOP  ;条件跳转到LOOP标号处
 ...
LOOP MOV R6,#1
 ...
SUBR1 ... 
(end)

关键字:ARM  微处理器  寻址方式 引用地址:ARM微处理器的9种寻址方式

上一篇:ARM IO端口/内存
下一篇:ARM的2种工作状态,7种工作模式和37个寄存器

推荐阅读最新更新时间:2024-03-16 15:05

基于ARM-Linux的MiniGUI的仿真与移植
近几年,随着嵌入式系统的日益发展和32位嵌入式处理器以及图形显示设备的广泛应用,目标产品对GUI(图形用户界面)的需求越来越多。由于嵌入式系统一般实时性要求很高,所以嵌入式系统下的GUI需要具有轻量级型、占用资源少、高性能等特点。此外,嵌入式系统往往是一种定制设备,它对GUI的需求各不相同,因此,GUI必须也可以定制。而MiniGUI是一个非常适合实时嵌入式产品的高效、可靠、可定制、小巧灵活的图形用户界面支持系统,被广泛的应用于高端科技产品中。利用MiniGUI开发出良好的人机交互界面已成为嵌入式开发中的迫切需求。本文实现了在ARM-Linux环境下进行基于QVFB的MiniGUI的模拟开发、调试,通过在PC机上的仿真模拟,将
[单片机]
基于<font color='red'>ARM</font>-Linux的MiniGUI的仿真与移植
ARM寄存器简介
ARM处理器含有37个寄存器,这些寄存器包括以下两类寄存器。 (1)31个通用寄存器:包括程序计数器PC等,这些寄存器都是32位寄存器。 (2)6个状态寄存器:状态寄存器也是32位的寄存器,但是只使用了其中的12位。 1.通用寄存器 在ARM处理器的7种模式下都有一组对应的寄存器组。在任意时刻,可见的寄存器组包括15个通用寄存器R0~R14、一个或两个状态寄存器和PC。在所有的寄存器中,有些是各种模式下共用的同一个物理寄存器,有些是各种模式自己独立拥有的物理寄存器。详细如表1-3所示。 表1-3 ARM物理寄存器 用户模式 系统模式 特权模式 中止模式 未
[单片机]
ARM学习之中断体系结构
今天下午和晚上研究了一直在研究s3c2410中断体系结构,虽然以前老师上课也接触过,考试也考过,但仔细研究起来,还是有不少收获的。现记述如下: 1.什么是中断? 答:中断是CPU保证并发程序的一种机制。它使得CPU在执行程序的时候能够响应异常的情况发生。 其实,在CPU在运行的过程中,如何知道各类外设发生了某些没预期的事,比如说串口接受到了数据、USB接口中插入了设备、按下了某个按键。有两种方法,一个是前面所说的中断、另一个就是轮询方式。(就是不断的while循环查询)。从某种程度上说,这两种方式其实是一样的。前者是把查询的时间跨度缩小到每条指令执行结束后,即当某事件发生时,硬件会设置某个寄存器;CPU在每执行完一条指令时,通过硬
[单片机]
AMD官方宣布:我们要做ARM处理器了!
AMD今天凌晨做出了一个震惊业界的宣布:AMD将会设计基于64-bit ARM架构的处理器,首先从云和数据中心服务器领域开始。这将使AMD成为业内唯一同时拥有x86、ARM架构产品的厂商。 今年六月份的时候,AMD曾宣布会在明年的APU中引入基于ARM Cortex-A5架构的TrustZone硬件安全技术,并逐步扩展到整个产品线。虽然AMD说过会更广泛地尝试第三方IP,但我们一直以为最多不过是在特定模块上使用ARM的技术,没想到AMD直接要做纯粹ARM架构的处理器了。 AMD的首批ARM处理器预计于2014年问世,仍将披挂Opteron皓龙品牌。这种64位的多核心SoC会针对数据中心中份额最大的密集型高能效服务器进行优化
[单片机]
ARM落地深圳,中国自主芯片的春天来了
  5月14日,一件传言很久的大新闻终于尘埃落定:一家主导了世界上几乎所有 芯片 架构的公司要落户中国了。这家公司就是 ARM ,它将和厚安创新基金合资成立公司,然后提供 芯片 设计所需的知识产权、技术支持和培训。下面就随嵌入式小编一起拉来了解一下相关内容吧。 ARM落地深圳,中国自主芯片的春天来了    ARM 可以说是承包了地球上几乎所有的 芯片 架构,不管是你的手机还是kindle、系统是iOS还是Android。这样一家公司如今进入了中国这个芯片消费大国,中国的芯片厂商很开心,而芯片霸主高通可能此时正哭晕在厕所。   目前,绝大部分手机处理器架构都基于 ARM 架构,不论是高通、三星、华为,但ARM不亲手去做芯片
[嵌入式]
基于ARM嵌入式系统的ISP设计
应用程序的固化是嵌入式产品开发和生产过程中一个重要环节。基于ARM的嵌入式系统常用的程序固化方法是,用仿真器通过JTAG口将程序烧录到Flash里,在产品的开发阶段,使用仿真器几乎是必然的;然而到了产品的生产阶段,进行应用程序烧录或升级操作的往往是生产线上的工人,他们不易掌握仿真器的使用方法,而且在生产阶段也需要把JTAG调试口封住以防软件被窥视。笔者在使用意法半导体的STR730开发产品的过程中,设计了一种通过串口进行ISP(InSystemProgramming,在系统编程)的方案。该方案成本低,生产线使用起来也很方便,而且即使升级过程中发生掉电之类的意外也不会影响下一次升级,安全而可靠。 1 硬件连接 ISP方案的硬
[单片机]
基于<font color='red'>ARM</font>嵌入式系统的ISP设计
服务器的低功耗之争:英特尔也不甘示弱
    在当今标准的X86服务器市场的激烈竞争下,低功耗这一议题仿佛成为了现在服务器领域大家议论的主流话题,去年英特尔推出了为高密度微型服务器以及节能存储和网络设备打造的Atom S1200 产品家族,在X86舞台表现不佳的AMD也不甘示弱的开始转型,将所有希望全部寄托在服务器的低功耗上。   x86阵营的低功耗战幕刚刚揭开,在移动市场占据绝对优势的ARM又对低功耗服务器投出了橄榄枝,64位ARM架构服务器芯片“西雅图”使得ARM一下成为了服务器领域的宠儿。   ARM投递橄榄枝   分析公司Endpoint Technology的总裁Roger Kay认为:“ARM还没有对64位支持,这是为什么他们还不能处理普遍需求
[手机便携]
基于ARM核的ADμC7024在医疗电子中的应用
0 引言 随着信息技术的迅猛发展和人民生活水平的提高,极大地推动了医疗电子设备的发展,当今医疗电子设备的发展趋势是高精度、实时性、低功耗和小尺寸,作为医疗电子设备中核心地位的MCU(微处理器)也随着这一发展趋势向前不断衍变着。由早期的8位MCU发展到目前的32位RISC(精简指令集计算机)MCU。美国ADI公司根据市场的需要最新推出了一款基于ARM(高级精简指令集计算机)核的微处理器ADμC7024便是目前32位RISC MCU的杰出代表。ADμC7024卓越的处理能力、集成众多片上外围器件和芯片低功耗的特点,完全胜任目前医疗电子设备的需求及未来的发展目标。 本文以ADμC7024在医疗电子中监护产品脉搏血氧计的
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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