Создаем вирус и антивирус (Гульев) - страница 116

Приложение В Функции программирования Flash в AMIBIOS

За программирование Flash в AMIBIOS отвечает функция E0h прерывания INT 16h. При вызове прерывания INT 16h номер функции должен находиться в регистре AH, номер подфункции – в регистре AL. При возврате из функции регистр AL содержит FAh как подтверждение, что данная функция прерывания поддерживается. Флаг CF равен нулю при успешном выполнении и равен единице при ошибке.

Для уверенности в успешном выполнении функций необходимо всегда проверять AL=FAh на выходе.

Flash AMIBIOS, подфункция 00h

Получить номер версии интерфейса Flash BIOS

Вход:

AH=E0h

AL=00h

Выход:

AL=FAh

CF=1 – интерфейс Flash-BIOS отсутствует

CF=0 – интерфейс Flash-BIOS присутствует

BX – номер версии в формате BCD

Описание. Возвращает номер версии интерфейса Flash-BIOS в BCD-формате. Например, версия 2.00 возвратит в BX число 0200h.

Примечание. Эту функцию можно использовать для детектирования наличия интерфейса Flash-BIOS. При возврате регистр AL должен обязательно быть равен FAh.

Изменяемые регистры: AX, BX Flash AMIBIOS, подфункция 01h Получить требования к сохранению состояния чипа

Вход:

AH=E0h

AL=01h

Выход:

AL=FAh

CF=0, если функция выполнена успешно

BX – размер области памяти (в байтах), необходимый для сохранения текущего состояния чипа

CF=1, если при выполнении функции возникли ошибки

Описание. Возвращает размер области памяти (в байтах), необходимый для сохранения текущего состояния чипа.

Изменяемые регистры: AX, BX Flash AMIBIOS, подфункция 02h Сохранить текущее состояние чипа в подготовленной области

Вход:

AH=E0h

AL=02h

ES:DI – указатель на буфер для сохранения текущего состояния чипа

Выход:

AL=FAh

CF=0, если функция выполнена успешно

CF=1, если при выполнении функции возникли ошибки

Описание. Данная подфункция сохраняет текущее состояние чипа в обозначенной области данных и подготавливает чип к разрешению доступа в EPROM.

Примечание. Необходимо сохранить текущее состояние кэш, управления электропитанием (Power Management), затенения (Shadow) и прочее. При нефатальной ошибке будет возможно вернуть эти значения. Подготовка чипа к работе с Flash EPROM включает в себя отключение затенения RAM, внешнего и внутреннего кэш, управления электропитанием и так далее. Необходимо сохранить эти значения перед началом операции. Отключение кэш позволит с полной уверенностью обращаться напрямую в адресное пространство ROM, не беспокоясь о том, что кэш может этому помешать. Если нужное адресное пространство ROM кэшируется только при включенном затенении «Shadow Enabled» (то есть кэшируется только затененная RAM, а не ROM), отмена кэширования происходит при отмене затенения RAM, и в данном случае отмены кэширования не требуется. Если ROM кэшируется, то кэш необходимо отключить.