问题 3.6
对于一个空栈,SS:SP 将指向一个怎样的位置?
先探讨内存中字型数据的情况。对于字型数据,仿佛存在一个字指针,字指针总是指向字型数据的低 8 位地址单元。本节前面讲过,出入栈操作都是以字为单位进行,可见栈顶元素就是一个字型数据;出入栈的操作对象是 SS:SP 指向的内存单元,可见 SS:SP 就是栈元素字型数据的字指针;因此 SS:SP 指向的正是栈顶元素字型数据的低 8 位地址单元而不是高 8 位地址单元。字型数据的低 8 位地址代表该字型数据的地址,可见表示字型数据的 [address] 与栈顶元素字型数据一一对应,而[address]与寄存器名表示的字型数据一一对应,所以寄存器名表示的字型数据也与栈顶元素字型数据一一对应。
假设栈中只存在一个栈顶元素 A,那么 SS:SP 将指向栈顶元素字型数据 A 的低 8 位内存单元;由于入栈是从高地址向低地址方向延伸的,因此栈为空时 SS:SP 将指向与 A 相邻的更高位地址处另一个字数据 B 的低 8 位内存单元,该内存单元的地址等于 A 的高 8 位单元地址加 1 —— 这就是空栈时 SS:SP 指向的内存单元。