Читать «Создаем вирус и антивирус» онлайн - страница 110
Игорь А. Гульев
Выход:
CF=0, если функция выполнена успешно
ES:(E)DI – селектор: смещение, содержащий структуру (Таблица Г-2).
CF=1, если при выполнении функции возникли ошибкиОписание. Данная функция возвращает информацию о свободной памяти.
Примечания.
32-битные программы должны использовать ES:EDI для адресации буфера. Только первое поле структуры гарантированно содержит правильное значение, остальные поля, в случае, если они не поддерживаются, содержат 0FFFFFFFFh (-1).
Вход:
AX=0501h
BX:CX – размер блока свободной памяти, который нужно выделить (в байтах)Выход:
CF=0, если функция выполнена успешно
BX:CX – линейный адрес выделенного блока памяти
SI:DI – индекс блока памяти (используется для изменения размера и освобождения памяти)
CF=1, если при выполнении функции возникли ошибкиОписание. Данная функция выделяет блок памяти.
Примечания.
Данная функция не выделяет никаких дескрипторов.
Вход:
AX=0502h
SI:DI – индекс блока памятиВыход:
CF=0, если функция выполнена успешно
CF=1, если при выполнении функции возникли ошибкиОписание. Данная функция освобождает блок памяти.
Примечания.
Программа должна освободить все дескрипторы, которые были выделены для адресации этого блока памяти.
Вход:
AX=0503h
BX:CX – нужный размер блока памяти (в байтах)
SI:DI – индекс блока памятиВыход:
CF=0, если функция выполнена успешно
BX:CX – новый линейный адрес выделенного блока памяти
SI:DI – новый индекс блока памяти (используется для изменения размера и освобождения памяти)
CF=1, если при выполнении функции возникли ошибкиОписание. Данная функция изменяет размер блока памяти, выделенного функцией 0501h.
Примечания.
Данная функция может изменить линейный адрес и индекс блока памяти. Программа должна изменить все дескрипторы, которые были выделены для адресации этого блока памяти, а также для дальнейшей работы с блоком использовать новый индекс. Эта функция выдаст ошибку, если размер блока памяти будет нулевым.
Вход:
AX=0900hВыход:
CF=0
Виртуальные прерывания запрещены
AL=0 – виртуальные прерывания были запрещены
AL=1 – виртуальные прерывания были разрешеныОписание. Данная функция возвращает текущее состояние виртуальных прерываний, а затем запрещает виртуальные прерывания.
Примечания.
Регистр AH не будет изменен этой функцией. Для возвращения виртуальных прерываний в прежнее состояние нужно выполнить INT 31h.
Вход:
AX=0901hВыход:
CF=0
Виртуальные прерывания разрешены
AL=0 – виртуальные прерывания были запрещены
AL=1 – виртуальные прерывания были разрешеныОписание. Данная функция возвращает текущее состояние виртуальных прерываний, а затем разрешает виртуальные прерывания.
Примечания. Регистр AH не будет изменен этой функцией. Для возвращения виртуальных прерываний в прежнее состояние нужно выполнить INT 31h.