stringtranslate.com

Исполняемый файл DOS MZ

Формат исполняемого файла DOS MZ — это формат исполняемого файла, используемый для файлов . EXE в DOS .

Файл можно идентифицировать по строке ASCII «MZ» ( шестнадцатеричное : 4D 5A) в начале файла (« магическое число »). «MZ» — это инициалы Марка Збиковски , одного из ведущих разработчиков MS-DOS . [1]

Исполняемый файл MZ DOS новее исполняемого формата COM и отличается от него. Заголовок исполняемого файла DOS содержит информацию о перемещении , что позволяет загружать несколько сегментов по произвольным адресам памяти, и поддерживает исполняемые файлы размером более 64k; однако формат по-прежнему требует относительно низких ограничений памяти. Эти ограничения были позже обойдены с помощью расширителей DOS .

Обработка сегмента

Окружение EXE-программы, запущенной DOS, находится в ее префиксе сегмента программы .

Файлы EXE обычно имеют отдельные сегменты для кода, данных и стека. Выполнение программы начинается с адреса 0 сегмента кода , а регистр указателя стека устанавливается на любое значение, содержащееся в информации заголовка (таким образом, если заголовок указывает стек размером 512 байт, указатель стека устанавливается на 200h). При желании можно не использовать отдельный сегмент стека и просто использовать сегмент кода для стека.

Регистр DS ( сегмент данных ) обычно содержит то же значение, что и регистр CS (сегмент кода), и не загружается фактическим адресом сегмента данных при инициализации EXE-файла; программисту необходимо установить его самостоятельно, что обычно выполняется с помощью следующих инструкций:

 MOV AX , @ ДАННЫЕ MOV DS , AX     

Прекращение

В оригинальном API DOS 1.x также было необходимо, чтобы регистр CS указывал на сегмент с PSP при завершении программы; это делалось с помощью следующих инструкций:

 НАЖМИ DS XOR AX , AX НАЖМИ AX      

Затем завершение программы выполнялось инструкцией RETF, которая извлекала исходный адрес сегмента с помощью PSP из стека, а затем переходила к адресу 0, содержащему инструкцию INT 20h.

API DOS 2.x представил новую функцию завершения программы, INT 21h Function 4Ch, которая не требует сохранения адреса сегмента PSP в начале программы, и Microsoft рекомендовала не использовать старый метод DOS 1.x.

Совместимость

Исполняемые файлы MZ DOS могут быть запущены из операционных систем на базе DOS и Windows 9x . 32-разрядные операционные системы на базе Windows NT могут выполнять их с помощью встроенной виртуальной машины DOS (хотя некоторые графические режимы не поддерживаются). 64-разрядные версии Windows не могут их выполнять. Альтернативные способы запуска этих исполняемых файлов включают DOSBox и DOSEMU .

Исполняемые файлы MZ DOS могут быть созданы с помощью компоновщиков, таких как Digital Mars Optlink , MS linker, VALX или Open Watcom WLINK; кроме того, FASM может создавать их напрямую.

Смотрите также

Дальнейшее чтение

Ссылки

  1. ^ Внутри Windows: подробный взгляд на формат исполняемого файла Win32 Portable - MSDN Magazine, февраль 2002 г. Архивировано 11 июля 2018 г. на Wayback Machine . "Каждый PE-файл начинается с небольшого исполняемого файла MS-DOS. ... Первые байты PE-файла начинаются с традиционного заголовка MS-DOS, называемого IMAGE_DOS_HEADER. Единственными двумя значениями, имеющими какое-либо значение, являются e_magic и e_lfanew. ... Поле e_magic (WORD) должно быть установлено в значение 0x5A4D. ... В представлении ASCII 0x5A4D - это MZ, инициалы Марка Збиковски, одного из первоначальных архитекторов MS-DOS".

Внешние ссылки