Переслать/обменять область памяти
На входе: AH = 57h;
AL = код подфункции:
0 - переслать область памяти; 1 - обменять область памяти;
DS:SI = адрес структуры MoveInfo длиной 18 байтов.
На выходе: AH = байт состояния EMM.
Функция предназначена для выполнения перемещения или обмена содержимого областей стандартной или дополнительной памяти. Возможно перекрытие исходной и результирующей областей памяти. Максимальный размер блоков, над которыми эта функция может выполнять операции - 1 мегабайт.
Структура MoveInfo содержит всю необходимую информацию о расположении блоков памяти:
Смещение Размер Описание
(+0) 4 Размер блока в байтах
(+4) 1 Тип исходной памяти: 0 - стандартная, 1 - EMS
(+5) 2 Индекс исходной памяти: 0 для стандартной памяти, индекс пула для EMS
(+7) 2 Смещение для исходной памяти (внутри сегмента или страницы)
(+9) 2 Адрес исходного сегмента или номер для исходной страницы
(+11) 1 Тип результирующей памяти: 0 - стандартная, 1 - EMS
(+12) 2 Индекс результирующей памяти: 0 для стандартной памяти, индекс пула для EMS
(+14) 2 Смещение для результирующей памяти (внутри сегмента или страницы)
(+16) 2 Адрес результирующего сегмента или номер для исходной страницы
Получить массив адресов отображения
На входе: AH = 58h;
AL = код подфункции:
0 - получить массив отображения; 1 - получить размер массива отображения;
ES:DI = адрес буфера для массива отображения.
На выходе: AH = байт состояния EMM;
CX = количество элементов в массиве отображения (для подфункции 1)
Массив отображения, получаемый при помощи этой функции, состоит из 4-байтовых элементов. Первое слово элемента содержит адрес сегмента, второе - номер физической страницы, соответствующей этому адресу.