DOS MZ可執行文件

維基百科,自由的百科全書

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無法原生運行。替代方法是運行這些模擬器程序,例如DOSBoxDOSEMUWine

MZ DOS可執行文件可由連結器生成,如Digital Mars Optlink、微軟連結器VALXOpen 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標明。

參見

參考資料

外部連結