Учебное пособие Санкт-Петербург Издательство спбгэту «лэти» 2006

Вид материалаУчебное пособие

Содержание


2.6. Распределение оперативной памяти в Intel 8086 для MS DOS
2.7. Организация выполняемых программ в MS DOS
Подобный материал:
1   2   3   4   5   6   7   8   9   10   ...   26

2.6. Распределение оперативной памяти в Intel 8086 для MS DOS


Примерное распределение адресного пространства основной памяти, принятое в ОС MS DOS, приведено в табл. 2.1


Таблица 2.1

Границы
участка, Кб

Сегмент:смещение

Назначение участка

0..1

0000:0000(03FF)

256 векторов прерываний

1..60

0010:0000

Область данных и резидентная часть DOS

IO.SYS – расширитель BIOS:
  • настройка на конфигурацию системы;
  • установка новых драйверов;
  • исправление ошибок и неточностей BIOS применительно к данной системе

MSDOS.SYS – обработчик прерываний операционной системы:
  • прерывания DOS;
  • функция DOS (21h)
  • резидентная часть COMMAND.COM:
  • обработка командных файлов;
  • инициирование запуска остальных исполняемых файлов

60..640




Данные, программы пользователя

640..768

A000:0000

Область видеоадаптеров

768..1016

C000:0000

FE00:0000

Область ПЗУ;

Область BIOS.

2.7. Организация выполняемых программ в MS DOS


При работе в среде ОС MS DOS используется три типа исполняемых файлов:
  • *.bat – задают порядок выполнения некоторой последовательности программ;
  • *.com – файлы исполняемых программ типа com;
  • *.exe – файлы исполняемых программ типа exe.

Файлы типа *.com содержат только исполняемый код без дополнительной информации о программе, формируются в загрузочном виде и не требуют настройки. Весь код, данные и стек такой программы располагаются в одном сегменте, имеют длину не более 64 Кб и служат для организации простых модулей, ориентированных на модели памяти tiny и small (прил. 1).

Файлы типа *.exe могут иметь произвольную длину, они содержат заголовок, в котором описывается размер файла, требуемый объем памяти и таблица загрузки – список команд с абсолютными адресами, требующих настройки при загрузке в зависимости от размещения программы в памяти.

Структура размещения в памяти файла типа COM показана на рис. 2.4.


64 Кб

 Стек


Данные и код программы



SS:SP












100h  CS:IP ( директива ORG 100h)





PSP










0

 DS, CS, ES, SS

Рис. 2.4

В начальной части com-файла программы (а также и exe-файла) MS DOS размещает специальный блок – префикс сегмента программы (PSP-рrogram segment prefix), который содержит информацию для доступа программы к параметрам командной строки, к среде окружения, для реакции программы на критические ошибки и некоторые команды типа Ctrl+C. В начальной части PSP указан адрес обработчика прерываний для возврата в DOS. Так как после загрузки все сегментные регистры, включая CS, указывают на начало PSP, а IP = 0, то программа не может исполняться, начиная с этого адреса, и первой командой делают ORG 100h , устанавливающуую CS:IP на конец PSP.

Структура размещения в памяти файла типа EXE показана на рис. 2.5ю мых файлов. сразу за данной.., а состав основных полей ПСП – в табл. 2.2.


SS:SP

Стек

SS:00

Данные

DS (сюда его необходимо установить)

Код


100h CS:00

PSP

DS (начальное положение), ES


Рис. 2.5


Состав основных полей префикса сегмента программы (PSP) показан в табл. 2.2.

Таблица 2.2

0h

DW

Команда INT 20 ( 16-ный код: CD 20) - вызов прерывания DOS для завершения программы и возврата в DOS

2h

DW

Размер доступной для программы памяти в параграфах

0Eh

DD

Адрес обработчика прерывания по CtrlBreak (INT 23h)

12h

DD

Адрес обработчика прерывания по критической ошибке (INT 24h)

2Ch

DW

Значение сегментного адреса среды окружения

80h

64W

DTA –буферная область данных / адрес начала командной строки программы