1. ホーム
  2. assembly

[解決済み] DOSBox - このプログラムはDOSモードでは実行できません (アセンブリ)

2022-02-08 19:32:13

質問内容

数週間前からアセンブリ言語プログラミングを勉強していますが、今日、アセンブリプログラムをコンパイルするために必要なアプリケーションをすべてインストールしました。

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でこのようなエラーが発生するのか、何か心当たりはありますか?

解決方法を教えてください。

を実行している場合 nasm DOSBoxの内部では、何が起こるかはとても簡単です...。

互換性レイヤーに騙された!

の詳細を見ると ポータブル実行形式 (の内部フォーマット)。 .exe s, .dll および .com を使用します(最後に使用したものは コモンオブジェクトファイルフォーマット と呼ばれるものがあることに気づくでしょう。 MS-DOSスタブヘッダ . その目的は、次のようなメッセージを表示することです。 このプログラムはDOSモードでは実行できません。 16ビットでは リアルモード MS-DOSのようなオペレーティングシステムでは、プログラムが古いシステムと互換性がないことをユーザーに通知するためです。

を実行していることになります。 Windows nasm を搭載しています。 エムエスドス (仮想)プラットフォームです。を使ってみてください。 DOSバイナリ を使用すれば問題ありません。