Отобразить память



11.4.5. Отобразить память

На входе: AH = 44h; AL = номер физической страницы окна доступа (от 0 до 3); BX = номер логической страницы из числа находящихся в пуле страниц (от 0 до n-1, где n - количество логических страниц в пуле); для версии EMS 4.0 задание значения 0FFFFh приводит к запрещению отображения физических страниц пула, для разрешения их отображения необходимо вызвать эту функцию еще раз, указав правильный номер страницы; DX = индекс EMM, полученный от функции 43h. На выходе: AH = байт состояния EMM.

Функция выполняет отображение (привязку) одной из логических страниц пула к одному их четырех 16-килобайтных сегментов окна просмотра, т.е. к физическим страницам. /** *.Name ems_map *.Title Отобразить память EMS * *.Descr Эта функция отображает логические страницы * пула дополнительной памяти на физические. * *.Proto int ems_map(int phys_page, int log_page, * int handle); * *.Params int phys_pages - номер физической страницы * окна доступа (от 0 до 3), на которую необходимо * отобразить логическую страницу пула; * * int_log_page - номер логической страницы пула; * * int *handle - индекс полученного пула; * *.Return Байт состояния драйвера EMS * *.Sample ems_test.c **/ #include <stdio.h> #include <dos.h> #include "sysp.h" int ems_map(int phys_page, int log_page, int handle) { union REGS reg; reg.h.ah = 0x44; reg.h.al = phys_page; reg.x.bx = log_page; reg.x.dx = handle; int86(0x67, &reg, &reg); return(reg.h.ah); }



Содержание раздела