Загрузка и выполнение 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 Кбайтами .

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Перейти к верхней панели