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

debug 遇到的问题

护花死人 发布于 2010-09-01 22:25, 1427 次点击
只有本站会员才能查看附件,请 登录

为什么我输入debug 指令  G  运行  总是显示上面的
23 回复
#2
zklhp2010-09-02 08:50
无效指令 就是不合法的指令...
#3
az98416822010-09-02 18:22
程序指向 内存地址 00077
偶就看懂这点
其他的就不知道了
#4
东海一鱼2010-09-02 21:15
f0 LOCK指令引发异常。

#5
护花死人2010-09-02 22:07
在运行中输入DEBUG
-A
mov ax,1200
-g
就出现了这个
只有本站会员才能查看附件,请 登录
#6
护花死人2010-09-02 22:08
各位大虾们帮忙看下咯,谢谢了
#7
zklhp2010-09-02 22:41
Microsoft(R) Windows DOS
(C)Copyright Microsoft Corp 1990-2001.

C:\DOCUME~1\ADMINI~1>debug
-a
0C09:0100 mov ax,1200
0C09:0103
--g
 ^ Error
-g

Program terminated normally
#8
zklhp2010-09-02 22:42
用command 别用cmd
#9
zklhp2010-09-02 22:43
或 你的程序没结束 它接着运行了...
#10
护花死人2010-09-03 21:25
用COMMAND也不行,不会是硬件的问题吧,我刚买的电脑。
初学汇编还没开始就出这问题了,哭啊。
谢谢两位竹的关心。。。
#11
zklhp2010-09-03 21:47
你到底打了什么出了这东西 能发全么 呵呵
#12
东海一鱼2010-09-03 22:53
回复 5楼 护花死人
直接输
mov ah,4C
int 21
试试。

你只输一句mov ax,1200,后面执行的随机代码跳到了非法指令上引起异常。
#13
Alar302010-09-06 15:11
话说
会不会是系统问题哩?
#14
zklhp2010-09-06 17:03
不大可能

我的照着这个打上 怎么没问题啊 应该是没结束的问题 要有问题请发详细图片...
#15
az98416822010-09-06 17:25
楼主 可能同时 在运行其他程序
#16
护花死人2010-09-10 16:03
只有本站会员才能查看附件,请 登录
#17
护花死人2010-09-10 16:04
估计是系统问题吧
#18
zklhp2010-09-10 18:08
以下是引用az9841682在2010-9-6 17:25:08的发言:

楼主 可能同时 在运行其他程序

肯定跟这没关系
#19
zklhp2010-09-10 18:22
原因就是因为你没结束

同样问题的帖子有 我再给你展示一下为啥

只有本站会员才能查看附件,请 登录


看到了 内存中实际是这样的 也就是说 电脑不知道你的程序到哪结束 于是往下运行

又由于 a 这个命令会在随机的段中(貌似是)的100h位置后汇编 而不同段的内容肯定不相同 于是 运行的结果不同 当然有可能产生非法指令了 因为内容的内容是随机的 我运行的时候窗口一闪就没了

另 这是正常现象 是你程序写的不对 和病毒 其他程序没关系(一般来讲 当然 也有可能有 概率小 除非这个病毒BT的改debug程序)

为嘛和其他程序没关系呢 这个和16位汇编没关系 你想知道的话我简单说下

只有本站会员才能查看附件,请 登录


运行16位程序的时候会有这个东西在进程里 这玩意 就是虚拟8086的东西 而且 每运行一个16位程序都会有一个这个进程产生(貌似这是默认设置 也可以改注册表让所有的都在一个进程 不过这个没意义的 毕竟16位程序很少了) 也就是说 每个dos窗口都是一个独立的进程 都是一个8086处理器 (32位情况下 因为现在你用的电脑是32/64位)

因此 如果 你在另外的dos窗口里面输出内存数据 肯定没变 因为这是两个"电脑"了

还有一种可能 你在cmd 下运行的debug 貌似和在command(这东西就是为了兼容16位的) 下运行debug结果不同

我觉得正确的做法是 开始 运行 command 会出一个类似dos的窗口(和开始 运行 cmd 不同 不同在哪自己看 呵呵) debug 然后再写 至于怎么写结束 建议看书

学问挺大的 下面的内容不感兴趣就别看了 呵呵




#20
zklhp2010-09-10 18:23
当然还有其他的可能 比如 windows16位子系统漏洞一类的东东 不过罢 大概是这样的 呵呵
#21
zklhp2010-09-10 18:24
因为内容的内容是随机的 我运行的时候窗口一闪就没了

因为内存的内容是随机的 我运行的时候窗口一闪就没了
#22
zklhp2010-09-10 18:32
因此 如果 你在另外的dos窗口里面输出内存数据 肯定没变 因为这是两个"电脑"了

这句的意思是 如果你打开两个command窗口 对其中一个窗口的内存数据做修改 一般来讲 另一个窗口不受影响 故而 有些16位汇编书里面给的代码不能正确运行

有几点希望你记得

1 要学会搜索 学会用搜索引擎

2 知道 cmd 和command 的区别 (区别在哪自己找) 作为常识还是应该知道的

3 用debug写程序 要写结束 当然 用什么写程序都要写结束部分 要告诉电脑 你的程序结束了 否则 会产生不可预计的错误(也就是 可能窗口一闪就没了 可能非法指令 也可能正常 这就叫不可预计)


#23
护花死人2010-09-16 18:36
呵呵,谢谢斑竹的热心,我刚学习汇编,您的建议就是咱的路
1