CPU提供的栈机制
现今的CPU中都有栈的设计,8086CPU也不例外,8086CPU提供入栈和出栈指令,最基本的两个是PUSH(入栈)和POP(出栈),比如,push ax表示将寄存器ax中的数据送入栈中,pop ax表示从栈顶取出数据送入ax,8086CPU的r入栈和出栈操作都是以字为单位进行的。
我们可以将10000H—10000FH这段内存当作栈来使用

注意,字型数据用两个单元存放,高地址单元存放高8位,低地址单元存放低8位,看到所描述的push和pop指令,是否有一些疑惑,总结下来,大概是这两个问题。
- 其一,我们将10000H—1000FH这段内存当作栈来使用,CPU执行push和pop指令时,将对这段空间按照栈的后进先出的规则进行访问,但是,一个重要问题是,CPU如何知道10000H—1000FH这段空间被当作栈来使用?
- push ax等入栈指令执行时,要将寄存器中的内容放入当前栈顶单元的上方,成为新的栈顶元素,pop ax等指令执行时,要从栈顶单元中取出数据,送入寄存器中,显然,push,pop在执行的时候,必须知道哪个单元是栈顶单元,可是,如何知道?
解决方法:
- 8086CPU中,有两个寄存器,段寄存器SS和寄存器SP,栈顶的段地址存放