ah := $42;
Intr67;
WriteLn(dx:15,' страниц EMS-памяти');
WriteLn(bx:15, ' страниц - свободно');
{Создаем новый дескриптор}
ah := $43;
Intr67;
Handle := dx;
{Определяем количество страниц, которыми он владеет}
ah := $4С;
Intr67;
WriteLn('Создан новый дескриптор, владеющий ', bx,' страницами');
{Проверяем общее количество дескрипторов}
ah := $4В;
Intr67;
WriteLn('(общее количество дескрипторов':35,bx:2,')');
{Уничтожаем новый дескриптор}
ah := $45;
dx := Handle;
Intr67;
WriteLn('Новый дескриптор уничтожен:') ;
{Указываем количество оставшихся дескрипторов}
ah := $4В;
Intr67;
Write (' осталось ',Ьх,' дескрипторов, ');
ah := $42;
Intr67;
WriteLn(bx,' свободных страниц') end end.
Дать информацию о распределении памяти
Вход: АН = $4D;
ES-.DI — адрес буфера. Выход: BX — количество активных дескрипторов.
С помощью функции $40 программа может получить информацию обо всех активных дескрипторах. Она возвращает общее количество дескрипторов в регистре BX, а информацию о каждом из них — в массиве, адрес которого передается функции в регистрах ?5 (сегмент) и DI (смещение). Для каждого дескриптора в этом массиве должно быть предусмотрено два 16—разрядных слова, в которые функция помещает сам дескриптор (в первое слово) и количество связанных с ним страниц (во второе).
Дать/установить карту всех страниц Вход: АН = $4Е;