初学者问题。请各位大大帮帮忙。

玄之丞 2007-01-16 04:26:25
请教高手

为什么下面这段代码在虚拟8086模式下会出错?
我用debug -t 单步执行到 pop ax 时,就出错了。
mov ax,2000h;
mov ss,ax
mov sp,0
add sp,4
pop ax
pop bx

改成这样就不会,为什么?
mov ax,2000h;
mov ss,ax
mov sp,4
NOP
pop ax
pop bx
...全文
147 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
玄之丞 2007-01-18
  • 打赏
  • 举报
回复
tks
yeLongBox 2007-01-17
  • 打赏
  • 举报
回复
我个人猜想:SP为0时会触发异常,这也是为什么程序的堆栈操作时时SP向低端扩展,以及在CPU保护模式下堆栈段属性ED=1(向低端扩展)的原因了,可能是想起到监控堆栈溢出的异常吧。
玄之丞 2007-01-17
  • 打赏
  • 举报
回复
mov sp,16 是不会出错的。

主要是什么DEBUG是会出错,我想不明白。
大熊猫侯佩 2007-01-16
  • 打赏
  • 举报
回复
mov sp,0
add sp,4

try to -〉

mov sp,16

21,459

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧