1
在8086模式下,栈是对字的操作。
一个字两个字节,那么你说SP应该指向低字节还是高字节?
这里用元素描述是再准确不过了。
2
SP指向栈顶元素,出栈,SP指针下移,要加2。
当栈中剩下最后一个元素的时候,SP指向最后一个元素,出栈,SP加2 。这很难理解么?
你设想不加2,那么下次入栈SP是从指向最后一个元素的位置上移,那么这时候栈中可用空间就少了一个元素位置的空间,也就是两个字节。除非你错误地使用栈才可以用到这两个字节,比如,入栈3个元素,出栈4个元素。这难道是你说的加不加2对PUSH和POP没什么影响?
3
初始一个栈不为空,那你的元素怎么来的?
书上所说的是,栈为空的时候,SS:SP指向不好理解,然后用指向最后一个元素再向下移动一个元素的方式说明栈空的时候SS:SP的指向,也就是SP加2。这不难理解啊。
你知道POP,PUSH指令是进行那些操作么?你把这些操作代入到一个实际的例子中去分析过么? |