Assembly &引用;安全网“;在DOS下开发ASM的实用程序(或技巧)?

Assembly &引用;安全网“;在DOS下开发ASM的实用程序(或技巧)?,assembly,dos,Assembly,Dos,在Windows中,当在汇编中编程时——比如说,在Visual Studio中的.cpp文件中进行内联汇编——开发环境保护我不犯自己愚蠢的错误。如果我在一个子例程退出时敲击ESP寄存器,它会让我知道发生了特定的事情,但在其他情况下它仍然是阳光。当我没有注意到并让我的代码写入无效的内存位置时,唯一崩溃的是我自己的程序,我可以在几秒钟后立即返回编辑。在DOS中,这些错误总是需要重新启动 我知道这在很大程度上是由于Windows的内存模式与DOS不同(虚拟/保护模式与真实模式),这就是为什么容易崩溃的

在Windows中,当在汇编中编程时——比如说,在Visual Studio中的.cpp文件中进行内联汇编——开发环境保护我不犯自己愚蠢的错误。如果我在一个子例程退出时敲击ESP寄存器,它会让我知道发生了特定的事情,但在其他情况下它仍然是阳光。当我没有注意到并让我的代码写入无效的内存位置时,唯一崩溃的是我自己的程序,我可以在几秒钟后立即返回编辑。在DOS中,这些错误总是需要重新启动

我知道这在很大程度上是由于Windows的内存模式与DOS不同(虚拟/保护模式与真实模式),这就是为什么容易崩溃的Windows程序在大多数情况下很少在其自身执行范围之外造成损坏


但我仍然想知道,过去或现在是否存在过一种DOS实用程序,它可以作为正在进行的可执行文件的一种安全网,减少整个DOS环境出现的机会(阅读:计算机本身,或者至少是运行DOS的仿真器)防止因低级开发人员错误而冻结?

您可以在编写程序时考虑使用32位DOS扩展器,例如DOS/4G、DOS/32等,它会启动DOS周围的保护模式包装。这将至少捕获无效指令和大多数内存错误,打印异常处理程序报告并将您转储回DOS shell


您仍然可以使用许多DOS/BIOS中断功能,但实际上您编写的是32位程序,而不是16位程序。

我不想在DOS上执行ASM,问题解决了:p,DOS只是QDO的快速翻版,其实并不需要太多这些东西。有一件事是肯定的,如果你陷入困境必须重新启动整个操作系统,那么一段时间后你肯定会少犯错误。