DOS MZ可执行文件

DOS MZ可执行文件（）格式是DOS中的.EXE可执行文件格式。

该文件在文件头部用ASCII字符串“MZ”（十六进制：4D 5A）标识。“MZ”是MS-DOS开发者之一的马克·茨柏克沃斯基（Mark Zbikowski）的姓名首字母缩写。Inside Windows: An In-Depth Look into the Win32 Portable Executable File Format - MSDN Magazine, February 2002 .

DOS MZ可执行文件比COM可执行文件格式更晚出现，并与其有一定差别。DOS可执行文件头部包含了重定位信息，使得多个段能被载入到任意内存地址中，并且支持大于64KB的可执行文件；然而该格式仍然要求相对低的内存限制。这些限制后来通过使用DOS扩展器得以绕过。

DOS EXE程序的执行环境可以在其程序段前缀中找到。

 兼容性 
MZ DOS可执行文件可在DOS和基于Windows 9x的操作系统中运行。基于Windows NT的32位系统也可以使用内置的DOS虚拟机运行（尽管一些图形模式是不支持的）。64位版本的Windows无法原生运行。替代方法是运行这些模拟器程序，例如DOSBox、DOSEMU和Wine。

MZ DOS可执行文件可由链接器生成，如Digital Mars Optlink、微软链接器、VALX或Open Watcom的WLINK。另外FASM可以直接创建它们。

DOS EXE 開頭格式說明
 00-01h：MZ标志，MS-DOS开发者之一的馬克·茨柏克沃斯基（Mark Zbikowski）的姓名首字母缩写。
 02-03h：EXE文件最后一个块没有全用完只用了N个字节，即文件长度除以512的余数。
 04-05h：EXE文件使用的块的数量（每块512个字节），文件长度除以512的商
 06-07h：重定向项目的个数。
 08-09h：该处数据指出了EXE头部大小，一般来说，EXE头部之后紧跟着程序数据。
 0A-0Bh：该处数据指出了运行该程序所需的最小内存，如果小于这个内存，程序将不会被加载执行。
 0C-0Dh：该处数据指出了运行该程序所需的最大内存，一般为FFFFh。
 0E-0Fh：堆栈段在装入模块中的偏移，如：00E5h
 10-11h：SP初始值，如：0080h。即SS:SP=00E5:0080。
 14-15h：IP初始值。
 16-17h：CS在装入模块中的偏移。
 18-19h：指出了第一个重定向项目在文件中的偏移，
 1A-1Bh：覆盖号（程序驻留为零）。
 1C：重定位表，起点由偏移18-19h给出，项数由06-07h标明。

 参见 
 DOS
 DOS 扩展器
 Comparison of executable file formats
 MS-DOS API
 MZ EXE header format（）

 参考资料 

 外部链接 
  MZ DOS可执行文件格式

Category:可执行文件格式
Category:DOS技术