DOS MZ可执行文件(英语:DOS MZ executable)格式是DOS中的.EXE可执行文件格式。

介绍该文件可以通过文件开头的ASCII字符串“MZ”(十六进制:4D 5A)来识别(“幻数”)。 “MZ”是Mark Zbikowski的缩写,Mark Zbikowski是MS-DOS的主要开发者之一。

该文件在文件头部用ASCII字符串“MZ”(十六进制:4D 5A)标识。“MZ”是MS-DOS开发者之一的马克·茨柏克沃斯基(Mark Zbikowski)的姓名首字母缩写

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

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

DS(数据段)寄存器通常包含与CS(代码段)寄存器相同的值,并且在初始化EXE文件时不加载数据段的实际段地址;程序员必须自己设置,通常通过以下指令完成:MOV AX,@ DATA MOV DS,AX。在最初的DOS 1.x API中,还必须让DS寄存器指向程序终止时PSP的段;这是通过以下说明完成的:PUSH DS XOR AX,AX PUSH AX。然后程序终止将由RETF指令执行,该指令将从堆栈中使用PSP检索原始段地址,然后跳转到包含INT 20h指令的地址0。

DOS 2.x API引入了一个新的程序终止函数INT 21h Function 4Ch,它不需要在程序开始时保存PSP段地址,并且Microsoft建议不要使用旧的DOS 1.x方法。

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

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

本词条内容贡献者为:

王沛 - 副教授、副研究员 - 中国科学院工程热物理研究所