ARM中的特殊寄存器

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 是内存与数据之间的传送;

你可能感兴趣的:(嵌入式)