怎样将c源程序生成.com形式的可执行文件

时间:2021-05-28 22:11:33
大部分的c源程序经过编译连接后生成的可执行文件是.exe形式的
那如何才能生成.com形式的可执行文件呢?

15 个解决方案

#1


以微小模式编译,如果你有exe2bin,就直接转换,如没有,用debug也形,如下:
debug test.exe
n test.com
w 100
q
就形成了.com文件。

#2


不行。这个方法做出来的com程序根本不能运行

#3


你试了的吗。

#4


使用Tlink编译,有个-t的参数,直接执行tlink会有说明的








#5



    先用 TCC 编译,应该使用 TINY 模式。 
    再用 Tlink -t 连接就可生成 .COM 文件了。


#6


用debug不行,除非你改exe文件头
可能SCUM()的方法对

#7


用debug的那个办法和用ren a.exe a.com有区别么?
你试过可以吗?你是忘了删exe吧!

#8


不对不对,你就算忘了删exe,也不应该执行到exe

#9


gz

#10


你们的方法我都试了
不行呀

#11


用debug,它装载EXE文件时,会自动处理文件头,微小模式的EXE装入后在内存中的映象就是一COM文件。

#12


不是所有的EXE都能转换成COM,好象COM可执行文件的大小不能超过64K(记不清了,请指正)

#13


ren比较有效!

#14


to 彭俊
你说的法子不行
说具体点,什么这个映象,那个映象的
到底怎么变

#15


只有以微小模式编译的EXE文件才能转换成COM文件,编译时先设置编译模式为TINY(微小),编译后生成EXE文件,用DEBUG载入后,DEBUG会进行一些处理,使其在内存中可以直接执行,由于微小模式只有一个代码段,那一个代码段就是一个COM文件。COM文件执行时,DOS直接将它装入内存,整个文件就是一个段,没有文件头,执行时不经过任何处理。所以可以用这个方法。这种方法生成的COM文件长度要长些,因为我不知道实际一个段有多长,只好把EXE文件中除了文件头的部分全写进了,但程序都能正常运行,因为两种文件装进内存中的结果是一样的。

#1


以微小模式编译,如果你有exe2bin,就直接转换,如没有,用debug也形,如下:
debug test.exe
n test.com
w 100
q
就形成了.com文件。

#2


不行。这个方法做出来的com程序根本不能运行

#3


你试了的吗。

#4


使用Tlink编译,有个-t的参数,直接执行tlink会有说明的








#5



    先用 TCC 编译,应该使用 TINY 模式。 
    再用 Tlink -t 连接就可生成 .COM 文件了。


#6


用debug不行,除非你改exe文件头
可能SCUM()的方法对

#7


用debug的那个办法和用ren a.exe a.com有区别么?
你试过可以吗?你是忘了删exe吧!

#8


不对不对,你就算忘了删exe,也不应该执行到exe

#9


gz

#10


你们的方法我都试了
不行呀

#11


用debug,它装载EXE文件时,会自动处理文件头,微小模式的EXE装入后在内存中的映象就是一COM文件。

#12


不是所有的EXE都能转换成COM,好象COM可执行文件的大小不能超过64K(记不清了,请指正)

#13


ren比较有效!

#14


to 彭俊
你说的法子不行
说具体点,什么这个映象,那个映象的
到底怎么变

#15


只有以微小模式编译的EXE文件才能转换成COM文件,编译时先设置编译模式为TINY(微小),编译后生成EXE文件,用DEBUG载入后,DEBUG会进行一些处理,使其在内存中可以直接执行,由于微小模式只有一个代码段,那一个代码段就是一个COM文件。COM文件执行时,DOS直接将它装入内存,整个文件就是一个段,没有文件头,执行时不经过任何处理。所以可以用这个方法。这种方法生成的COM文件长度要长些,因为我不知道实际一个段有多长,只好把EXE文件中除了文件头的部分全写进了,但程序都能正常运行,因为两种文件装进内存中的结果是一样的。