回 帖 发 新 帖 刷新版面

主题:[讨论].com和.exe有什么区别???

这两个有什么区别?我只得是在寻址方式上,因为一个com文件,我编译成exe文件,就不能运行!!

回复列表 (共6个回复)

沙发

在下才疏学浅,我的对两者区别理解是
1.com文件是命令文件而.exe是可执行文件
2.com存储的只有命令(简单),.exe不光是命令,他的结构是PE文件结构(复杂)
3你的com文件可能是用debug直接写的
4有com转exe的程序

板凳

主要的区别只有一个: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 楼

楼上的能再补充说明一下.bin文件的区别么?

4 楼

对呀!!.bin呢?还有,我把.com加了个头文件,编译成.exe后,有很多错!不知具体怎么改呀!!

5 楼

bin文件的结构我不太了解,估计和com文件差不多,都是二进制代码,因为把有些bin直接引导扇区就可以引导了。不过现在的bin格式好象发展了。
要区分头文件和头部结构~这个是不一样的概念~
com是肯定可以改成exe的,把你的程序发上来看看~

6 楼


以小弟之见:)

如果 是书上说的话那个.com文件是一般的可执行文件
而.exe是动态的可执行的二进制文件

如果从编程的角度来说
.com的只段需要将code写好并且将 数据放在最后就可以了 

  不能用例如  seg等这些语句
而用.exe编的话 由于是动态的所以必须在写程序之前将
数据段的段地址赋给ds

呵呵 这些只是小弟的一些不成熟的见解,恳请高手更正和指点:)

我来回复

您尚未登录,请登录后再回复。点此登录或注册