2011-09-02 48 views
1

在Windows中,在Assembly中進行編程時(比如Visual Studio中的.cpp文件中的內聯彙編),開發環境可以保護我免於我自己的愚蠢錯誤。如果我在子程序退出時打開ESP寄存器,它會讓我知道發生了特定的事情,但它仍然保持陽光。當我不注意並且將代碼寫入無效內存位置時,唯一發生崩潰的是我自己的程序,我可以在幾秒鐘後立即返回到編輯狀態。在DOS中,這些錯誤總是需要重新啓動。在DOS下開發ASM的「安全網」工具(或技巧)?

我明白很多這是由於Windows具有與DOS(虛擬/保護模式與實模式)不同的內存模型,這就是爲什麼易於崩潰的Windows程序大部分很少會超出DOS他們自己的執行領域。

但我仍然想知道是否曾經存在過去或現在的DOS實用程序,它充當一種可執行進程的安全網絡,可減少整個DOS環境的機會(請閱讀:計算機本身,或者至少是運行DOS的模擬器)從低級開發人員錯誤中凍結?

+0

我只是不想在DOS上進行ASM開始並解決問題:P,DOS只是QDOS的快速重製,並不需要很多這些東西。有一點可以肯定的是,如果你陷入困境,必須重新啓動整個操作系統,你一定會犯一些錯誤。 –

回答

0

你可以用32位DOS Extender來編寫你的程序,比如DOS/4G,DOS/32等等 - 它啓動一個圍繞DOS的保護模式包裝器。這至少會捕獲無效指令和大部分內存錯誤,並打印出異常處理程序報告並將您轉儲回DOS shell。

您仍然可以使用許多DOS/BIOS中斷函數,但您實際上正在編寫32位程序而不是16位程序。