注册 登录
编程论坛 汇编论坛

关于王爽汇编教材中例程的问题,菜鸟求助!!

mxl800 发布于 2008-09-17 16:37, 1426 次点击
本人正在学习汇编,用的是王爽的汇编教材,在看到试验3时,将程序输入电脑,编译、连接并运行都没有问题,可就是在用debug跟踪调试时出了问题,具体如下:
第一、程序如下:

;实验程序

assume cs:codesg
codesg segment
       mov ax,2000H
       mov ss,ax
       mov sp,0
       add sp,4
       pop ax
       pop bx
       push ax
       push bx
       pop ax
       pop bx
       mov ax,4c00H
       int 21h
codesg ends
end

第二、错误现象:当调试到  pop ax这一句时,就会出现
“E:\asm\masm\debug.exe
 NTVDM CPU 遇到无效的指令。
 CS:0000 IP:0077 OP:f037 05 10 02 选择“关闭”终止应用程序。”

请高手指点这是为什么??
不胜感激!
6 回复
#2
mxl8002008-09-17 16:43
不是吧,就没有个达人肯指点一下迷津??求求你们了,教教我吧!
#3
ONEPROBLEM2008-09-17 17:36
[bo][un]mxl800[/un] 在 2008-9-17 16:43 的发言:[/bo]

不是吧,就没有个达人肯指点一下迷津??求求你们了,教教我吧!

你的问题实在是太难了!
你要有耐心等到达人来指点才行!
#4
ONEPROBLEM2008-09-17 17:45
由于水平有限,我做一个小猜测吧:
编译,运行都没问题,就在DEBUG跟踪的时候,问题就来了~~
这说明,这程序和单步中断有关!
由于,你的程序是在虚拟的DOS下执行的,如果在真正的实模式下,这个问题永远不会碰到.
既然是在虚拟DOS下,就存在保护的问题.执行单步中断时,CPU会将现场保护起来,以便程序的返回,其中就有入栈的指令:pushf  push CS  push IP
如果你把你的程序中的add sp,04改为add sp,6 或以上,应该就可以避开CPU去存取现场内容而引发保护问题了.

[[it] 本帖最后由 ONEPROBLEM 于 2008-9-17 17:46 编辑 [/it]]
#5
随心2008-09-17 20:14
学习了
#6
你们都要疼我哦2008-09-17 20:35
  求求楼主了,我也不会啊.
#7
zklhp2008-09-18 16:10
[bo][un]ONEPROBLEM[/un] 在 2008-9-17 17:45 的发言:[/bo]

由于水平有限,我做一个小猜测吧:
编译,运行都没问题,就在DEBUG跟踪的时候,问题就来了~~
这说明,这程序和单步中断有关!
由于,你的程序是在虚拟的DOS下执行的,如果在真正的实模式下,这个问题永远不会碰到.
既然是在 ...


这个现场保护我总不懂...
1