-
Notifications
You must be signed in to change notification settings - Fork 2
Лабораторная работа 3
Исполняемые файлы с расширением EXE, используемые в ОС DOS и Windows (и некоторых других).
- MZ - 16-битный формат, основной для DOS;
- NE - 16-битный формат старых версий Windows;
- LE, LX - формат OS/2;
- PE - 32- и 64-битный формат современных Windows (начиная с Windows 95).
Назван так по сигнатуре — ASCII-символам MZ (4D 5A) в первых двух байтах. Эта сигнатура — инициалы Марка Збиковски, одного из создателей MS-DOS. Формат был разработан как замена устаревшему формату .COM. Исполняемые файлы MZ включают метаданные, могут иметь размер больше 64 Кбайт и использовать несколько сегментов памяти различного типа (кода, данных и стека), точка входа в программу также может быть в любом месте (в файлах .COM выполнение команд всегда начинается непосредственно с начала файла). Метод загрузки исполняемого файла определяется по сигнатуре: при её наличии обрабатывается MZ-заголовок, при отсутствии файл запускается как .COM — независимо от расширения файла (например, в последних версиях MS-DOS интерпретатор командной строки COMMAND.COM на самом деле является EXE-файлом).
Обычно заглушка, добавляемая компиляторами, выводит сообщение наподобие «This program cannot be run in DOS mode» («Эту программу невозможно запустить в режиме DOS»). (https://ru.wikipedia.org/wiki/MZ_(%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%82))
Адрес | Тип | Имя | Описание |
---|---|---|---|
00h | word | Сигнатура | Магическая сигнатура DOS-файла - два символа "MZ" |
02h | word | Extra bytes | Количество байт на последней странице файла |
04h | word | Pages | Количество страниц в файле |
06h | word | Relocation items | Количество релокейшенов |
08h | word | Header size | Размер заголовка в параграфах |
0Ah | word | Minimum allocation | Мин. выделение памяти в параграфах |
0Ch | word | Maximum allocation | Макс. выделение памяти в параграфах |
0Eh | word | Initial SS | Начальное (относительное) значение регистра SS |
10h | word | Initial SP | Начальное значение регистра SP |
12h | word | CheckSum | Контрольная сумма |
14h | word | Initial IP | Начальное значение регистра IP |
16h | word | Initial CS | Начальное (относительное) значение регистра CS |
18h | word | Relocation table | Адрес на релокейшены и программу-заглушку |
1Ah | word | Overlay | Количество оверлеев |
1Ch | word | Overlay information | Зарезервировано |
24h | word | OEMIdentifier | Для OEMInfo |
26h | word | OEMInfo | Информация о программе |
28h | word | Res1[10] | Зарезервировано |
3Ch | dword | PEHeaderAddr | Адрес в файле заголовка PE |
(http://mzc.narod.ru/Creating/Step008.htm, https://wiki.osdev.org/MZ)