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Е;