专用指令
9.1 状态寄存器传送指令
访问(读写)CPSR寄存器
读CPSR:MRS R1,CPSR
写CPSR:MSR CPSR,#0x10 //User模式
–修改模式,设置状态等使能否
//在User模式下,不能修改CPSR,非特权模式
9.2 软中断指令
.text @ 表示当前为代码段
.global _start @ 将_start定义为全局符号
_start: @ 汇编的入口
@ 异常向量表
B MAIN
B .
B SWI_HANDLER
B .
B .
B .
B .
B .
@ 应用程序
MAIN:
MOV R13,#0x40000020
MSR CPSR,#0x10
MOV R1,#1
MOV R2,#2
SWI #1 @ 触发软中断
ADD R3,R1,R2
B stop
SWI_HANDLER:
STMFD R13!,{R1,R2,LR}
MOV R1,#10
MOV R2,#20
SUB R3,R2,R1
LDMFD R13!,{R1,R2,PC}^
stop: @ 死循环,防止程序跑飞
B stop
.end @ 汇编的结束
9.3 协处理器指令
操控协处理器的指令
ARM 协处理器指令可分为以下 3 类。
(1)协处理器数据操作。包括 CDP 指令。
(2)协处理器存储器访问指令。包括 LDC 指令(写入)和 STC 指令(读取)。
(3)协处理器寄存器传送指令。MRC:将协处理器中寄存器的数据传送到arm处理器中的寄存器 MCR:将arm处理器中的寄存器的数据传送到协处理器中寄存器
9.4 伪指令
指令:能够编译生成一条32bit机器码,并且能被CPU识别和执行
伪指令:本身不是指令,编译器可以将其替换成若干条指令
NOP == MOV R0,R0
LDR R1,=0x12345678 @可以将任意一个32位的数据放到寄存器中
@ LDR R1,=stop @ 将STOP的地址写入寄存器
LDR R1,stop @ 将STOP地址中的内容写入寄存器