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

Для установления связи между логическими страницами дескриптора и физическими страницами окна используется специальная процедура, которая называется картированием окна. При картировании Вы должны указать номер физической страницы и номер той логической страницы, содержимое которой должно отображаться в этой физической странице окна. Нумерация как логических, так и физических страниц начинается с нуля, т.е. допустимыми являются номера 0...3 для физических и О... N— 1 для логических страниц (N — полное количество страниц, которыми владеет дескриптор).

В табл.5.1 приводится краткая характеристика функций EMM версии 4.0.

Таблица 5.1 ___________Функции драйвера отображаемой памяти_________

Функция

Действия

$40

Дать статус EMM

$41

Получить сегментную часть адреса отображаемого окна

$42

Получить информацию о EMS — памяти

$43

Создать дескриптор EMM и распределить память

$44

Картировать окно

$45

Уничтожить дескриптор EMM и освободить память

$46

Дать номер версии БММ

$47

Сохранить картирующий контекст

$48

Восстановить картирующий контекст (предварительно контекст должен быть сохранен с помощью функции $47)

$4В

Дать количество активных дескрипторов

$4С

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

$4D

Дать информацию о распределении памяти

$4Е

Дать/установить карту всех страниц

$4F

Дать/установить карту части страниц

$50

Картировать/освободить несколько страниц одновременно

$51

Изменить количество связанных с дескриптором страниц

$52

Получить/установить флаг сохранения страниц

$53

Установить/получить имя дескриптора

$54

Дать список имен дескрипторов или искать дескриптор по имени

$55

Картировать память и выполнить инструкцию JUMP

$56

Картировать память и выполнить инструкцию CALL

$57

Переместить/обменять блок памяти

$58

Получить полную карту EMS—окна


Для обращения к EMM используется программное прерывание с вектором $67. Чтобы вызвать нужную функцию EMM, следует поместить в регистр АН номер функции, соответствующим образом сформировать остальные регистры и вызвать прерывание $67. При выходе из преры—