Аппаратное обеспечение IBM PC


         

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


На входе: 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); }



Содержание  Назад  Вперед