当前位置: 代码迷 >> 汇编语言 >> 新手求教有关问题
  详细解决方案

新手求教有关问题

热度:286   发布时间:2016-05-02 04:55:34.0
新手求教问题

求教 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才能给出真正的答案 :)
  相关解决方案