求教 1.为啥执行到pop bx之后没有执行push ax?
2.为啥sp 的值最后为0002,不应该是0006吗?
3.为啥内存单元的值会发生变化,也就是最后ax的值是20cd???
自学的,没老师指教,只能请教各位大神了
------解决方案--------------------
堆栈太小,就容易有这样那样的异常。换本教程吧,这样的题目太 2 了。
------解决方案--------------------
lz同志,首先“恭喜”你,你应该是学的在dos下的汇编语言编程,若是如此的话,请抛弃它。
1.为啥执行到pop bx之后没有执行push ax?
运行pop ax后就发生了异常,而不是pop bx,此时int 3表明dos7以前的运行环境的程序在window后期的dos环境运行,这个问题主要就是给ss=2000这条语句导致的后果。乱改ss:sp导致非法访问页表指向的内存,这个问题也会导致下面2个问题的发生。
2.为啥sp 的值最后为0002,不应该是0006吗?
估计是这段内存的page属性引起的,因为你把一段其它内存用于局部stack了
3.为啥内存单元的值会发生变化,也就是最后ax的值是20cd???
最终原因同问题1的回答
以上需要MS才能给出真正的答案 :)