4

我正在开发一个简单的 BIOS 重置器,只是为了学习。所以我有主文件,即菜单,名为 Reseta.com,是的,它是一个没有堆栈的微型模型。而且我有一个A.com,要重置的代码在哪里,所以我需要用我的主程序Reseta.com来执行A.com,A.com是用DOS的Debug编写的,是的,我在Windows 98中,但程序将在 MS-DOS 上运行。我尝试使用中断 21,例如服务 4Bh、3DH,但我还没有成功。最简单的方法是如何做到的?只需调用“A.com”文件,它就会从中断 21 以服务 0 返回 DOS。谢谢,为了更容易理解,我正在寻找类似 WinExec(); 的东西。在 WinAPI 中,当然,在汇编 16 位到 MS-DOS 中。

PS:我正在使用 TASM 和 TLINK /t 来编译代码...

4

1 回答 1

2

你听起来好像你可以自己做这件事,所以我只是给你一些提示。

A.com只不过是字节码。您可以简单地将文件加载到 RAM,然后跳转到它。确保代码从 4 字节边界开始。

或者,如果软重启就足够了,你可以简单地调用int 19h你的程序,它会跳转到引导加载程序并重新加载 DOS。

(还有,这里是Ralf Brown 的中断列表。这是一个真正的经典。它可能会在某些时候派上用场。请注意:它是巨大的。)

于 2017-01-01T01:02:18.643 回答