请教一个基本问题:PUSH和POP后SP的值

首先需要说明的是栈属于满递减棧即栈顶在高地址,栈底在低地址

pop,指针向高处走我要提取处的数据。那么pop之前sp=0002。先读取后sp+2

也就是说 sp 始终指向了有效数据的位置。

┅. 栈的执行过程下图:

SS:存放栈的段地址;
SP:存放栈的偏移地址;

3. 栈是空的是什么意思?

2. 把数据送入新的栈顶.

三. POP的操作过程

POP的过程就是与PUSH相反了

1. 把栈頂数据(SS:SP指向的数据)送入寄存器

四. 栈的越界问题需要我们自己小心注意, CPU并没有机制来通知或者避免栈的越界.

PUSH和POP指令可以在寄存器和内存之间傳送数据, 格式如下

PUSH和POP指令实质是一种内存传送指令, 可以灵活运用.


我要回帖

 

随机推荐