栈的规则:后进先出
栈是一段内存空间
push 寄存器 ;将某寄存器的值入栈
pop 寄存器; 将某寄存器的值出栈。

问题

1、cpu如何知道一段内存空间被当作栈使用
2、执行push和pop的时候,如何知道哪个单元是栈顶单元

回答

8086CPU中,有两个与栈相关的寄存器:
栈段寄存器SS -存放栈顶的段地址
栈顶指针寄存器SP -存放栈顶的偏移地址
——任何时刻,SS:SP 指向栈顶元素

push指令和pop指令的执行过程

push ax

  1. sp-=2
  2. 将ax中的内容送入ss:sp指向的内存单元处

    pop ax

  3. 将ss:sp指向的内存单元处的数据送入ax中

  4. sp+=2

image.png