ARM寄存器的8种寻址方式01
一、立即数寻址
操作数由指令本身给出
MOV r0,#0x0F //是所有寻址方式里面速度最快的,但是受到合法立即数的限制
立即数要求以#和$开头
十六进制,#后跟0x;十进制,#后直接加;八进制,#后跟0;二进制,#后跟0b
什么是合法立即数?ARM中要求立即数是一个8位的常数循环左移偶数位得到的数值。也就是说只要是在0x00~0xFF中的一个数,或者是在这个区间中的一个数循环左移偶数位的数值,都是合法立即数。
给大家一个快速判断方法:
1、如果该数在0x00~0xFF之间,它是一个合法立即数;
2、如果该数>0xFF,先把它换算成十进制数,如果能被4整除,它就是一个合法立即数,否则是一个非法立即数。
二、寄存器寻址
利用寄存器中的数值作为操作数进行操作
ADD r0,r1,r2
MOV r0,r1
是速度仅次于立即数寻址的操作。
三、寄存器移位寻址
操作数由寄存器中的数值移位得到,移位的方式由助记符的形式给出,移位数可以是一个立即数也可以是一个寄存器数值
MOV r1,#7
MOV r2,#1
MOV r0,r1,r2,LSL #2
四、寄存器间接寻址
把寄存器中的值当做是被操作的数值在存储器中的地址,操作数本身放在寄存器中。
LDR r0,[r1]
STR r0,[r1]
实验验证:
执行第一条指令(MOV r1,0x35000)后寄存器的状态值
当前内存状态
执行第二条指令(LDR r0,[r1])后寄存器状态
可以看到r0寄存器的值已经变成上面内存地址为0x35000处内存的内容了。由于内存中数据的存储是有大小端问题的,所以看上去不一样实际是一样的值。
此时寄存器状态
r0保存着地址为0x35000的存储器中的数值,r1立即数赋值0x35000,r2立即数赋值0x34000。
此时内存状态
STR r0,[r2]指令执行完之后,0x34000处状态
该处值已经修改为寄存器r0的值。
LDR和STR指令说明:
LDR 目的寄存器,【存储器地址】
用于从存储器地址处获取一个32位的数据送至目的寄存器,当程序计数器PC被当做目的寄存器时,存储器中取到的数据被当做跳转的目的地址来使用,从而实现程序的跳转。
STR 源寄存器,【存储器地址】
用于将源寄存器中的数据送入存储器地址处。
ARM寄存器的8种寻址方式01的更多相关文章
- ARM的九种寻址方式
文章目录 1.立即数寻址 2.寄存器寻址 3.寄存器间接寻址 4.寄存器偏移寻址 5.寄存器基址变址寻址 6.批量寄存器寻址 7.相对寻址 8.堆栈寻址 9.块拷贝寻址 寻址方式就是CPU根据指令中的 ...
- 【嵌入式开发】ARM 芯片简介 (ARM芯片类型 | ARM处理器工作模式 | ARM 寄存器 | ARM 寻址)
: 12MHz 晶振 对应 405 ~ 532 MHz 处理速度; -- : 16K 指令缓存, 16K 数据缓存; -- : 32KB 指令缓存, 32KB 数据缓存; (3) 内存接口对比 : 提 ...
- Arm寄存器介绍及汇编基础
一.ARM处理器支持7种工作模式 ① 用户模式(USR): 用于正常执行程序(The normal ARM program execution state) ② 快速中断模式(FIQ): 用于高速数据 ...
- ARM寄存器学习,王明学learn
ARM寄存器学习 ARM微处理器共有37个32位寄存器,其中31个为通用寄存器,6个为状态寄存器.但是这些寄存器不能被同时访问,具体哪些寄存器是可以访问的,取决ARM处理器的工作状态及具体的运行模式. ...
- ARM体系的7种工作模式
一.ARM体系的CPU有以下7种工作模式: 用户模式(usr) 大多数程序运行于用户模式 特权模式 系统模式(sys) 运行具有特权的操作系统任务 异常模式 中断模式(irq) ...
- ARM寄存器介绍
ARM处理器共有37个寄存器.其中包括:31个通用寄存器,包括程序计数器(PC)在内.这些寄存器都是32位寄存器.以及6个32位状态寄存器.但目前只使用了其中12位.ARM处理器共有7种不同的处理器模 ...
- X86主要的几种寻址方式
一.首先 P33: 严格来说有三种寻址方式 与数据有关的寻址方式 与转移指令或过程调用指令有关的寻址方式 与IO指令有关的寻址方式 这篇博客只讲1.2两条 二.然后 1. 与数据有关的寻址方式 数据, ...
- ARM 寄存器
ARM总共有37个寄存器 ARM寄存器物理分类 通用寄存器:1:不分组寄存器(R0--R7) 2:分组寄存器(R8-R14) 3:程序计数器(R15)(注意:又名pc指针) 程序状态寄存器:1:CPS ...
- ARM寄存器总结:
ARM有16个32位的寄存器(r0到r15). r15充当程序寄存器PC,r14(link register)存储子程序的返回地址,r13存储的是堆栈地址. ARM有一个当前程序状态寄存器:CPSR. ...
随机推荐
- LeetCode13 Roman to Integer
题意: Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range from ...
- Linux分区有损坏修复
如果Linux分区有损坏情况,启动有问题,不能正常进入文本或图形界面.那么一般会出现提示,需要输入Root密码登录后采用fsck -t ext3 -r /usr/local 修复 , /usr/loc ...
- [JavaEE] Eclipse中web-inf和meta-inf文件夹的信息
WEB-INF /WEB-INF/web.xml 你的Web应用程序配置文件,这是一个XML文件,其中描述了 servlet 和其他的应用组件配置及命名规则: /WEB- I ...
- MySQL(22):事务管理之 事务回滚
1. 在操作事务的时候,如果发现当前事务操作是不合理的,此时只要还没有提交事务,就可以通过回滚取消当前事务,接下来就针对事务的回滚进行详细讲解. 2. 为了演示回滚操作,在上一个笔记案例基础之上,此时 ...
- 【Linux/Ubuntu学习8】unbuntu 下播放swf文件
ubuntu是没有自带swf播放器的,需要自己安装. 这次介绍的这个播放器是gnome环境的. 安装: sudo apt-get install swfdec-gnome
- 关于TransactionScope出错:“与基础事务管理器的通信失败”的解决方法总结
遇到此问题先需确认几个问题: 1)MS DTC是否设置正确? 2)是否启用了防火墙?是否对DTC做了例外? 3)是否做了hosts映射?是否跨网域通信? 开发分布式事务,碰到一个错误“与基础事务管理器 ...
- JavaScript字符串分割方法
使用split('')方法.此方法与Java的字符串分割方法方法名一样.
- 谷歌浏览器-如何让Chrome默认以隐身模式启动?
桌面图标右键属性,在“目标”后添加参数“ --incognito”(注意是双短划线,不包括双引号,双短划线前加一空格)就可以直接以隐身模式启动Chrome浏览器
- ps怎么给文字描边
在设计的时候,单一的文字,往往对人没有多少的吸引力,这就需要我们在文字上加一些文字特效,比如说外发光,描边,投影,等等.在这里我们详细的介绍一下文字的输入,和文字描边的怎么增加,删除的经验.(这些方法 ...
- 人体时钟hone hone clock
摘要:一个由日本人设计的有意思的Flash时钟:人体时钟 hone hone clock .安装很简单,直接js导入即可,包括两种样式:透明背景和白色背景. 很可爱的一个设计,实现后效果如下: 使用方 ...