我们如何使用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);
}
答案 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 ++之类的传统开发工具