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


Интерфейс HIMEM.SYS


Как мы уже говорили, назначение драйвера HIMEM.SYS и его возможности были подробно описаны во второй части второго тома "Библиотеки системного программиста" (глава 10). Поэтому здесь мы не будем подробно рассматривать эти функции и говорить об их использовании, а приведём только краткий перечень:

Таблица 8. Функции XMS.

00hПолучить версию XMS (XMS - eXtended Memory Specification - спецификация расширенной памяти).
01hЗапросить управление областью старшей памятью HMA.
02hОсвободить область HMA.
03hГлобальное разрешение линии A20.
04hГлобальное запрещение линии A20.
05hЛокальное разрешение линии A20.
06hЛокальное запрещение линии A20.
07hОпределение текущего состояния линии A20.
08hОпределение размера свободной расширенной памяти.
09hПолучить блок расширенной памяти EMB.
0AhОсвободить блок EMB.
0BhКопирование блоков расширенной памяти EMB.
0ChБлокирование блока EMB. Для заблокированного EMB можно определить его физический адрес.
0DhРазблокирование EMB.
0EhПолучить информацию об индексе EMB.
0FhИзменить размер блока EMB.
10hЗапросить управление областью UMB.
11hОсвободить область UMB.

Для проверки наличия в системе драйвера, поддерживающего спецификацию XMS, необходимо загрузить в регистр AX значение 4300h и вызвать прерывание INT2Fh. Если в регистре AL окажется значение 80h, драйвер установлен. В этом случае можно получить адрес управляющей программы, которую надо вызывать для выполнения функций. Если загрузить в регистр AX значение 4310h и вызвать прерывание INT 2Fh, в регистрах ES:BX будет записан искомый адрес.

Как можно заметить, функции XMS позволяют управлять линией A20 и копировать блоки расширенной памяти. Но вы не найдёте среди них функции для перехода в защищённый режим!

И это не случайно. Всё дело в том, что для работы с расширенной памятью драйвер HIMEM.SYS, реализующий спецификацию XMS, не использует защищённый режим работы процесора!

Как это может быть? Ведь процессор, находясь в реальном режиме не может адресовать память за границей первого мегабайта.

Секрет заключается в том, что для процессора i80286 драйвер HIMEM.SYS использует недокументированную машинную команду LOADALL.


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



Книжный магазин