IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

com文件与exe文件的区别

PHPor 的blog 2011-10-12 00:18:56 累计浏览 2,619 次
本机暂存
COM文件是一种可执行程序的内存映象文件,它与只有16位地址线的8位机上的CP/M操作系统下的可执行程序结构相似。在COM程序执行过程中,除了调用DOS功能和 ROM BIOS 功能,以及用户特意安排外,段寄存器一般不发生变化。四个段寄存器具有同样的内容,都指向PSP,因此程序的大小仍限于64k以内。COM文件的入口必须是100H,而EXE文件可以有多个段。其中CS和SS以及IP和SP在程序装入时由DOS根据文件头中的信息初始化,ES和DS则指向PSP。EXE文件除了程序本身外,还要包括文件头(512字节的整数倍),因而所占磁盘空间大一些,装入也慢一些,但程序大小不受限制。EXE文件用debug修改后,无法直接写回磁盘上去。

    一、相同点

    二者都是DOS下的可执行文件。.COM文件是可执行的二进制代码文件,.EXE文件是可执行的浮动代码文件。

    二、不同点

    (1).COM文件一般比较小,其大小不能超过64KB,而.EXE文件一般比较大,可以超过64KB。

    (2).COM文件装入内存较快,而.EXE文件较慢。

    (3).COM文件一般比较简单,.EXE文件则比较复杂,编写的难度较大。

    (4).COM文件在执行时段寄存器含有相同的值,即代码、数据等混合在一起,而.EXE文件在执行时段寄存器含有不同的值,即代码、数据等驻留在不同的段中。

    (5)驻留在磁盘上的.COM文件既无文件头也没有任何其它的内部标识信息,而驻留在磁盘上的.EXE文件有一个文件头(也称作控制信息块)、一个重定位图以及DOS使用的其它信息。

    xxxx(6)对.COM文件来说,DOS的装入程序不能为其执行段重定位,而对.EXE文件来说,其执行段可以被重定位。

    (7).COM文件只能有一个段,而.EXE文件可以有一个以上的段。

    (8).COM文件不能有段堆栈,.EXE文件则可以有。

同分类推荐文章

  1. 科技爱好者周刊(第 401 期):如何赚到10亿美元 (2026-06-26 08:05:38)
  2. 如何做决策 - 从 Go 的一个 issue 说起 (2026-06-26 08:00:00)
  3. Seven Player:Windows上播放115网盘视频的增强工具 (2026-06-09 00:06:47)

查看更多 开发者 文章 →

建议继续学习

  1. PHP哈希表碰撞攻击原理 (累计阅读 5,046)
  2. 12行代码的浏览器DoS攻击分析及防御 (累计阅读 4,187)
  3. Abandonware(孤儿软件) 趣图赏析 (累计阅读 3,541)
  4. C++ 中的接口继承与实现继承 (累计阅读 3,515)
  5. Hash Collision DoS 问题 (累计阅读 2,930)