汇编指令mrs_(转)ARM汇编学习笔记——MRS和MSR指令
MRS,状态寄存器传送至通用寄存器类指令
功能:将状态寄存器的内容传送至通用寄存器。
格式:
MRS{}Rd,CPSR}SPSR
其中:
Rd 目标寄存器,Rd不允许R15。
R=0 将CPSR中的内容传送目的寄存器。
R=1 将SPSR中的内容传送至目的寄存器。
注释:
MRS与MSR配合使用,作为更新PSR的读-修改-写序列的一部分。例如:改变处理器或清除标志Q。注意:当处理器在用户模式或系统模式下,一定不能试图访问SPSR
这条指令不影响条件码标志。
例:
MRS R0,CRSR ;将CPSR中的内容传送至R0
MRS R3,SPSR ;将SPSR中的内容传送至R3
MSR,通用寄存器传送至状态寄存器传送指令
功能:将通用寄存器的内容传送至状态寄存器。
格式:
MSR{CPSR_f|SPSR_f,
MSR{CPSR_|SPSR_,Rm
其中:
字段可以是以下之一或多种:(位从右到左)
C:控制域屏蔽字段(PSR中的第0位到第7位);
X:扩展域屏蔽字段(PSR中的第8位到第15位);
S:状态域屏蔽字段(PSR中的第16位到第32位);
F:标志域屏蔽字段(PSR中的第24位到第31位)。
immed_8r 值数字常量的表达式。常量必须对应8位位图。该位图在32位字中循环移位偶数数位。
Rm 源寄存器。
注释:
同前一条指令(MRS)。
例1:设置N、Z、C、V标志。
MSR CPSR_f,#&f0000000 ;仅高位有效,其他必须为0
例2:
仅置位C标志,保留N、Z、V标志。
MRS R0,CPSR ;将CPSR中的内容传送至R0
ORR R0,R0,#&1f ;置位R0的第29位
MSR CPSR_c,R0 ;再将R0中的内容传送至CPSR
例子:设置cpu工作在超级保护模式(SVC32)
@set the cpu to SVC32 mode
mrs r0,cpsr
@把CPSR内容存入r0.使用了mrs指令:专用寄存器到通过寄存器的存取.
@CPSR当前程序状态寄存器格式如下:
@ 31 30 29 28 27 26 25 24 ~ ~ ~ 8 7 6 5 4 3 2 1 0
@ ___ ___ ___ ___ ___ ___ ___ ___ _ _ _ _ ___ ___ ___ ____ ____ ____ ____ ____
@| N | Z | C | V | * | * | * | * | * * * | I | F | T | M4 | M3 | M2 | M1 | M0 |
@
bic r0,r0,#0x1f
@bic指令(bit clear): r0:= r0 and (not op2).上边的指令目的是把bit0~bit4清零.
orr r0,r0,#0xd3
@r0:= r0 or 0xd3 . 以上三条指令执行后r0值为:**** **** **** **** **** ***** 11*1 0011
msr cpsr,r0
@把r0存于cpsr.注意:msr指令是专用的通用寄存器到特殊功能寄存器的指令与mrs对应
说明:通过上边的指令可以看到,实现了两个功能.1,disable 外部中断(IRQ)与快速中断(FIR).2,把系统设为SVC32状态(超级保护)即M4~M1=10011
原文:http://www.cnblogs.com/Nefe/p/6349715.html
汇编指令mrs_(转)ARM汇编学习笔记——MRS和MSR指令相关推荐
- 汇编指令msr_(转)ARM汇编学习笔记——MRS和MSR指令
MRS,状态寄存器传送至通用寄存器类指令 功能:将状态寄存器的内容传送至通用寄存器. 格式: MRS{}Rd,CPSR}SPSR 其中: Rd 目标寄存器,Rd不允许R15. R=0 将CPSR中 ...
- ARM汇编:MRS和MSR指令
ARM汇编:MRS和MSR指令 ARM中有两条指令用于在状态寄存器和通用寄存器之间传送数据. 一:下面先来说说状态寄存器 针对32位的ARM处理器,状态寄存器就是一个32位长的寄存器.每个位的含义如下 ...
- 嵌入式知识-ARM裸机-学习笔记(2):利用GPIO来控制LED(附mkv210_image.c文件解析)
嵌入式知识-ARM裸机-学习笔记(2):利用GPIO来控制LED(附mkv210_image.c文件解析) 首先声明该博客是针对朱有鹏老师的嵌入式课程进行笔记的总结. 一.通过GPIO控制点亮LED( ...
- ARM汇编语言学习笔记
汇编是对寄存器操作的,不知道一些和主控制器相关的寄存器的作用,根本无法理解某些指令,所以先自己学习相关寄存器和工作模式. 下面是<ARM 嵌入式体系结构与接口技术(Cortex-A8 版) &g ...
- 嵌入式知识-ARM裸机-学习笔记(9):SD卡启动详解(S5PV210)
嵌入式知识-ARM裸机-学习笔记(9):SD卡启动详解(S5PV210) 一.SD卡介绍 1. SD卡背景知识和特点 SD卡.MMC卡.MicroSD.TF卡:这些卡其实内部就是Flash存储颗粒,比 ...
- 汇编指令msr_ARM汇编:MRS和MSR指令
1.MSR和MRS指令介绍 MRS 指令: 对状态寄存器CPSR和SPSR进行读操作.通过读CPSR可以获得当前处理器的工作状态.读SPSR寄存器可以获得进入异常前的处理器状态(因为只有异常模式下有 ...
- I.MX6ULL ARM Linux学习笔记
I.MX6ULL ARM Linux学习笔记 写在前面 S1:U-Boot S2:正点原子U-Boot编译 S3:U-Boot基本命令第1讲:help.bdinfo和环境变量命令 S4:U-Boot基 ...
- 嵌入式知识-ARM裸机-学习笔记(8):SoC定时器与看门狗(WDT)
嵌入式知识-ARM裸机-学习笔记(8):SoC定时器与看门狗(WDT) 一.定时器 1. 定时器简介 定时器是SoC中最常见的外设 (1)定时器与计数器.计数器是用来计数的(每隔一个固定时间会计一个数 ...
- 嵌入式知识-ARM裸机-学习笔记(12):ADC模数转换器
嵌入式知识-ARM裸机-学习笔记(12):ADC模数转换器 一.ADC 1. 什么是ADC ADC(analog digital converter):模数转换(也就是模拟量转换为数字量).由于CPU ...
最新文章
- 让C/C++程序一次编译,到处运行 (仅限Linux)
- Elasticsearch master节点的作用以及脑裂现象
- mysql ---- innodb-1- 体系结构、文件、表
- 如何以可视化方式显示 Angular 应用构建后的 bundle 文件大小
- python task done_python queue task_done()问题
- C++ 一个字符串只包含K和D。K表示杀人,D表示死亡。计算连续杀敌次数,阵亡则归零。
- docker swarm 实战
- setTimeout 和 setInterval 的区别
- python dataset[trans_python gdal根据图像坐标生成矢量框(含图像坐标转地理坐标)...
- BigInteger详解
- winpe加载raid_winpe里添加raid驱动
- 【PS】抠图教程(0基础快速入门)
- python opencv实现 12色相环、24色相环(基于RGB空间和基于HSV空间实现)
- MCTS (Monte Carlo Tree Search)
- 一级域名和二级域名的区别
- 2022南京商业贷款提前还款
- 【CSS】水滴动画|水滴融合效果
- 云平台运维的一些心得
- 网易云接口手机号验证码验证登录
- UnityShader镜面反射计算与反射光向量推导
热门文章
- simpread-机器人智能抓取 AI+Grasp
- 【unity】分享一个2D小游戏的完整制作教程——涂鸦跳跃demo
- openwrt编译smartdns_老大静态编译openwrt平台mipsel_24kc架构的smartdns时报错,求救!...
- python中的scipy基础知识_python中SciPy是什么?
- 自律的程序员生活是什么样的?
- 如何在 微软Microsoft 官网 下载 office365
- 【Plant Biotech. J.】MdBBX22–miR858– MdMYB9/11/12模块调节苹果皮中原花青素的生物合成
- 三维计算机动画的制作软件,几款常用的三维动画设计软件介绍
- sv package
- 微前端——single-spa源码学习