如图所示,ARM每种工作模式除R0~R15共16个寄存器外,还有第17个寄存器CPSR,叫做 当前程序状态寄存器 CPSR寄存器格式: 在CPSR寄存器中主要用到了控制位,每个标志位如下图所示: 3.使用MSR指令写入数据 例: msr cpsr_c, #0xd2 @0xd2=1100 0010 禁止中断使能,进入中断模式 msr cpsr_c, #0x53 @0x53=0101 0011...
MRS R0, CPSR ; 将CPSR寄存器内容读出到R0 BIC R0, R0,#0x80 ; 清掉CPSR中的I控制位 MSR CPSR_c,R0 ; 将修改后的值写回 CPSR寄存器的对应控制域 MOV PC,LR ; 返回上一层函数 禁用IRQ中断: DISABLE_IRQ MRS R0 CPSR ; 将CPSR寄存器内容读出到R0 ORR R0, R0,#0x80 ; 设置CPSR中的I控制位 MSR ...
要将寄存器CPSR的bit[7]设置为0,但是不能影响其他位,所以必须先用msr读取出cpsr的值到通用寄存器Rn(n取值0~8),然后修改bit[7]设置为0,再将该寄存器的值设置到CPSR中。 代码如下: area reset,code code32 entry start bl enale_irq enale_irq mrs r0,cpsr bic r0,r0,#0x80 msr cpsr_c,r0 mov pc,l...
位[7:0]为控制位域,用c表示; 该指令通常用于恢复或改变程序状态寄存器的内容,在使用时,一般要在MSR指令中指明将要操作的域。 指令示例: MSR CPSR,R0 @传送R0的内容到CPSR MSR SPSR,R0 @传送R0的内容到SPSR MSR CPSR_c,R0 @传送R0的内容到SPSR,但仅仅修改CPSR中的控制位域 3.BIC BIC指令的格式为: BIC...
如图所示,ARM每种工作模式除R0~R15共16个寄存器外,还有第17个寄存器CPSR,叫做 当前程序状态寄存器 CPSR寄存器格式: 在CPSR寄存器中主要用到了控制位,每个标志位如下图所示: 3.使用MSR指令写入数据 例: msr cpsr_c, #0xd2 @0xd2=1100 0010 禁止中断使能,进入中断模式 ...
area init,code,readonly entry mrs r0,cpsr bic r0,r0,#0x1f orr r0,r0,0x10 msr cpsr_c,r0; b . end 答案 mrs r0,cpsr //将当前cpsr的状态为保存到r0中.bic r0,r0,#0x1f //bic,位清零指令.0x1f=00011111,相当于清除低5位. 刚好是模式位.orr r0,r0,#0xd3 //或指令.置模式位.0xd3=...
位[7:0]为控制位域,用c表示; 该指令通常用于恢复或改变程序状态寄存器的内容,在使用时,一般要在MSR指令中指明将要操作的域。如: MSR CPSR,R0 ;传送R0的内容到CPSR MSR SPSR,R0 ;传送R0的内容到SPSR MSR CPSR_c,R0 ;传送R0的内容到SPSR,但仅仅修改CPSR中的控制位域 ...
MRSR0,CPSR;将CPSR寄存器内容读出到R0 BICR0,R0,#0x80;清掉CPSR中的I控制位 MSRCPSR_c,R0;将修改后的值写回CPSR寄存器的对应控制域 MOVPC,LR;返回上一层函数 禁用IRQ中断: DISABLE_IRQ MRSR0 CPSR;将CPSR寄存器内容读出到R0 ORRR0,R0,#0x80;设置CPSR中的I控制位 ...
位[7:0]为控制位域,用c表示; 1. 2. 3. 4. 该指令通常用于恢复或改变程序状态寄存器的内容,在使用时,一般要在MSR指令中指明将要操作的域。 如: AI检测代码解析 MSR CPSR,R0 ;传送R0的内容到CPSR MSR SPSR,R0 ;传送R0的内容到SPSR MSR CPSR_c,R0 ;传送R0的内容到SPSR,但仅仅修改CPSR中的控制位域 ...
MSR CPSR_c,R0 ;将修改后的值写回CPSR寄存器的对应控制域 MOV PC,LR ;返回上一层函数 禁用IRQ中断: DISABLE_IRQ MRS R0 CPSR ;将CPSR寄存器内容读出到R0 ORR R0,R0,#0x80 ;设置CPSR中的I控制位 MSR CPSR_c,R0 ;将修改后的值写回CPSR寄存器的对应控制域 MOV PC,LR ;返回上一层函数 下表列出了不同...