如何使用C / C ++制作.com文件?

时间:2009-04-18 15:27:22

标签: c++ c com

我们如何使用C / C ++制作.com文件?有可能吗?

编辑:我能够使用darin的建议成功制作一个com文件。但不知何故,以下程序的exe文件无法转换为com文件。我得到exe2bin的“文件无法转换”消息。我正在使用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);
}

3 个答案:

答案 0 :(得分:16)

在C中,您必须使用TINY memory model编译您的程序。然后,您可以使用use EXE2BIN或类似程序将EXE文件转换为COM文件。

答案 1 :(得分:3)

这取决于你的意思。您是否要将程序编译为 .com文件?如果可能的话,那将取决于你的编译器。
如果您正在编写编译器(或类似的东西),并希望从自己的程序生成.com文件,您应该查看COM article on Wikipedia,或者使用NASM汇编程序汇总到.com文件:nasm -o hello.com hello.asm

答案 2 :(得分:1)

此外,值得指出的是,您似乎正在进行TSR编程,这种编程不太可能在非DOS(即现代)操作系统(如Windows XP / Vista)上完全或甚至正常工作。

您可能需要考虑运行诸如bochs之类的DOS模拟器,这也可以更轻松地运行诸如TC ++之类的传统开发工具