POP AX1.将SS:SP指向的内存单元处的数据送入AX中;2.SP=Sp+2, SS:SP指向当前栈顶下面的单元,以当前栈顶下面的单元为新的栈顶。注意:指针往下指了,当数据还是在那个字单元里面的,...
POP AX
1.将SS:SP指向的内存单元处的数据送入AX中;2.SP=Sp+2, SS:SP指向当前栈顶下面的单元,以当前栈顶下面的单元为新的栈顶。
注意:指针往下指了,当数据还是在那个字单元里面的,只是复制到AX寄存器里而已。
栈顶越界的问题:
SS和SP只记录了栈顶的地址,依靠SS和SP可以保证在入栈和出栈的找到栈顶。
可是,如何能够保证在入栈。出栈时,栈顶不会超出栈空间呢?
当栈满的时候再使用PUSH指令入栈,栈空的时候再使用POP指令出栈,都将发生栈顶超界的问题。
栈顶超界是危险的:因为我们既然将一段空间安排为栈,那么在栈空间之外的空间里很可能存放了具有其他用途的数据,代码等。这些数据,代码可能是我们自己的程序中的,也可能是别的程序中的。(毕竟一个计算机系统并不是只有我们自己的程序在运行)
8086CPU的工作原理:只考虑当前的情况:1.当前栈顶在何处
2.当前要执行的指令是哪一条
结论:我们在编程的时候要自己操心栈顶超界的问题,要根据可能用到的最大栈空间,来安排栈的大小,防止入栈的数据太多而导致的超界;
执行出栈操作的时候也要注意,以防栈空的时候继续出栈而导致的超界。
学员评论
null_me2014-10-08
乐之山南2014-08-03
ccav2013-09-19