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指令相关推荐

  1. 汇编指令msr_(转)ARM汇编学习笔记——MRS和MSR指令

    MRS,状态寄存器传送至通用寄存器类指令 功能:将状态寄存器的内容传送至通用寄存器. 格式: MRS{}Rd,CPSR}SPSR 其中: Rd  目标寄存器,Rd不允许R15. R=0  将CPSR中 ...

  2. ARM汇编:MRS和MSR指令

    ARM汇编:MRS和MSR指令 ARM中有两条指令用于在状态寄存器和通用寄存器之间传送数据. 一:下面先来说说状态寄存器 针对32位的ARM处理器,状态寄存器就是一个32位长的寄存器.每个位的含义如下 ...

  3. 嵌入式知识-ARM裸机-学习笔记(2):利用GPIO来控制LED(附mkv210_image.c文件解析)

    嵌入式知识-ARM裸机-学习笔记(2):利用GPIO来控制LED(附mkv210_image.c文件解析) 首先声明该博客是针对朱有鹏老师的嵌入式课程进行笔记的总结. 一.通过GPIO控制点亮LED( ...

  4. ARM汇编语言学习笔记

    汇编是对寄存器操作的,不知道一些和主控制器相关的寄存器的作用,根本无法理解某些指令,所以先自己学习相关寄存器和工作模式. 下面是<ARM 嵌入式体系结构与接口技术(Cortex-A8 版) &g ...

  5. 嵌入式知识-ARM裸机-学习笔记(9):SD卡启动详解(S5PV210)

    嵌入式知识-ARM裸机-学习笔记(9):SD卡启动详解(S5PV210) 一.SD卡介绍 1. SD卡背景知识和特点 SD卡.MMC卡.MicroSD.TF卡:这些卡其实内部就是Flash存储颗粒,比 ...

  6. 汇编指令msr_ARM汇编:MRS和MSR指令

    1.MSR和MRS指令介绍 MRS 指令:  对状态寄存器CPSR和SPSR进行读操作.通过读CPSR可以获得当前处理器的工作状态.读SPSR寄存器可以获得进入异常前的处理器状态(因为只有异常模式下有 ...

  7. I.MX6ULL ARM Linux学习笔记

    I.MX6ULL ARM Linux学习笔记 写在前面 S1:U-Boot S2:正点原子U-Boot编译 S3:U-Boot基本命令第1讲:help.bdinfo和环境变量命令 S4:U-Boot基 ...

  8. 嵌入式知识-ARM裸机-学习笔记(8):SoC定时器与看门狗(WDT)

    嵌入式知识-ARM裸机-学习笔记(8):SoC定时器与看门狗(WDT) 一.定时器 1. 定时器简介 定时器是SoC中最常见的外设 (1)定时器与计数器.计数器是用来计数的(每隔一个固定时间会计一个数 ...

  9. 嵌入式知识-ARM裸机-学习笔记(12):ADC模数转换器

    嵌入式知识-ARM裸机-学习笔记(12):ADC模数转换器 一.ADC 1. 什么是ADC ADC(analog digital converter):模数转换(也就是模拟量转换为数字量).由于CPU ...

最新文章

  1. 让C/C++程序一次编译,到处运行 (仅限Linux)
  2. Elasticsearch master节点的作用以及脑裂现象
  3. mysql ---- innodb-1- 体系结构、文件、表
  4. 如何以可视化方式显示 Angular 应用构建后的 bundle 文件大小
  5. python task done_python queue task_done()问题
  6. C++ 一个字符串只包含K和D。K表示杀人,D表示死亡。计算连续杀敌次数,阵亡则归零。
  7. docker swarm 实战
  8. setTimeout 和 setInterval 的区别
  9. python dataset[trans_python gdal根据图像坐标生成矢量框(含图像坐标转地理坐标)...
  10. BigInteger详解
  11. winpe加载raid_winpe里添加raid驱动
  12. 【PS】抠图教程(0基础快速入门)
  13. python opencv实现 12色相环、24色相环(基于RGB空间和基于HSV空间实现)
  14. MCTS (Monte Carlo Tree Search)
  15. 一级域名和二级域名的区别
  16. 2022南京商业贷款提前还款
  17. 【CSS】水滴动画|水滴融合效果
  18. 云平台运维的一些心得
  19. 网易云接口手机号验证码验证登录
  20. UnityShader镜面反射计算与反射光向量推导

热门文章

  1. simpread-机器人智能抓取 AI+Grasp
  2. 【unity】分享一个2D小游戏的完整制作教程——涂鸦跳跃demo
  3. openwrt编译smartdns_老大静态编译openwrt平台mipsel_24kc架构的smartdns时报错,求救!...
  4. python中的scipy基础知识_python中SciPy是什么?
  5. 自律的程序员生活是什么样的?
  6. 如何在 微软Microsoft 官网 下载 office365
  7. 【Plant Biotech. J.】MdBBX22–miR858– MdMYB9/11/12模块调节苹果皮中原花青素的生物合成
  8. 三维计算机动画的制作软件,几款常用的三维动画设计软件介绍
  9. sv package
  10. 微前端——single-spa源码学习