首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 汇编语言 >

新手求教有关问题

2013-04-12 
新手求教问题求教 1.为啥执行到pop bx之后没有执行push ax?2.为啥sp 的值最后为0002,不应该是0006吗?3.为

新手求教问题
新手求教有关问题新手求教有关问题
求教 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才能给出真正的答案 :)

热点排行