DOS MZ可執行文件
外觀
![]() | 此條目可參照英語維基百科相應條目來擴充。 (2022年8月3日) |
DOS MZ可執行文件(英語:DOS MZ executable)格式是DOS中的.EXE可執行文件格式。
該文件在文件頭部用ASCII字符串「MZ」(十六進制:4D 5A)標識。「MZ」是MS-DOS開發者之一的馬克·茨柏克沃斯基(Mark Zbikowski)的姓名首字母縮寫。[1]
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標明。
參見
[編輯]- MZ EXE header format((頁面存檔備份,存於網際網路檔案館)(英文))