Защищенный режим процессоров Intel


Интерфейс EMS/VCPI


Во второй части второго тома "Библиотеки системного программиста" (глава 11) мы рассказывали вам о дополнительной памяти и об использовании для работы с ней спецификации EMS - Expanded Memory Specification.

Драйверы дополнительной памяти предоставляют программам интерфейс прерывания INT 67h, который мы тогда подробно описали. Мы также говорили о том, что для компьютеров на базе процессоров i80386 или i80486 существуют драйверы памяти, эмулирующие дополнительную память с использованием расширенной. Самые известные драйверы такого типа - EMM386.SYS и QEMM.SYS.

Эти драйверы используют защищённый (точнее, виртуальный) режим работы процессора i80386 и страничную адресацию расширенной памяти. Для прикладных программ предоставляется интерфейс, который называется VCPI - Virtual Programm Control Interface. Этот интерфейс реализован как подфункции функции DEh прерывания INT 67h:

Таблица 9. Функции интерфейса VCPI.

Подфункция Выполняемые действия
00 Проверить наличие в системе интерфейса VCPI.
01 Получить адрес точки входа для работы с интерфейсом VCPI.
02 Определить максимальный физический адрес памяти.
03 Определить количество свободных страниц памяти размером 4 килобайта.
04 Получить страницу памяти.
05 Освободить страницу памяти.
06 Получить физический адрес страницы памяти, располагающейся в пределах первого мегабайта, т.е. в стандартной памяти.
07 Прочитать содержимое системного регистра CR0.
08 Прочитать содержимое отладочных регистров.
09 Установить отладочные регистры.
0A Получить отображение векторов прерываний, используемых контроллерами прерываний 8259.
0B Установить отображение векторов прерываний, используемых контроллерами прерываний 8259.
0C Переключить процессор из реального в защищённый режим, а также из защищённого в виртуальный режим.

Перед вызовом прерывания INT 67h регистр AH должен содержать DEh, а номер требуемой подфункции должен быть загружен в регистр AL. Кроме того, прежде чем вызывать прерывание INT 67h, в самом начале работы программы необходимо убедиться в том, что в системе установлен драйвер EMS.


- Начало -  - Назад -  - Вперед -