原创 ARM 微处理器程序状态寄存器访问指令

2009-3-3 10:00 2369 4 4 分类: MCU/ 嵌入式

程序状态寄存器访问指令


ARM 微处理器支持程序状态寄存器访问指令,用于在程序状态寄存器和通用寄存器之间传送数据,程序状态寄存器访问指令包括以下两条:


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


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


1 MRS 指令


MRS 指令的格式为:


MRS{条件}  通用寄存器,程序状态寄存器(CPSR SPSR


MRS 指令用于将程序状态寄存器的内容传送到通用寄存器中。该指令一般用在以下几种情况:


  当需要改变程序状态寄存器的内容时,可用 MRS 将程序状态寄存器的内容读入通用寄存器,修改后再写回程序状态寄存器。


   当在异常处理或进程切换时,需要保存程序状态寄存器的值,可先用该指令读出程序状态寄存器的值,然后保存。


指令示例:


MRS R0CPSR    ;传送CPSR的内容到R0


MRS R0SPSR    ;传送SPSR的内容到R0


2 MSR 指令


MSR 指令的格式为:


MSR{条件}  程序状态寄存器(CPSR SPSR_<>,操作数


MSR 指令用于将操作数的内容传送到程序状态寄存器的特定域中。其中,操作数可以为通用寄存器或立即数。<>用于设置程序状态寄存器中需要操作的位,32 位的程序状态寄存器可分为 4 个域:


[3124]为条件标志位域,用 f 表示;


[2316]为状态位域,用 s 表示;


[158]为扩展位域,用 x 表示;


[70]为控制位域,用 c 表示;


该指令通常用于恢复或改变程序状态寄存器的内容,在使用时,一般要在 MSR 指令中指明将要操作的域。


指令示例:


MSR CPSRR0    ;传送R0的内容到CPSR


MSR SPSRR0    ;传送R0的内容到SPSR


MSR CPSR_cR0   ;传送R0的内容到SPSR,但仅仅修改CPSR中的控制位域

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
4
关闭 站长推荐上一条 /3 下一条