Переслать/обменять область памяти



11.5.15. Переслать/обменять область памяти

На входе: 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-байтовых элементов. Первое слово элемента содержит адрес сегмента, второе - номер физической страницы, соответствующей этому адресу.



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