Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Климов. Лекции / Алг_яз_Лекция_1.pptx
Скачиваний:
43
Добавлен:
14.05.2015
Размер:
1.49 Mб
Скачать

Подсистема управления оверлеями сохраняет в оверлейном буфере с

Управление оверлейным буфером 21

ОБРАТИТЕ ВНИМАНИЕ!

Одной из очень важных возможностей администратора оверлеев является возможность загружать оверлейный файл в дополнительную память при наличии достаточного пространства.

Для этой цели в Турбо Паскале поддерживается средство расширения памяти EMS (Lotus/Intel/Microsoft Expanded Memory Specification)

Если оверлейный файл размещен в памяти EMS, все последующие загрузки оверлеев осуществляются путем быстрой передачи информации из одной области памяти в другую.

22

Оформление

оверлеев

23

Поскольку оверлеи оформляются в виде модулей, то все правила построения модулей применимы и к оверлеям.

Оверлей представляет собой обычный модуль, за исключением нескольких

особенностей, присущих только

оверлеям: в оверлейных модулях нельзя использовать процедуры обработки прерываний.

24

ОФОРМЛЕНИЕ ОВЕРЛЕЕВ.

В начале всех оверлейных модулей должна быть размещена директива компилятора {$О+}.

Процедуры и функции, прямо или косвенно вызывающие оверлейные подпрограммы, должны быть откомпилированы с ключом {$F+}.

В основной программе либо в первых строках, либо перед каждой процедурой, вызывающей оверлей, необходимо указать директиву {$F+}.

25

Если директива {$F+} указана перед процедурой, то после нее необходимо указать обратную директиву {$F-},

чтобы остальные процедуры, не вызывающие оверлей, не использовали

дальний тип вызова, т.к. это может несколько замедлить работу программы.

26

Директива компилятора

Оформление оверлеев

27

Пример:

 

PROGRAM Overlay;

 

{Все программы должны иметь дальний тип вызова}

 

{$F+}

 

{Порядок подключения оверлейных модулей должен быть таким}

USES Crt, Overlay, Init_Ovr, Ovr_1,0vr_2;

 

{Указание компилятору, какие модули являются оверлейными}

{$О Ovr_1}

 

{$0 Ovr_2}

 

Оформление оверлеев

28

 

ОБРАТИТЕ ВНИМАНИЕ!

Если попытаться использовать в качестве оверлейного модуль, при компиляции которого не была указана директива {$О+}, компилятор выдаст сообщение об ошибке.

Из всех стандартных модулей оверлейным может быть только модуль Dos.

Другие стандартные модули не могут использоваться в качестве оверлейных.

Не могут быть оверлейными модули, которые содержат обработку прерываний

Программы, содержащие оверлейные модули, должны компилироваться на диск

Если попытаться выполнить компиляцию таких программ в память, то компилятор выдаст сообщение об ошибке.

29

Если в оверлейном модуле есть раздел инициализации, то в нем, с одной стороны, нельзя инициализировать администратор оверлеев, а с другой стороны, нельзя производить какие-либо действия до инициализации администратора.

Чтобы разрешить эту кажущуюся парадоксальной ситуацию необходимо ввести в программу дополнительный неоверлейный модуль, в разделе инициализации которого и будет включаться администратор оверлеев, и подключить его в директиве USES перед оверлейными модулями.

30

Соседние файлы в папке Климов. Лекции