ARM中的寻址方式

ARM处理器支持9中不同的寻址方式。

1、移位寄存器寻址:

有5种移位方式:

LSL:逻辑左移。最低位用0补充,且移出的最后一位存放在cpsr中的C位中。

LSR:逻辑右移。最高位用0补充,且移出的最后一位存放在cpsr中的C位中。

ASR:算术右移。最高位用符号位补充,且移出的最后一位存放在cpsr中的C位中。

ROR:循环右移(不涉及到CPSR中的C位的循环右移)。且移出的最后一位存放在cpsr中的C位。

RRX:扩展循环右移(带有C位的右移)。只循环右移一位,且最高位用cpsr中的C位补充,移出的位存放在C位中。(先将C位补充到最高位,然后将移出的最低位放进C位中)

注意:如果指令中没有带上s后缀,那么移出的最后一位是不会写进到C中,也就是不会修改CPSR状态位。

2、寄存器间接寻址:

51单片机中间接寻址使用的是@符号,ARM中使用的是[]符号,表示间接寻址。

3、变址寻址:

变址寻址分为前索引寻址和后索引寻址。

LDR r0, [r1, #0x2]

这种属于前索引寻址,先计算r1+2的值,然后操作以此为地址的内存单元,指令完成后,r1的值是不变的。

LDR r0, [r1], #0x2

属于后索引寻址,先操作以r1为地址的内存单元,然后再将r1更新为r1+2。

4、多寄存器寻址:

只适用于STM和LDM这两条指令。这是ARM中特有的寻址方式,可以用来批量操作内存单元,从而提高效率。

在多寄存器寻址方式中,在{}中寄存器的编号是从小到大排列的。且在存储的时候是按照编号小的寄存器对应于低地址的存储器的规则。

5、堆栈寻址:(和STM和LDM指令一起用)

时间: 2024-10-24 10:33:29

ARM中的寻址方式的相关文章

ARM中13个必知知识点详解

ARM处理器的优点相信不用多说,大家都了解,其非常适合在嵌入式学习初期使用,在开始使用ARM进行实际操作之前,还是希望大家能够了解一些其使用过程中一些注意事项.接下来我们就一起来看看ARM中有哪些需要注意的事项吧. MAM使用注意事项 当改变MAM定时值时,必须先通过向MAMCR写入0来关闭MAM,然后将新值写入MAMTIM.最后,将需要的操作模式的对应值写入MAMCR,再次打开MAM.对于低于20MHz的系统时钟,MAMTIM设定为001.对于20MHz到40MHz之间的系统时钟,建议将Fla

ARM中的看门狗程序

在ARM中,有一个硬件部分叫WATCH DOG.这个硬件,一直在做一件事情:就是,从某一数值,一直数,各一段时间减一,隔一段时间减一,直到减到0的时候将会触发重启或者中断.而有时候,为了预防死机,我们在操作系统跑起来的时候会有一个特定的程序来做一件事情:减到特定是值的时候数值将会重新置到100.这样,看门狗将会循环往复做一件事情:一直数数,而不会死机. 这个程序叫做守护程序:又叫做喂狗程序. 看门狗的逻辑运算图如下: 今天,有看门狗来写了一个程序:隔一段时间来触发一个中断,每次中断来的时候,将会

ARM中的中断

在ARM中,事件发生将会触发中断,然而,中断并不会直接触发CPU,而是在由一个GIC,中断控制器来管理: 其中,中断分为?Supports three interrupt types: Private Peripheral Interrupt (PPI)一个中断源对应一个CPUSoftware Generated Interrupt (SGI)     CPU对应CPUShared Peripheral Interrupt (SPI)    一个中断源对应多个CPU 今天的例子是用SGI中断来实

如何将已部署在ASM的资源迁移到ARM中

使用过Azure的读者都知道,Azure向客户提供了两个管理portal,一个是ASM,一个是ARM,虽然Azure官方没有宣布说淘汰ASM,两个portal可能会在很长的一段时间共存,但是考虑到ARM提供了更多的功能,只有很少部分工作才会用到powershell完成,所以笔者建议以后大家尽量使用ARM,但是对于哪些已经使用ASM作为生产环境的用户想迁移到ARM中,应该怎么办,今天笔者就像大家介绍一下如何将云资源从ASM迁移到ARM中!!! 首先介绍一下现在迁移可以使用的一些服务与工具 1.平台

ARM中的总线

ARM中的总线用于不同部件之间的通信.有两种不同类型的设备连接到总线:ARM处理器,它是总线的主设备,拥有对总线的仲裁权,可以通过同一总线主动发起数据传输请求:外围器件,是总线的从设备,在总线上是被动的,只能对主设备发出的一个传输请求做出反应. ARM的总线结构称为AMBA(高级微控制总线结构),是ARM推出的开放式总线结构,是目前流行的一种工业标准偏上结构.AMBA2.0规范包含四个部分:AHB.ASB.APB和Test Methodology,主要应用的是AHB.APB. AHB主要用于高性

硬盘中磁头寻址方式

看了好多中介绍硬盘工作原理的文章,一直有几个问题困扰着我: 1)硬盘工作时转动,非工作时不转动 2)磁头寻址的轨迹是怎么样的 下边就这两个问题来说明下 1)待机是将当前处于运行状态的数据保存在内存中,机器只对内存供电,而硬盘.屏幕和CPU等部件则停止供电.由于数据存储在速度快的内存中,因此进入等待状态和唤醒的速度比较快.不过这些数据是保存在内存中 ,如果断电则会使数据丢失.休眠是将当前处于运行状态的数据保存在硬盘中,整机将完全停止供电.因为数据存储在硬盘中,而硬盘速度要比内存低得多,所以进入休眠

ARM 中必须明白的几个概念

文章具体介绍了关于ARM的22个常用概念. 1.ARM中一些常见英文缩写解释 MSB:最高有效位: LSB:最低有效位: AHB:先进的高性能总线: VPB:连接片内外设功能的VLSI外设总线: EMC:外部存储器控制器: MAM:存储器加速模块: VIC:向量中断控制器: SPI:全双工串行接口: CAN:控制器局域网,一种串行通讯协议: PWM:脉宽调制器: ETM:嵌入式跟踪宏: CPSR:当前程序状态寄存器: SPSR:程序保护状态寄存器: 2.MAM 使用注意事项: 答:当改变 MAM

[基于Android的ARM汇编语言系列]之四:ARM处理器的寻址方式

作者:郭嘉 邮箱:[email protected] 博客:http://blog.csdn.net/allenwells github:https://github.com/AllenWell 处理器的寻址方式是通过指令给出的地址码字段来寻找真实操作数地址的方式,ARM处理器支持9中寻址方式. 一 立即寻址 立即寻址指令后面的地址码部分为立即数(常量或常数),立即寻址多用于给寄存器赋值. 举例 MOV RO, #1234 指令执行后,R0=1234. 二 寄存器寻址 寄存器寻址中,操作数在寄存

ARM中的汇编指令

BIC:ARM指令,对某些位,清零.先取反再相与. asm("BIC  r2, r2, #0x1f");        ##对R2的低5位清零. ORR:ARM指令,逻辑或 asm("ORR r2, r2, #0x10");       ##R2逻辑与0x10. MRS:asm("MRS  r2, CPSR");          ##将CPSR的值加载到R2中. MSR:asm("MSR  CPSR, r2");