定义
栈是一种数据结构,LIFO后进先出
栈操作
问题
CPU如何知道一段空间被当做栈来使用?
段寄存器SS:存放栈顶的段地址
PUSH和POP时,如何知道哪个单元是栈顶单元?
寄存器SP :存放栈顶的偏移地址
任意时刻,SS:SP指向栈顶元素
push指令的执行过程
push ax
- sp = sp-2(栈从上到下,地址从低到高)
- 将ax中的内容送入ss:sp指向的内存单元处,ss:sp此时指向新栈顶
如果我们将1000H~1000FH这段空间当做栈,栈空间大小为16字节,初始状态栈是空的。
(1)此时,ss=1000H,sp=0010H(最高地址的下一个单元),此时没有栈顶元素
(2)栈最底部的字单元地址为1000:000E
pop指令的执行过程
pop ax
- ss:sp指向的内存单元内容复制到ax中
- sp = sp+2(栈从上到下,地址从低到高)