Статьи по Assembler


Минимальная stub-программа - часть 4


Вот расшифровка содержимого файла stub.exe с комментариями:

смещение значение назначение комментарий
+0 5A4D Подпись exe-файла ('MZ')  
+2 0000 Длина последней неполной страницы образа, байт Игнорируется операционной системой
+4 0001 Длина образа, страниц (страница = 512 байт) Программа занимает менее одной страницы
+6 0000 Число элементов в таблице перемещения В этой программе перемещаемых элементов нет
+8 0002 Размер exe-заголовка, параграфов (параграф = 16 байт) Указывается размер базовой части заголовка. С учетом остальных значений параметров в данном случае означает, что исполняемый код в файле начинается со смещения 20h, и стартовый адрес находится в начале исполняемого кода
+0ah 0000 Минимум требуемой памяти за концом программы (параграфов) В данном случае смысла не имеет
+0ch FFFF Максимум требуемой памяти за концом программы (параграфов) Традиционно отводится вся доступная память
+0eh 0000 Сегментное смещение сегмента стека (для установки регистра ss)  
+10h 0040 Значение регистра sp (указателя стека) при запуске В этой программе стек не имеет значения
+12h 0000 Контрольная сумма исполняемого модуля Не используется
+14h 0000 Значение регистра ip (указателя команд) при запуске Стартовая точка совпадает с началом кодового сегмента
+16h 0000 Cегментное смещение кодового сегмента (для установки регистра cs)  
+18h 0040 Cмещение в файле 1-го элемента перемещения В этой программе ни одного элемента перемещения нет, а исполняемый код находится внутри заголовка, поэтому данное значение совпадает с концом программы
+1ah 0000 Номер оверлея Здесь не используется
+1eh 0000
0000
Резерв - 4 байта  
+20h 4CB4
21CD
Исполняемый код:
mov ah,4ch
int 21h
В данном случае программа просто возвращает управление операционной системе. Максимальный размер исполняемого кода для данных значений заголовка - 28 байт (смещения 20h...3bh). Обратите внимание, что исполняемый код с целью экономии размера программы находится в области, отведенной под exe-заголовок!
+3ch 0000
0000
Зарезервированное двойное слово Используется компоновщиком Windows-приложения для размещения смещения PE-заголовка
<


- Начало -  - Назад -  - Вперед -