скачать клипы бесплатно новинки

Пример Б 9 Структура таблицы GDI



Пример Б.9. Структура таблицы GDI

GDtab: db 16 dup (0) 16 пустых байтов
dw ? размер источника в байтах (2*[сх]+1)
dw ? младшая часть адреса источника
db ? старшая часть адреса источника
db 93h разрешены чтение и запись
dw 0 пустое (резервное) слово
dw ? размер приемника в байтах (2*[сх]+1)
dw ? младшая часть адреса приемника
db ? старшая часть адреса приемника
db 93h разрешены чтение и запись
dw 0 пустое (резервное) слово
db 16 dup (0) 16 пустых байтов

Формат GDT должен строго соблюдаться, поэтому обратите ьнимание на то, в каких случаях в примере Б.9 употребляются директивы db, а в каких dw. Важно также правильно указывать коды доступа к источнику и приемнику, в частности, эзь разрешает чтение и запись.

Коды адресов источника и приемника 24-разрядные. Адрес обычной памяти вычисляется по схеме, показанной в табл. Б.1. Адрес'Extended memory может
ИЗМеНЯТЬСЯ В Пределах ОТ 10:ООООпДО OFF:OFFFFh.

Замечание 1
Замечание 1
Именно эту функцию используют: DOS для загрузки своей резидентной части в старшую память, задача memmaker.exe для перемещения драйверов в старшую память, а также драйверы vdisk и ramdrive. Для ее использования прикладными задачами в Extended memory надо выделить блок нужного размера. Для этого в файле config.sys после имени драйвера himem.sys укажите ключ /intlS = xxxx, где хххх соответствует размеру (в килобайтах) пространства ОЗУ, которое будет доступно при работе с функцией 87п прерывания int 15h.

ФУНКЦИЯ 88h Get Extended Memory Size возвращает В регистре ах размер
доступного пространства расширенной памяти, выраженный в килобайтах. Это то значение, которое указано при установке драйвера himem.sys, адрес его первого байта юооооь (1 Мбайт).

При работе с Extended memory задача, прежде всего, должна издать эту функцию для проверки наличия требуемого пространства ОЗУ. Если его недостаточно, то выполнение задачи надо прервать, поскольку она не может затребовать дополнительный объем расширенной памяти. Доступным пространством памяти задача распоряжается самостоятельно. Ни DOS, ни драйвер himem.sys не выполняют никаких функций контроля и распределения пространства Extended memory.

ФУНКЦИЯ 89h Enter Protected Moded выполняет действия, необходимые ДЛЯ
перехода в защищенный режим и переводит микропроцессор в этот режим, т. е. после возврата из BIOS задача уже будет выполняться в защищенном режиме. Напомним, что временный переход в защищенный режим производится при выполнении функции 87h перед пересылкой блока, но он не заметен для задачи. В данном случае речь идет о полном переходе на выполнение задачи в защищенном режиме.

Перед обращением к BIOS надо сформировать специальную структуру данных (Global Descriptor Table И Interrupt Descriptor Table). Для заполнения этой структуры вы должны иметь представление о том, что такое дескриптор сегментного регистра, зачем и как надо изменять содержимое векторов прерываний и другие особенности перехода из реального режима в защищенный и обратно. Поэтому советуем отложить эксперименты с данной функцией до тех пор, пока вы не начнете изучать программирование для защищенного режима.



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