SP(R13)
特殊寄存器
LR(R14)
1、当存在子程序时,保存有子程序的返回地址
2、当异常中断发生时,保存有异常模式的返回地址
PC(R15)
保存程序的当前地址
例 :(bootloader中start.S文件)
reset:
bl set_svc @设定svc模式,bl跳转至相应分支
bl disable_watchdog @关闭开门狗
set_sv
mrs r0, cpsr @Current Program Status Register(CPSR)当前程序状态寄存器 ,mrs(move register from special register)
bic r0, r0, #0x1f @按位取反
orr r0, r0, #0xd3 @按位取或
msr cpsr, r0 @mrs(move special register from register)
mov pc, lr @返回
#define pWTCON 0x53000000 @watchdog control register
disable_watchdog: @disable watchdog branch
ldr r0, =pWTCON @将地址装载至寄存器
mov r1, #0x0
str r1, [r0] @存储数据到内存
mov pc, lr @返回
注意:
mov 指令只能用于通用寄存的传送;
ldr 与str 是内存与数据之间的传送;
|