原创 MSR和MRS 指令

2009-2-7 18:00 3983 3 3 分类: MCU/ 嵌入式

今天学中断控制器,见到msr觉得陌生,就整理了一下。


1  状态寄存器传送至通用寄存器类指令
功能:将状态寄存器的内容传送至通用寄存器。


格式:
MRS{<条件码>}Rd,CPSR}SPSR
其中:
Rd      目标寄存器,Rd不允许R15。
R=0     将CPSR中的内容传送目的寄存器。
R=1     将SPSR中的内容传送至目的寄存器。


注释:
MRS与MSR配合使用,作为更新PSR的读-修改-写序列的一部分。例如:改变处理器或清除标志Q。注意:当处理器在用户模式或系统模式下,一定不能试图访问SPSR
这条指令不影响条件码标志。
例:
MRS   R0,CRSR              ;将CPSR中的内容传送至R0
MRS   R3,SPSR              ;将SPSR中的内容传送至R3


2  通用寄存器传送至状态寄存器传送指令
功能:将通用寄存器的内容传送至状态寄存器。


格式:
MSR{<条件码>CPSR_f|SPSR_f,<#ommed_8r>
MSR{<条件码>CPSR_<field>|SPSR_<field>,Rm
其中:
<field>字段可以是以下之一或多种:
C:控制域屏蔽字段(PSR中的第0位到第7位);
X:扩展域屏蔽字段(PSR中的第8位到第15位);
S:状态域屏蔽字段(PSR中的第16位到第32位);
F:标志域屏蔽字段(PSR中的第24位到第31位)。
immed_8r  值数字常量的表达式。常量必须对应8位位图。该位图在32位字中循环移位偶数数位。
Rm        源寄存器。


注释:
同前一条指令(MRS)。
例1:设置N、Z、C、V标志。
MSR    CPSR_f,#&f0000000            ;仅高位有效,其他必须为0
例2:
仅置位C标志,保留N、Z、V标志。
MRS    R0,CPSR                    ;将CPSR中的内容传送至R0
ORR    R0,R0,#&1f                ;置位R0的第29位
MSR    CPSR_c,R0                   ;再将R0中的内容传送至CPSR


来自http://blog.csdn.net/yxin1322/articles/610649.aspx

文章评论0条评论)

登录后参与讨论
我要评论
0
3
关闭 站长推荐上一条 /2 下一条