DOSBox-该程序无法在DOS模式下运行(汇编)

5
几周以来,我一直在学习汇编语言编程。今天,我安装了所有必要的应用程序来编译汇编程序。我安装了DOSBox 0.74、NASM(汇编器)和AFD(调试器)。我挂载驱动器并正确地查看了我的.asm文件。但是当我执行以下命令时:

nasm firstprogram.asm -o firstprogram.com

它给我返回了以下错误:This program cannot be run in dos mode但是,当我通过命令提示符(cmd)编译文件时,它可以正确地编译,然后我必须到DOSBox中运行AFD并调试.com文件。有任何想法为什么我在DOSBox上会收到此错误?

你在哪里执行第一个命令? - underscore_d
1
顺便问一下,这与C++有什么关系? - 3442
@KemyLand 没什么,我觉得可以把标签去掉。如果楼主认为有必要,可以加回来并附上适当的解释。 - Angew is no longer proud of SO
3个回答

10
你收到这个错误信息是因为你试图在虚拟的MS-DOS平台上运行Windows版本的nasm二进制文件。这是不支持的。相反,你应该下载并使用MS-DOS的nasm二进制文件。
解释:当你查看可执行文件(.exe、.dll和一些.com文件)的Portable Executable Format(可移植可执行文件格式)的详细信息时,你会遇到MS-DOS stub header(MS-DOS存根头)。这个头的主要功能是在16位真实模式操作系统(如MS-DOS)上执行时显示“此程序无法在DOS模式下运行”的消息。这个消息向用户发出警告,告诉他们正在尝试运行的程序与他们当前的系统不兼容。

1
或者在DOSBox之外运行NASM,只运行调试器和你在DOSBox内创建的实际的.com可执行文件。如果更方便的话,你也可以使用本地工具在DOSBox之外构建和编辑(例如,如果你的编辑器有一个用于构建和定位到触发错误的行的快捷键)。nasm -f bin是任何版本的NASM的默认选项,所以你仍然不需要任何额外的选项来构建一个DO二进制文件。 - undefined

1
你下载了能在Windows上运行的版本。当你打开特定版本的目录时,会有各种操作系统的子目录。
例如,在这里: https://www.nasm.us/pub/nasm/releasebuilds/2.12/ 如果你从/dos文件夹中下载它,你将能够在DOSBox中运行它;然而,如果你从/win32文件夹中下载它,你只能从Windows中运行它。

-7

你可能正在开发所谓的 控制台应用程序。它在控制台上运行,但底层需要 Windows 95 或更高版本,主要是为了支持 fat32


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接