2009-04-18 1 views
3

C/C++을 사용하여 .com 파일을 만들려면 어떻게해야합니까? 가능한가?C/C++을 사용하여 .com 파일을 만드는 방법은 무엇입니까?

편집 : 나는 다린의 제안을 사용하여 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

원인 : 변환 할 수있는 프로그램은 다음 문제 중 하나가 있습니다 * 프로그램의 원점은 0100h이지만 엔트리 포인트는 다릅니다. * 프로그램에 세그먼트 수정이 필요합니다. * 프로그램 코드 및 데이터가 64KB보다 큽니다. * 프로그램에 선언 된 세그먼트가 두 개 이상 있습니다. * 파일이 유효한 .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++

등 기존 개발 도구를 실행할 수 있습니다 Bochs와, 같은 DOS 에뮬레이터를 실행하는 것을 고려할 수 있습니다
관련 문제