ARM CM0 push和pop指令

《ARM Cortex-M0权威指南(中文) 高清扫描版.pdf》

<20071230123408_常用ARM指令集及汇编v1.0.12发行>
<cortex_m0_Generic_User_Guide.pdf> (good)
ARM CM0 push和pop指令

堆栈:处理器使用
满-自减 堆栈(full-descending stack),
堆栈指针指向最后一个入栈单元,且向低地址生长,系统复位后指针寄存器从地址0处装载内容;

ARM CM0 push和pop指令

PUSH 指令

ARM CM0 push和pop指令
ARM CM0 push和pop指令
ARM CM0 push和pop指令

push 将寄存器中的内容,保存到堆栈指令指向的内存上面。

例子:
比如当前 堆栈指针,指向 0x2000 0284

这个时候寄存器的值:
R0 = 0x1212 1212
R1 = 0x0000 1BC3
R2 = 0x0000 1BC3
R3 = 0x0000 0000

执行指令 PUSH {R0 - R3}

之后,
内存地址:
0x2000 0274的值为: 0x1212 1212 --------- R0
0x2000 0278的值为: 0x0000 1BC3 --------- R1
0x2000 027C的值为: 0x0000 1BC3 --------- R2
0x2000 0280 的值为: 0x0000 0000 --------- R3

执行之后 堆栈指针,指向的地址为: 0x2000 0274

POP 指令

ARM CM0 push和pop指令

ARM CM0 push和pop指令

ARM CM0 push和pop指令
例子:
内存:
0x2000 0294 = 0x1212 1212
0x2000 0298 = 0xEFEF EFEF
0x2000 029C = 0x0000 2079
0x2000 02A0 = 0x0100 0000

这个时候,堆栈指针 指向的地址为:0x2000 0294
那么 执行指令如下:
POP {R0 -R3}

执行之后,
R0 = 0x1212 1212
R1 = 0xEFEF EFEF
R2 = 0x0000 2079
R3 = 0x0100 0000

堆栈指针指向的位置为: 0x2000 02A4