2009-04-18 17 views
3

C/C++を使用して.comファイルを作成するにはどうすればよいですか?出来ますか?C/C++を使用して.comファイルを作成するには?

編集:ダーリンの提案を使用して、comファイルを正常に作成できました。しかし、どういうわけか、次のプログラムのexeファイルは、comファイルに変換できません。 exe2binで "File can not convert"メッセージが表示されます。私はBorland Turbo C++ 3.0を使用しています。助言がありますか?

#include <dos.h> 
void interrupt (*oldint65)(); 
char st[80] = {"Hello World$"}; 
void interrupt newint65(void); 
void main() 
{ 
    oldint65 = getvect(0x65); 
    setvect(0x65, newint65); 
    geninterrupt (0x65); 
    geninterrupt (0x65); 
    geninterrupt (0x65); 
    setvect(0x65, oldint65); 
} 
void interrupt newint65() 
{ 
    _AH = 0x09; 
    _DX=(unsigned int)st; 
    geninterrupt (0x21); 
} 
+0

原因として、従来の開発ツールを実行できるようになり、このようなBochsのようDOSエミュレータを実行することを検討する必要があります変換するプログラムは、次のいずれかの問題があります: *プログラムの起点は0100hですが、エントリポイントは異なります。 *プログラムにはセグメントフィックスアップが必要です。 *プログラムコードとデータが64 KBを超えています。 *プログラムに複数の宣言セグメントがあります *ファイルは有効な.EXE形式のファイルではありません。 –

答えて

16

Cでは、プログラムをTINY memory modelでコンパイルする必要があります。その後、EXE2BINまたは同様のプログラムを使用して、EXEファイルをCOMファイルに変換することができます。

3

これは、あなたが意味することに依存します。 に、.comにコンパイルしますか?それが可能であれば、コンパイラに依存します。
あなたは、コンパイラ(またはそのような何かを)書いて、あなたの自身プログラムから.comファイルを作成したい場合、あなたはCOM article on Wikipediaを見て、または.comファイルに組み立てることNASMアセンブラを使用する必要があります。 nasm -o hello.com hello.asm

1

また、Windows XP/Vistaなどの非DOS(つまり最新の)オペレーティングシステムでは、完全に、または適切に動作する可能性が低いTSRプログラミングを行っているように見えることがあります。

あなたはまた、それが簡単なTC++

関連する問題