原因就是因为你没结束
同样问题的帖子有 我再给你展示一下为啥
看到了 内存中实际是这样的 也就是说 电脑不知道你的程序到哪结束 于是往下运行
又由于 a 这个命令会在随机的段中(貌似是)的100h位置后汇编 而不同段的内容肯定不相同 于是 运行的结果不同 当然有可能产生非法指令了 因为内容的内容是随机的 我运行的时候窗口一闪就没了
另 这是正常现象 是你程序写的不对 和病毒 其他程序没关系(一般来讲 当然 也有可能有 概率小 除非这个病毒BT的改debug程序)
为嘛和其他程序没关系呢 这个和16位汇编没关系 你想知道的话我简单说下
运行16位程序的时候会有这个东西在进程里 这玩意 就是虚拟8086的东西 而且 每运行一个16位程序都会有一个这个进程产生(貌似这是默认设置 也可以改注册表让所有的都在一个进程 不过这个没意义的 毕竟16位程序很少了) 也就是说 每个dos窗口都是一个独立的进程 都是一个8086处理器 (32位情况下 因为现在你用的电脑是32/64位)
因此 如果 你在另外的dos窗口里面输出内存数据 肯定没变 因为这是两个"电脑"了
还有一种可能 你在cmd 下运行的debug 貌似和在command(这东西就是为了兼容16位的) 下运行debug结果不同
我觉得正确的做法是 开始 运行 command 会出一个类似dos的窗口(和开始 运行 cmd 不同 不同在哪自己看 呵呵) debug 然后再写 至于怎么写结束 建议看书
学问挺大的 下面的内容不感兴趣就别看了 呵呵