您当前的位置:五五电子网电子知识单片机-工控设备ARM单片机ARM 指令格式和时序(3) 正文
ARM 指令格式和时序(3)

ARM 指令格式和时序(3)

点击数:7193 次   录入时间:03-04 12:04:03   整理:http://www.55dianzi.com   ARM单片机
xxxx0001 0s001111 dddd0000 00000000 MRS

典型的汇编语法:

MSR SPSR_all, Rm ;aaaa = 1001
MSR CPSR_flg, #&F0000000 ;aaaa = 1000
MSRNE CPSR_ctl, Rm ;aaaa = 0001
MRS Rd, CPSR

设置 s 位时意味着访问当前特权模式的 SPSR,而不是 CPSR。只能在特权模式下执行这个命令的时候设置此位。

使用 MSR 来传送一个寄存器或常数到一个状态寄存器。

aaaa 位接受下列值:

值 意思

0001 设置有关的 PSR 的控制位。
1000 设置有关的 PSR 的标志位。
1001 设置有关的 PSR 的控制位和标志位(就是说所有现存的位)。

其他的值为将来的扩充而保留。
在寄存器形式中,源寄存器是 Rm。在立即数形式中,来源是 #b, ROR #2r。

R15 不应该被指定为 MRS 指令的源寄存器。

使用 MRS 来传送处理器的状态到一个寄存器。

dddd 位存储目的寄存器的编号;Rd 一定不能是 R15。

N.B. 指令编码对应于对应与操作码(opcode)是 10xx 并清除了 S 位的数据处理指令(就是测试指令)。

执行这些指令总是使用 1S 个周期。


未定义指令
xxxx0001 yyyyyyyy yyyyyyyy 1yy1yyyy 专属 ARM 2
xxxx011y yyyyyyyy yyyyyyyy yyy1yyyy

这些指令目前未定义。在遇到未定义指令时,ARM 切换到 SVC 模式(在 ARM 3 和以后)或 Undef 模式(在 ARM 6 和以后),把 R15 的旧有值放置到 R14_SVC (或 R14_UND)中并跳转到一个位置,在那里它希望找到解码这个未定义指令的代码并相应的执行它。

注意:

这些指令被文档为“未定义的”,原因是这种方式下它们进入未定义指令处理器陷阱。许多其他指令是以更宽松的方式未被定义的,而不说出它们做什么。 例如,下面形式的位模式(pattern):
xxxx0000 01xxxxxx xxxxxxxx 1001xxxx

与数据处理的指令、乘法、长乘法和 SWP 指令有关,但却不是其中一个的原因是:
数据处理指令的位 25 = 0 和位 4 = 1 时有寄存器控制的移位,所以必须位 7 = 0。
乘法指令的位 23:22 = 00。
长乘法指令的位 23:22 = 1U。
SWP指令的位 24 = 1。
这些指令只是简单的未定义做什么,但是上面列出的那些指令实际上定义为进入未定义指令陷阱,至少直到将来为它们找到某种用途。
注意“专属 ARM2”的未定义指令包括了在 ARM3/ARM2as 和以后成为 SWP 的那些指令。



上一页  [1] [2] 


本文关键字:暂无联系方式ARM单片机单片机-工控设备 - ARM单片机

上一篇:ARM定义