因为出栈(push)与入栈(pop)的操作都是以字为单位进行的,所以栈中存放的都是字型数据,
字型数据是两个字节 就是2个连续的内存单元 组成一个字单元
正常情况下10000h~1ffffh的底部内存单元: 为 1000:FFFF
但是 栈中的数据是以字为单位的..字单元占2字节 所以用到2个内存单元
所以底部单元其实就是2个连续内存单元(字单元) 1000:FFFE 与 1000:FFFF
例子2:
初始化空栈 1000:999 , 栈顶就是1000:99A →→→ (空栈时,SP=底部单元地址 + 2)
push 入栈时 →→→ SP=SP-2
AX=1234 H push AX
1000:998 = 34 H 1000:999 = 12 H
将 1 - 10 当成一个空间. 是不是也需要在 10处 写入数据呢?
为什么 空栈时 SP要 = 底部单元地址+2 ? 实验一下就知道了:
如果你 SP指向 1000:999
当push 入栈的时候 , SP将会 等于 SP-2 处push 入数据
就是 从1000:997处写入 数据, 而数据只占2个内存单元, 1000:997 1000:998
那么 1000:999 将入不到数据 |