单片机
返回首页

ARM状态寄存器CPSR SPSR

2021-09-29 来源:eefocus

订阅专栏

ARM的状态寄存器格式如上


位[31:24]为条件标志位域,用f 表示;

位[23:16]为状态位域,用s 表示;

位[15:8]为扩展位域,用x 表示;

位[7:0]为控制位域,用c 表示;

显然,常用的只有条件标志位域f和控制位域c。


如果需要操作状态寄存器,比如切换处理器模式,就需要修改控制位域中的模式位。

MRS: 程序状态寄存器到通用寄存器的数据传送指令

MSR: 通用寄存器到程序状态寄存器的数据传送指令 


附:

M控制位控制处理器模式,具体含义如下:

M[4:0] 处理器模式    可访问的寄存器

ob10000 user     pc,r14~r0,CPSR

0b10001 FIQ      PC,R14_FIQ-R8_FIQ,R7~R0,CPSR,SPSR_FIQ

0b10010 IRQ      PC,R14_IRQ-R13_IRQ,R12~R0,CPSR,SPSR_IRQ

0B10011 SUPERVISOR    PC,R14_SVC-R13_SVC,R12~R0,CPSR,SPSR_SVC

0b10111 ABORT     PC,R14_ABT-R13_ABT,R12~R0,CPSR,SPSR_ABT

0b11011 UNDEFINEED    PC,R14_UND-R8_UND,R12~R0,CPSR,SPSR_UND

0b11111 SYSTEM     PC,R14-R0,CPSR(ARM V4以及更高版本)


***条件标志位***

N——本位设置成当前指令运算结果的bit[31]的值。当两个表示的有符号整数运算时,n=1表示运算结果为负数,n=0表示结果为正书或零。


Z——z=1表示运算的结果为零;z=0表示运算的结果不为零。对于CMP指令,Z=1表示进行比较的两个数大小相等。


C——下面分四种情况讨论C的设置方法:

在加法指令中(包括比较指令CMP),当结果产生了进位,则C=1,表示无符号运算发生上溢出;其他情况C=0。

在减法指令中(包括减法指令CMP),当运算中发生错位,则C=0,表示无符号运算数发生下溢出;其他情况下C=1。

对于包含移位操作的非加减运算指令,C中包含最后一次溢出的的位的数值。对于其他非加减运算指令,C位的值通常不受影响。


V——对于加减运算指令,当操作数和运算结果为二进制的补码表示的带符号数时,V=1表示符号为溢出;通常其他指令不影响V位。 

进入单片机查看更多内容>>
相关视频
  • RISC-V嵌入式系统开发

  • SOC系统级芯片设计实验

  • 云龙51单片机实训视频教程(王云,字幕版)

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

精选电路图
  • 光控电路设计与分析

  • IGBT模块通过控制门极阻断过电流

  • 比较常见的功率整流器和滤波电路

  • 基于M66T旋律发​​生器的电路图解析

  • 基于CA3193的热电偶放大器电路

  • 基于TDA1554的立体声放大器电路

    相关电子头条文章