cpu提供的栈机制
1.8086CPU提供入栈和出栈指令,最基本的两个是PUSH(入栈)和POP(出栈)。比如,push ax表示将寄存器ax中的数据送入栈中,pop ax表示从栈顶取出数据送入ax。8086CPU的入栈和出栈操作都是以字为单位进行的。
2.CPU如何知道这段空间被当作栈来使用?如何知道那个单元是栈顶单元?
8086CPU中,有两个寄存器,段寄存器SS和寄存器SP,栈顶的段地址存放在SS中,偏移地址存放在SP中。任意时刻,SS:SP指向栈顶元素。push指令和pop指令执行时,CPU从SS和SP中得到栈顶的地址。
在执行push、pop指令需要两步操作:执行push时,CPU的两步操作是:先改变SP,后向SS:SP处传送;执行pop时,CPU的两步操作是:先读取SS:SP处的数据,后改变SP。
3.要小心栈顶超界的问题