EXE文件和COM文件的区别
EXE文件和COM文件的区别
COM文件
COM文件只有一个分段,无堆栈段,程序长度小于64KB。程序必须预留100H空间,且在位移100H处是一条可执行指令。
程序中的子程序必须具有近过程属性(NEAR)。该程序被加载的起始标号必须由END语句说明为开始地址。
DOS将一个COM文件装入内存时,寄存器CS、DS、ES、SS指向PSP的起始地址:代码装入程序段偏移量为100H处。如下图所示。
┏━━━━━━━┓←CS=DS=ES=SS
┃ PSP(100H) ┃
┃ ┃
┣━━━━━━━┫←CS:100H
┃ ┃
┃ 程序 ┃
┃ ┃
┃ ┃
┗━━━━━━━┛
EXE文件
有多个分段。程序长度受当前内存可用空间的限制。程序的起始标号与END语句说明的开始地址一致。程序中的子程序既可为NEAR,也可为FAR。
┏━━━━━━━┓←DS=ES
┃ PSP(100H) ┃
┃ ┃
┣━━━━━━━┫←CS
┃ ┃
┃ 程序 ┃←CS:IP
┃ ┃ 程序入口
┃ ┃
┗━━━━━━━┛
DS、ES:指向PSP起始地址
CS:IP:程序的执行入口
SS:SP:指向堆栈段