ARM指令集-程序状态寄存器访问指令

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

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

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

1、 MRS 指令

MRS 指令的格式为:

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

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

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

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

指令示例:

MRS R0 , CPSR ;传送 CPSR 的内容到 R0

MRS R0 , SPSR ;传送 SPSR 的内容到 R0

2、 MSR 指令

MSR 指令的格式为:

MSR{条件} 程序状态寄存器(CPSR 或SPSR)_<域>,操作数

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

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

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

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

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

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

指令示例:

MSR CPSR , R0 ;传送 R0 的内容到 CPSR

MSR SPSR , R0 ;传送 R0 的内容到 SPSR

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

 



  ARM公司| ARM 与单片机| ARM处理器| arm linux gcc| arm linux gdb| 三星ARM| arm芯片| ARM MMU| arm Vxworks|
arm bootloader|GPRS DTU|PC104 |硬盘播放机方案

Copyright © 2005-2008 All Rights Reserved
ARM开发板网 版权所有