Appearance
指令码
msr和mrsmsr cpsr, shifter_operand:将一个立即数或者普通寄存器中的数据写到cpsr中msr Rd, cpsr:将cpsr中的数据写到Rd寄存器中
注意
User模式下不能修改CPSR的值,防止应用程序修改 CPU 状态,保护操作系统User模式下不能通过直接修改CPSR的数值切换到其他模式,想要实现其他模式的切换,必须要有对应的异常出现,才能进入特权模式
示例
- 整体修改:
asm
@读取cpsr的数值
mrs r1,cpsr
@给CPSR一个新的 数值,直接给值
msr cpsr,0XD0- 修改部分:
asm
@只修改模式位,其他位不变
@读取cpsr的数值
mrs r1,cpsr
@修改低5位
bic r1,r1,#0x1f
orr r1,r1,#0x10
msr cpsr,r1 @写回