страниц. В программе может создаваться произвольное количество дескрипторов, однако память, выделенная одному из них, не может использоваться никакими другими дескрипторами, поскольку каждый дескриптор владеет своей памятью монопольно. При обращении к большинству функций 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. При выходе из преры—