我也是第一次接触栈 不过很好理解的。不要死背概念要注重理解脑子里最好有 形象的逻辑模型
栈有2个操作 1个特性
2个操作是 入栈 出栈 特性是 后进先出
ss : sp指向栈顶 栈的单位是字 高位的字节和地位字节分别对应高低为的内存单元
内存单元的地址排列是 低到高的 所以栈地址也是 由低到高的
一段栈 越往上的部分 地址越低,反之则高
很明显 入栈的话 栈顶会像 低位地址靠近 sp则-2
出栈的话 栈顶想 高为地址靠近 sp+2
空的栈 就是栈中唯一的单元出栈了
比如 1000:0~1000:F 这段地址作为栈
如果栈是空的 那么 ss=1000 sp=10H
如果栈是满的 那么 sp=00
为什么呢?
因为栈的单位是字 一次出栈或者入栈 实际传送的是2个字节的数据 1个16段大小的栈 一次最多压入8个字 送出的字也是8个
但是 sp是什么?sp指向的是一个字节大小的内存单元,他指向的是栈顶,栈顶的含义就是
如果有入栈 那么入栈的数据的村地址 是在栈顶上的2个字节,通俗说,栈顶就是其他要入栈的栈底。下面是个简单示意图 从0~7 可能成为栈顶的地址
----------------出界
--0-------栈顶
--1
--2-------栈顶
--3
--4-------栈顶
--5
--6-------栈顶
--7
----------栈顶
------------------出界 |