Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to make a .com file using C/C++?

Tags:

c++

c

com

How can we make a .com file using C/C++? Is it possible?

Edit: I was able to successfully make a com file using darin's suggestions. But somehow the exe file of the following program cannot be converted to com file. I get the "File cannot be converted" message by exe2bin. I'm using Borland Turbo C++ 3.0. Any suggestions?

#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);
}
like image 373
RK. Avatar asked Nov 29 '22 20:11

RK.


2 Answers

In C, you must compile your program with the TINY memory model. Then you can use use EXE2BIN or a similar program to convert an EXE file to a COM file.

like image 132
Darin Dimitrov Avatar answered Dec 09 '22 11:12

Darin Dimitrov


That would depend on what you mean. Do you want to compile your program into a .com file? That would depend on your compiler, if it is possible at all.
If you are writing a compiler (or something like that), and want to produce a .com file from your own program, you should have a look at the COM article on Wikipedia, or use the NASM assembler to assemble to a .com file: nasm -o hello.com hello.asm.

like image 27
Lucas Jones Avatar answered Dec 09 '22 11:12

Lucas Jones