zoukankan      html  css  js  c++  java
  • 【转载】DOS下COM文件和EXE文件的比较

    【来源】http://www.cnsharenet.com/DOS/f/dft/dexecom.htm

         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修改后,无法直接写回磁盘上去。

    COM文件和EXE文件的比较
    比较项
    COM程序
    EXE程序

    最大尺寸
    65536字节减PSP的256字节以及堆栈的2字节
    没有限制
    入口
    PSP:100H
    由END语句的参数指
    定包含入口的代码段
    入口CS
    PSP
    入口在所在段中的偏移
    入口IP
    100H
    PSP
    进入时的DS
    PSP
    PSP
    进入时的ES
    PSP
    具有STACK属性的段
    进入时的SS
    PSP
    具有STACK属性段的长度
    进入时的SP
    0FFFEH或离高允许使用内存高端-2
    初始化或未初始化
    进入时堆栈
    压入一个值为0的字
    由具有STACK属性的段定义
    堆栈大小
    65535字节减PSP长度(256字节)减可执行码长度
    NEAR或FAR
    子程序调用
    NEAR
    建议用 INT 21H 的 4CH
    退出方法
    建议用 INT 21H 的 4CH 也可用 near RET 或 INT 20H
    如果用户已做了初始化
    也可用 far RET
    文件长度
    程序本身长度
    程序长度加文件头
    (512字节的整数倍)


    一、相同点
    二者都是DOS下的可执行文件。.COM文件是可执行的二进制代码文件,.EXE文件是可执行的浮动代码文件。
    二、不同点
    (1).COM文件一般比较小,其大小不能超过64KB,而.EXE文件一般比较大,可以超过64KB。
    (2).COM文件装入内存较快,而.EXE文件较慢。
    (3).COM文件一般比较简单,.EXE文件则比较复杂,编写的难度较大。
    (4).COM文件在执行时段寄存器含有相同的值,即代码、数据等混合在一起,而.EXE文件在执行时段寄存器含有不同的值,即代码、数据等驻留在不同的段中。
    (5)驻留在磁盘上的.COM文件既无文件头也没有任何其它的内部标识信息,而驻留在磁盘上的.EXE文件有一个文件头(也称作控制信息块)、一个重定位图以及DOS使用的其它信息。
    (6)对.COM文件来说,DOS的装入程序不能为其执行段重定位,而对.EXE文件来说,其执行段可以被重定位。
    (7).COM文件只能有一个段,而.EXE文件可以有一个以上的段。
    (8).COM文件不能有段堆栈,.EXE文件则可以有。   

  • 相关阅读:
    真的是最后一次作业了!!!!
    最后一次总结
    作业十一总结?
    作业十一总结
    实验十总结
    作业9总结
    附加作业
    补交第十次作业
    补交第九次作业
    补交第八次作业
  • 原文地址:https://www.cnblogs.com/GoGoagg/p/1986981.html
Copyright © 2011-2022 走看看