定义:程序状态寄存器;
功能:反映数据运算状态,控制系统模式等;
特点:程序状态寄存器不属于通用寄存器;

关于CPSR的访问,ARM专门为其设立了两条指令:
MRS:CPSR到通用寄存器传递数据指令;
MSR:通用寄存器到CPRS传递数据指令;

(1)MSR 通用寄存器→CPSR
格式:MSR{条件} CPSR | SPSR_field,寄存器Rm或立即数
功能:恢复或改变CPSR的值。
CPRS | SPRS:尖括号内只能是CPRS或SPRS指令,这取决于当前处理器工作模式;
field域:用于设置CPSR中需要操作的位;(下面详细介绍)
CPSR位域:

field域的表示:
[31:24]为条件标志位域,用 f 表示
[23:16]为状态位域,用 s 表示
[15:8]为扩展位域,用 x 表示
[7:0]为控制位域,用 c 表示

表达式举栗:
MSR CPSR,R0 ;传送R0的内容到CPSR
MSR SPSR,R0 ;传送R0的内容到SPSR
MSR CPSR_c,R0 ;传送R0的内容到寄存器CPSR,但是仅修改CPSR的控制位域;

(2)MRS CPSR→通用寄存器;
格式:MRS{条件} 寄存器Rd,CPSR | SPSR
功能:读出CPSR的值;
应用的两种情况:
1. 异常处理或进程切换时,将CPSR的值保存起来
2. 改变CPSR的值的时,改变后在写回数据CPSR
举例:
MRS R0,CPSR
MRS R0,SPSR

MRS和MSR的配合使用可以对CPSR进行修改,修改步骤共分3步:
1. 读取CPSR的值
2. 修改
3. 写入CPSR的值
例程(SVC模式下):使能中断IRQ
MRS R1,CPSR ;读
BIC R1,R1,0x80 ;改,使能位7
MSR CPSR_c,R1 ;写

用户模式下可以读取CPSR,但是只能改变标识位f,只能在特权模式下修改状态寄存器;

基于ARM9程序状态寄存器CPSR相关推荐

  1. 【嵌入式开发】ARM 处理器工作模式 及 修改方法 ( 处理器模式 | 设置处理器模式 | 程序状态字寄存器 CPSR SPSR | 模式设置代码编写 | 设置 svc 模式 )

    一. 处理器工作模式相关介绍 1. 处理器模式简介 (1) 处理器工作模式分类 (2) 处理器不同工作模式区别 (3) Linux 系统运行的模式 (4) 特权模式 说明 (5) 异常模式 (6) 系 ...

  2. 程序状态寄存器PSR

    当前程序状态寄存器(CPSR)在所有处理器模式下都是可访问的,它包括条件标志位,中断标志位,当前处理器模式控制以及其他状态和控制位.每种异常模式都有一个保存程序状态寄存器(SPSR),当异常发生时用于 ...

  3. ARM的7种工作模式、37个通用寄存器、CPSR程序状态寄存器

    一.ARM 采用的是32位架构 1.ARM约定 Byte:8 bits Halfword:16 bits (2 byte) Word:32 bits (4 byte) 2.大部分ARM core 提供 ...

  4. IPSR(中断程序状态寄存器),IPSR包含了当前正在执行的中断服务程序编号,用于识别当前中断。

    TinyThread源码分析之中断 转载请注明来源:cuixiaolei的技术博客 https://github.com/xhawk18/TinyThread TinyThread 是基于Cortex ...

  5. 基于ARM9的车载导航系统的技术分析

    基于ARM9的车载导航系统的技术分 目 次 摘要 ------------------------------------ 3 1 嵌入式系统简介 -------------------------- ...

  6. 嵌入式Linux实验手册——基于ARM9 S3C2410实验平台.doc

    嵌入式Linux实验手册 基于ARM9 S3C2410 实验平台   1. 实验概述... 1 2. 实验环境配置... 1 2.1 开发主机配置... 1 2.2 实验板介绍... 1 2.3 实验 ...

  7. arm linux qt 输入法,基于ARM9和Qt的中文手写输入法的设计与实现

    摘要: 由于基于ARM9和Qt的嵌入式平台没有手写输入法,而且当前存在的手写体汉字识别核心应用在该平台上存在资源占用大.识别速度慢.开发不便等缺点,因此开发一个基于ARM9和Qt平台的中文手写输入法具 ...

  8. 单片机移频防啸叫_基于ARM9的防啸叫音频放大器的设计

    基于 ARM9 的防啸叫音频放大器的设计 吴慧娟 ; 陈新 [期刊名称] <微型机与应用> [年 ( 卷 ), 期] 2014(000)022 [摘要] In our usual life ...

  9. linux门禁软件,基于ARM9与Linux的门禁监控系统软件设计

    4.5 后台服务 门禁控制器启动后,通过持续检测读卡器是否有信号以验证是否需要进行大门的开启,当检测到读卡器有刷卡消息时,通过读取卡内信息,调用相应数据库进行匹配,若匹配成功,则一方面摄录此刻图像,保 ...

最新文章

  1. Swift中使用正则表达式
  2. js输出php文件大小,前端js实现文件的断点续传 后端PHP文件接收
  3. 单独运行shell脚本与crontab运行shell脚本的区别
  4. python目录下的文件夹_Python列出当前文件夹下文件的两种方法
  5. redis版本_全球首发|阿里云正式推出云数据库Redis6.0版本
  6. oem是代工还是贴牌_oem是什么意思,oem代工是什么意思?oem和odm区别有哪些?
  7. 前端基础8:HTML5新增标签及CSS3新属性 viewport 动画
  8. 我给曾经暗恋的高中女同学,用Python实现了她飞机上刷抖音
  9. mamp 扩展 php,Mac OS 下如何在 MAMP Pro 中安装php 扩展 zip
  10. highcharts去水印方法
  11. UE4:浅谈什么是GamePlay框架
  12. JS - 4 - 数组 Array - API(slice、splice、shift、)
  13. CENTOS5.5下使用Roundcube搭建 Webmail
  14. 计算机页面不稳定怎么办,电脑网速不稳定怎么解决_电脑网速时快时慢的处理方法...
  15. Helocobic-energy 小电视
  16. 北京市定额发票真假查询地址
  17. 鼠标不能再Linux命令界面滚动,在linux中,鼠标的滚轮怎么无法使用
  18. OS X系统 手势终极设置方法+BetterTouchTool详细设置中文翻译
  19. 无胁科技-TVD每日漏洞情报-2022-7-20
  20. 激光旋律(Laser melody)

热门文章

  1. 系统定位的问题,优化的简述
  2. ajax异步请求的代码,ajax 异步请求 代码
  3. 【陈工笔记】# LaTeX 中,图片如何不置顶? #
  4. python列表自定义顺序排序
  5. 七天学会html5和css3之重点标签介绍(20)
  6. 股价日内模式中蕴藏的选股因子
  7. 常用汇编数据传输指令
  8. 2022年全球市场电子用软铁氧体粉末总体规模、主要生产商、主要地区、产品和应用细分研究报告
  9. 微信小程序云开发查询(显示)数据库集合的指定字段
  10. 《数据修复技术与典型实例实战详解》——1.4 分区表的修复