11_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 中的控制位域

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值