Из Википедии, свободной энциклопедии
Перейти к навигации Перейти к поиску

Исполняемый DOS MZ формат является исполняемый формат файла используется. EXE файлы в DOS .

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

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

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

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

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

 MOV  AX ,  @ DATA  MOV  DS ,  AX

В исходном API DOS 1.x было также необходимо, чтобы регистр DS указывал на сегмент с 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 могут выполнять их, используя свою встроенную машину Virtual DOS (хотя некоторые графические режимы не поддерживаются). 64-битные версии Windows не могут их выполнять. Альтернативные способы запуска этих исполняемых файлов включают DOSBox , DOSEMU , Wine и Cygwin .

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

См. Также [ править ]

  • ДОС
  • Расширитель DOS
  • Переносимый исполняемый файл
  • DOS API
  • Исполняемое сжатие

Дальнейшее чтение [ править ]

  • Пол, Матиас Р. (2002-10-07) [2000]. «Re: запустить COM-файл» . Группа новостей :  alt.msdos.programmer . Архивировано 3 сентября 2017 года . Проверено 3 сентября 2017 .
  • [1]

Ссылки [ править ]

  1. ^ Inside Windows: In-Depth Look в Win32 формат переносимого исполняемого файла - MSDN Magazine, февраль 2002 года . «Каждый PE-файл начинается с небольшого исполняемого файла MS-DOS ... Первые байты PE-файла начинаются с традиционного заголовка MS-DOS, называемого IMAGE_DOS_HEADER. Единственные два важных значения - e_magic и e_lfanew ... . В поле e_magic (СЛОВО) должно быть установлено значение 0x5A4D. ... В представлении ASCII 0x5A4D - это MZ, инициалы Марка Збиковски, одного из первых архитекторов MS-DOS ».

Внешние ссылки [ править ]

  • Подробнее о заглушке EXE DOS