如何在DosBox上运行 32位TASM编译程序

How to run 32 bit TASM compiled program on DosBox

我目前正在编写汇编程序,这些程序使用 TASM 编译并使用 Turbo Linker linked 我正在寻找一种方法来编译和 link 程序作为 32 位程序集而不是一个 16 位。 我看到 TLINK 命令(它在 32 位模式下调用 Turbo 链接器)有一个开关 /3,但我似乎无法找到将程序编译为 32 位的方法TASM.

简而言之:我想知道如何使用 TASM 和 TLINK 通过 DosBox 环境编译一个简单的 32 位程序。

你不能。 MS-DOS 和 DOSBox 只能直接 运行 16 位实模式 MS-DOS 可执行文件。您可以使用 TASM 和 32 位版本的 TLINK 创建 32 位 Windows 可执行文件,但这些可执行文件只能在 Windows 下运行。 (您不需要通过 TASM 传递任何特殊选项,只需在您的程序集中使用 32 位 USE32 段即可。)

为了在 MS-DOS 下 运行 32 位代码,您需要使用 32 位 DOS extender。这些扩展程序通过向 MS-DOS 和 BIOS 提供的实模式接口提供保护模式接口,允许在 MS-DOS 下执行保护模式程序。通常这些 DOS 扩展程序用于生成包含 16 位 MS-DOS 可执行文件的文件,该文件加载加载 32 位程序的 DOS 扩展程序。

如何使用这样的 DOS 扩展器来创建一个使用 TASM 的 32 位程序,该程序将 运行 在 DOSBox 下取决于特定的 DOS 扩展器。您可能至少会使用不同的链接器,它可以创建 DOS 扩展程序可以加载的任何形式的可执行文件。有些可能根本无法与 TASM 一起使用。