在MS-DOS中调试以下com文件时,我可以成功运行程序-g
并正常终止,但是当我跟踪它时-t 1000
,程序抛出非法操作异常并在+/- 800条指令后终止。我手动跟踪了该文件,但我看不出它为什么会中止(它确实将一些数据写入较低的内存区域,但这不应该影响调试器)。
可以在此处找到 COM 文件。
MS Debug 和 Freedos 都DEBUG.exe
给出了相同的结果(尽管它们在执行的不同点崩溃)。WinXP 虚拟 x86 环境和 dosbox 都给出了相同的结果。
关于为什么会这样的任何想法?
编辑:可以在此pastebin 中找到跟踪。
该跟踪是通过使用这些软件运行 FreeDOS 调试器的 Dosbox 进行的。
我查看了调试器中的 MASM 代码:通常不应将 INT3 用于单步跟踪。还要注意所有寄存器和标志都搞砸了。