2.1. Запуск программ

      ДОС  может   загружать  в  память  и   выполнять  два  вида

 программных   файлов,  имеющих  типы  .COM   и  .EXE.  Благодаря

 архитектуре процессоров Intel 8086/88/286,  использующих базовые

 регистры  сегментов и  относительные смещения  в командах  JMP и

 CALL, оба типа программ могут быть загружены в память, начиная с

 любого параграфа. Программы никогда  не пишутся в предположении,

 что они  будут загружены с определенного  адреса, за исключением

 узкоспециализированных  программ,  работающих  без  операционной

 системы.

 

      Два типа программных файлов различаются следующим:

 

      -  COM-файлы  представляют   собой  двоичный  образ  памяти

 программы; они не превышают размером  64 Кб и не имеют настройки

 адресов сегментов;

 

      -  EXE-файлы   имеют   специальный  заголовок,  управляющий

 загрузкой  и  настройкой  адресов  сегментов  перед  выполнением

 программы, и могут иметь любой pазмеp.

 

      Процeсс  загрузки программы  в память  состоит из следующих

 действий:

 

      1. ДОС  находит адрес первого параграфа  свободной памяти и

 размещает с этого  адреса  копию  системного контекста.  ДОС 3.x

 помещает  в  конце  контекста  полную  спецификацию загружаемого

 файла (см. 2.3).

 

      2.  Вслед  за  системным  контекстом  с  начала  ближайшего

 параграфа создается префикс  программного сегмента  (PSP). В нем

 заполняются следующие поля:

 

      - размер памяти, доступной программе;

      - сегментный адрес системного контекста;

      - от  0 до 2 неоткрытых  FCB, полученных разбором командной

 строки;

      - копия командной строки;

      - текущие значения  векторов  Int  22h, Int  23h и  Int 24h

 (см. 2.4).

 

      3.  Адрес  буфеpа обмена  с  диском  (DTA)  устанавливается

 равным PSP:80h.

 

      4.  В  регистре  AX  формируются  сведения  о  коppектности

 дисководов  (если они  есть), указанных  в спецификациях  файлов

 командной строки:

 

      - если AL=FFh, то первый дисковод имеет недопустимое имя;

      - если AH=FFh, то второй дисковод имеет недопустимое имя.

 

      5. Файл программы загружается в  память с адреса PSP:100h и

 

 ему передается управление командой JMP FAR.

 

      Последний шаг несколько отличается  для EXE - и COM-файлов,

 поэтому опишем его подробно.

 

      2.1.1. Запуск EXE-файлов

 

      EXE-программа  может содержать  несколько сегментов  (коды,

 данные,  стек  и  т.   д.).  Поэтому  после  загpузки  EXE-файла

 производится настройка  адресов сегментов, детально  описанная в

 2.5. Затем ДОС формирует значения некоторых регистров и передает

 управление по адресу CS:IP, указанному в заголовке EXE-файла (т.

 е. запускает программу). В этот момент

 

      - DS и ES указывают на PSP;

      - CS, IP, SS и SP установлены согласно заголовку EXE-файла;

      - поле  MemTop  в  PSP   установлено   согласно   заголовку

 EXE-файла;  обычно  программе  выделяется  вся  свободная память

 (см. 2.4).

 

Вы находитесь в разделе: 
Также вам будет интересно:
Метки: 

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