|
1.1 Загрузка и выполнение COM - программы
Для того, чтобы дальнейшее изложение стало более
понятным, следует немного рассказать о действиях
MS DOS при запуске программы типа COM.
Для запуска программ в системе MS DOS используется
специальная функция EXEC . Действия этой функции
при запуске COM - программы выглядят так :
1. Запускаемой программе отводится вся свободная в данный момент оперативная память .Сегментная
часть начального адреса этой памяти обычно называ-
ется начальным сегментом программы.
2. По нулевому смещению в сегменте, определяемом
начальным сегментом программы, EXEC строит специальную служебную структуру - так называемый PSP
( Program Segment Prefix ), в котором содержится
информация,необходимая для правильной работы программы . Заполняет PSP операционная система ( ОС ),
а его размер всегда равен 100h ( 256 ) байт .
3. Сразу вслед за PSP загружается сама COM - прог-
рамма .
4. EXEC выполняет настройку регистров процессора.
При этом устанавливаются такие значения :CS = DS =
= SS = ES указывают на начальный сегмент программы, регистр IP инициализируется числом 100h, а
регистр SP - числом 0fffeh .
5. Теперь загруженную COM - программу можно исполнить . Для этого EXEC передает управление по адресу CS : 100h.После завершения программы управление
передается обратно в EXEC, а оттуда программе-предку .
Таким образом,по адресу CS : 100h обязательно должна стоять первая исполняемая команда .Чаще всего
это команда перехода, но допустимо использовать и
другие .Следует также напомнить, что в MS DOS размер COM - файла не может превышать 64 Кбайт. В са-
мом деле, ведь COM - формат предполагает размещение программных кодов, данных и стека в одном сегменте оперативной памяти . А размер сегмента как
раз и ограничен 64 Кбайтами .
|
|
|