10

私のアセンブリ言語クラスでは、DPMI を使用して DOS プログラムを作成しています。残念ながら、私は常に 32 ビットの Windows マシンにアクセスできるわけではありません。私が使用するほぼすべてのコンピューターに Debian 仮想マシンがインストールされています。

DOSBox と DOSEMU の両方をインストールしました。DOS ではなく Linux でプログラムをアセンブルおよびコンパイルする方法はありますか? 私はnasmを使用しているので、DOS形式で組み立てるのに問題はないようです。ただし、C コードを使用してコンパイラを介して実行し、DOS 実行可能ファイルを取得するのに問題があります (gcc または MinGW を使用)。

これを行う方法はありますか、それとも DOS ですべてのツールをインストールする必要がありますか?

4

4 に答える 4

8

BCCは debian であり、8080 から 80386 までの適切なコードを生成できます。-Mdスイッチを使用して、MS-DOS バイナリを生成します。

于 2009-10-02T20:04:22.453 に答える
8

GCC を使用して DOS アプリケーションをコンパイルできるかどうかさえわかりません。昔、DJGPP (またはそのようなもの) と呼ばれる gcc コンパイラのバリアントがありました。しかし、私はそれを機能させたことはありません。

最近では、GCC を DOS 用にクロスコンパイルできる可能性はほとんどありません。

古い W​​atcom Compiler を試してみることをお勧めします。これはネイティブの DOS コンパイラであり、DPMI の実装も DosBox の下で魅力的に機能します。NASM でコンパイルされたオブジェクト ファイルとのインターフェイスも問題ではありません (私は数年間それを行いました)。

現在、コンパイラはオープン ソースになり、OpenWatcom と呼ばれています。

http://www.openwatcom.org/index.php/Main_Page

于 2009-03-15T14:29:31.363 に答える
4

おそらく最も簡単な方法は、タスクに標準の DOS ツールを使用することです。

DOSBOXは非常に優れたエミュレータです。

于 2009-03-15T15:10:23.217 に答える
4

DJGPP は驚くほど簡単にインストールできます。最低限必要な .ZIP は 3 つだけです。

  1. BNU219B.ZIP(アセンブラ、リンカ、ライブラリアン)
  2. GCC441B.ZIP(Cコンパイラ)
  3. DJDEV204.ZIP(libc、ヘッダー)

http://www.delorie.com/djgpp/getting.html

unzip *.zip -d c:\djgpp && 
set DJGPP=c:\djgpp\djgpp.env &&
path c:\djgpp\bin;%PATH%

gcc myfile.c -o myfile.exe

DOS 互換の出力を生成するには、DOSEMU で DOS ホストのコンパイラを使用するか (DOSBox ではありません!! 遅すぎてバグが多く、ゲーム専用です)、Linux ホストのクロス コンパイラ (DJ のサイトにはそのための RPM)。

ただし、100% 16 ビット コードが必要な場合は、別のもの (OpenWatcom など) を使用する必要があります。OpenWatcom は Linux (ベータ版!!) のホストとターゲット (共有ライブラリはありませんが、IIRC) もサポートしていますが、GCC で自分でコンパイルする必要がある場合があります。

于 2009-12-13T09:25:03.477 に答える