判断一个文件是.exe还是.com主要 通过文件扩展名来进行。
.com文件
程序只能设置一个段,且不建立堆栈段。
程序的长度必须少于64K字节。
程序必须预留100H空间,开始处是一条可执行指令。
程序被装入的起始标号必须由END语句说明开始地址。
程序中的子程序必须具有近程属性(NEAR)。
如果COM文件是由几个不同的目标模块链接生成的,要求所有目标模块具有同一代码段名和类别名(CLASS),且赋予公共属性(PUBLIC),而主模块应具有100H的入口指针并优先连接。
COM文件的cs, ds, ss, es都指向同一个段。
COM文件在装入时,由系统自动把SP建立在该段之末。
COM文件中的过程只能定义为近程NEAR。
.exe文件
程序允许建立若干不同名的代码段、数据段、堆栈段或附加段。
程序的入口随应用而定,只需起始标号与END语句说明的起始地址一致。
程序中的各个子程序的属性随段内或段间调用而定为NEAR或FAR。
EXE文件可以有多个段,包括代码段、数据段、堆栈段等,且这些段可以独立设置和共享。
建议
文件扩展名:最直接的方法是查看文件的扩展名。如果文件扩展名为.com,则该文件为COM文件;如果为.exe,则为EXE文件。
文件内容:如果文件扩展名无法确定,可以查看文件内容的前几个字节。COM文件通常以100H为入口点,且内容通常为连续的16位机器指令。EXE文件则有更复杂的文件头结构,包含多个段信息等。
工具:可以使用文本编辑器或十六进制编辑器打开文件,查看其内容结构,进一步确认文件类型。
通过以上方法,可以较为准确地判断一个文件是.exe还是.com。