在这里,我们对栈的研究只限于这个角度,栈是一种具有特殊访问方式的存储空间。它的特殊性在于,最后进入这个空间的数据,最先出去,后进先出(LIFO---last in first out)。
.CPU提供的栈机制
8086CPU提供入栈和出栈指令,最基本的如同push ax,表示将寄存器ax中的数据入栈,pop ax,表示将栈顶数据弹出送入ax,8086中的入栈和出栈操作都是以字为单位的。
CPU如何知道当前要执行的指令所在的位置?CS、IP中存放着当前指令的段地址和偏移地址。
CPU如何知道栈顶的位置?有两个寄存器,段寄存器SS和寄存器SP,栈顶的段地址存放在SS中,偏移地址存放在SP中。任意时刻,SS:SP指向栈顶元素。SS*16+SP=栈顶元素地址。8086CPU入栈时,栈顶从高地址向低地址增长。
.栈的越界问题
.push、pop指令