Информационный сервер для программистов: Исходники со всего света. Паскальные исходники со всего света
  Powered by Поисковый сервер Яndex: Найдется ВСЁ!
На Главную Pascal Форум Информер Страны мира
   Управление Памятью    >>    xms
   
 
 Работа с XMS-памятью в реальном режиме  Игорь Красиков 17.06.1994

Подгружаемый драйвер XMS позволяет достаточно просто и удобно оперировать с extended-памятью.



7k 
 

Работа с XMS-памятью в реальном режиме Красиков Игорь Владимирович. Подгружаемый драйвер XMS extended-памяти позволяет Вам достаточно просто и удобно оперировать с extended-памятью. В от- личие от EMS XMS не имеет страничной адресации, а располагается непрерывным блоком, для доступа к которому Вам следует лишь знать необходимое Вам смещение в этом блоке. Драйвер предостав- ляет существенно большие возможности, чем 87h функция прерывания 15h. Рассмотрим работу с extended-памятью при помощи XMS-драй- вера более детально. Определение, загружен ли XMS-драйвер, произволится при по- мощи прерывания 2Fh, функции 4300h: если при вызове прерывания 2Fh при AX=4300h мы получаем AL=80h, драйвер установлен и следу- ющим шагом мы определяем адрес, по которому следует вызывать программу драйвера (в отличие от EMS драйвера, где все функции работы с EMS памятью оформлены в виде функций прерывания 67h, к XMS драйверу следует обращаться через вызов CALL FAR по адресу): для этого вызывается прерывание 2Fh с AX=4301h и регистры ES:BX содержат адрес программы драйвера. Передача параметров драйверу производится через регистры, при этом в регистр AH помещается номер вызываемой подфункции, и после возврата из функции AX содержит 1 в случае успешного вы- полнения и 0 в случае неуспешного (что очень приятно при исполь- зовании Turbo Pascal - в нем в assembler - функции возврат буле- вого значения как раз передается через регистр AX и 1 соот- ветствует значению TRUE, а 0 - FALSE) - за исключением лишь вы- зова подфункции 08h, а в регистре BL - код произошедшей ошибки. Список основных подфункций: 00 Получение версии XMS Вход - нет, выход AX - версия в BCD-формате, BX - номер разработки 01 Получение доступа к HMA (High Memory Area) Вход DX - требуемая память в байтах Выход - нет (здесь и далее отсутствие выходных данных означает, как уже говорилось, возвращение кода ошибки в BL и флага выполнения в AX) 02 Освобождение HMA Вход - нет, выход - нет. 08 Информация о доступной extended памяти Вход - нет, выход - AX=размер наибольшего доступн