主题:[讨论].com和.exe有什么区别???
yn8202
[专家分:80] 发布于 2006-08-28 11:30:00
这两个有什么区别?我只得是在寻址方式上,因为一个com文件,我编译成exe文件,就不能运行!!
回复列表 (共6个回复)
沙发
fbihui [专家分:80] 发布于 2006-09-03 22:02:00
在下才疏学浅,我的对两者区别理解是
1.com文件是命令文件而.exe是可执行文件
2.com存储的只有命令(简单),.exe不光是命令,他的结构是PE文件结构(复杂)
3你的com文件可能是用debug直接写的
4有com转exe的程序
板凳
chenzep [专家分:3640] 发布于 2006-09-04 14:04:00
主要的区别只有一个:com程序没有头部控制信息,只有二进制代码;EXE程序会有一个头部控制信息,控制EXE的二进制代码。
这个主要区别就决定了他们之间会有许多的差别:
1:COM程序的入口地址是固定的,为100h;exe程序的人口地址可以随意,由end 后面的标号决定。
2:COM程序的数据和代码段是混合在一起的,因为COM没有能力识别数据段开始的位置。
3:COM程序只能有一个代码段,而不能有更多,这也决定了COM程序的大小最多为64K。
从本质上来看,COM和EXE保存的都是机器代码。因此,我们在某些情况下,把EXE程序的头部去了,并做适当的修改,就可以转化为COM程序;COM程序加多一个头部,就可以变成EXE程序。
EXE程序可以分为DOS下的EXE程序和WINDOWS下的EXE程序,两种程序的头部结构是不同的。其中WINDOWS下的EXE程序是采用PE结构的。
3 楼
peimichael [专家分:300] 发布于 2006-09-04 17:26:00
楼上的能再补充说明一下.bin文件的区别么?
4 楼
yn8202 [专家分:80] 发布于 2006-09-05 18:13:00
对呀!!.bin呢?还有,我把.com加了个头文件,编译成.exe后,有很多错!不知具体怎么改呀!!
5 楼
chenzep [专家分:3640] 发布于 2006-09-05 19:32:00
bin文件的结构我不太了解,估计和com文件差不多,都是二进制代码,因为把有些bin直接引导扇区就可以引导了。不过现在的bin格式好象发展了。
要区分头文件和头部结构~这个是不一样的概念~
com是肯定可以改成exe的,把你的程序发上来看看~
6 楼
轩儿 [专家分:60] 发布于 2006-09-06 18:58:00
以小弟之见:)
如果 是书上说的话那个.com文件是一般的可执行文件
而.exe是动态的可执行的二进制文件
如果从编程的角度来说
.com的只段需要将code写好并且将 数据放在最后就可以了
不能用例如 seg等这些语句
而用.exe编的话 由于是动态的所以必须在写程序之前将
数据段的段地址赋给ds
呵呵 这些只是小弟的一些不成熟的见解,恳请高手更正和指点:)
我来回复