遇到的一个实验错误,急!!

sagegz 2008-10-24 11:04:42
(1)将下面的程序保存为t1.asm文件,将其生成可执行文件t1.exe:
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
(2)用debug跟踪t1.exe的执行过程

当我跟踪运行到第4个t的时候就出现了弹出了一个对话框!
上面是这样说的:
C:\WINDOWS\system32\cmd.exe-debugt1.exe
NTVDM CPU 遇到无效的指令.
CS:0000 IP:0077 OP:f0 37 05 12 02选择"关闭"终止应用程序.
怎么回事?
...全文
82 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
sagegz 2008-10-26
  • 打赏
  • 举报
回复
谢谢两位高手!小弟在此结贴!
cnzdgs 2008-10-25
  • 打赏
  • 举报
回复
这是debug的bug,用debug不能调试sp过小的程序。
sagegz 2008-10-25
  • 打赏
  • 举报
回复
谢谢高人!还有就是什么是NT?
如果进入有XP操作系统的纯DOS系统下呢?
还有什么就9X系统?
小弟刚学汇编,继续请高人指教!
xlt123 2008-10-25
  • 打赏
  • 举报
回复
在基于NT的系统下执行这样的代码。难免会出问题
SS = 2000H
SP = 4
pop ax 也就是要将 [3,4]两字节读入AX
在NT下,低地址都是是读写保护的,不能访问。

可以在纯DOS系统下,或者9X系统下执行看看
sagegz 2008-10-25
  • 打赏
  • 举报
回复
如果还没人知道,我就只能周一去问老师了...
xlt123 2008-10-25
  • 打赏
  • 举报
回复
NT是微软的操作系统,new technology 的简称
win2000,winxp,等等都是基于nt构建的,可以理解为nt的升级版
xp下没有纯dos系统。
9x是对window95/windows98的简称
学习16位汇编还是用纯dos系统比较好,
在nt下,16位汇编基本什么都不能干。

可以下个虚拟机软件,在虚拟机里装一个dos
或者下个maxdos,装上也可以。
只有在纯dos下,你才可以为所欲为。
sagegz 2008-10-25
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 cnzdgs 的回复:]
这是debug的bug,用debug不能调试sp过小的程序。
[/Quote]
高人!谢谢!

21,500

社区成员

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

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