×
单片机 > 单片机程序设计 > 详情

基于ARM9程序状态寄存器CPSR

发布时间:2020-08-26 发布时间:
|

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

关于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,只能在特权模式下修改状态寄存器;



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
C51 特殊功能寄存器SFR的名称和地址