Системное программное обеспечение персональных ЭВМ


11.2. COM- и EXE-файлы - часть 2


Поля заголовка MinMem и MaxMem формируются компоновщиками и содержат размер памяти, которую необходимо выделить программе дополнительно к образу, хранящемуся в файле. При загрузке программы система пытается выделить ей MaxMem памяти, если такого ресурса свободной памяти в системе нет - выделяется максимально возможный объем - но не меньше MinMem - иначе загрузка завершается аварийно. (Поскольку COM-файл не имеет заголовка, и система "не знает", сколько памяти ему потребуется, она выделяет такой программе всю свободную память). Поле ChkSum - контрольная сумма всех слов в EXE-файле. Поля ReloSS и ReloCS содержат сегментные смещения относительно начала программы сегментов стека и кода - для установки регистров SS, CS при запуске, поля ExeSP и ExeIP - значения, устанавливаемые при запуске в регистры SP, IP.

Программа примера 11.3. извлекает из собственного заголовка всю необходимую информацию. Чтобы добраться до своего EXE-файла, программа получает адрес своего PSP, из PSP получает адрес своего сегмента окружения, а из окружения - строку вызова, которую и использует как имя файла в операции открытия. Этот файл программа открывает и считывает его начало - форматированную часть заголовка.




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