Эта статья требует дополнительных ссылок для проверки . ( апрель 2015 г. ) ( Узнайте, как и когда удалить это сообщение-шаблон ) |
Расширение имени файла | |
---|---|
Тип интернет-СМИ | приложение / x-dosxec, приложение / x-msdos-program |
Магическое число | MZ или ZM |
Тип формата | Двоичный , исполняемый |
Расширен до | Новый исполняемый файл Линейный исполняемый переносимый исполняемый файл |
Исполняемый 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]
Ссылки [ править ]
- ^ 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