ARM中的特殊寄存器

时间:2018-08-06

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


上一篇:PIC单片机之AD转换
下一篇:学习ARM反汇编工具objdump和一个简单实例

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料