Иллюстрированный самоучитель по Assembler



INT Программное прерывание


Команда hit инициирует в процессоре процедуру прерывания, в результате которой управление передается на обработчик прерывания с номером n, который указан в качестве операнда команды int. В стек текущей программы заносится содержимое регистра флагов, сегментного регистра CS и указателя команд IP, после чего в регистры IP и CS передается содержимое двух слов из вектора прерывания с номером n (расположенных по адресам 0:n*4 и 0:n*4+2). Команда сбрасывает флаги IF и TF в 0. Команда iret, которой всегда завершается обработчик прерывания, восстанавливает исходное состояние этих флагов.

Пример 1

int 60h ;Переход на прикладной

;обработчик прерывания 60h

Пример 2

mov AH,1 ;Функция MS-DOS - ввод с

;клавиатуры кода ASCII символа

int 2h ;Вызов MS-DOS

Пример 3

mov АН, 0 ;Функция BIOS (прерывание

;16h) - ввод с клавиатуры

;кода ASCII и скен-кода символа

int 16h ;Вызов BIOS

INTO Прерывание по переполнению

Команда into, будучи установлена вслед за какой-либо арифметической, логической или строковой командой, вызывает обработчик прерываний через вектор 4, если предшествующая команда установила флаг переполнения OF. Перед использованием команды INTO прикладной программист должен поместить в вектор прерывания 4 двухсловный адрес своей программы обработки прерывания по переполнению. Команда сбрасывает флаги IF и TF в 0. Команда iret, которой всегда завершается обработчик прерывания, восстанавливает исходное состояние этих флагов.

Пример

add AX,BX ;Произвольная команда

into ;Вызов прикладного

;обработчика через вектор 4,

;если OF=1

... ;Продолжение программы, если OF=0

IRET Возврат из прерывания

Команда iret возвращает управление прерванному в результате аппаратного или программного прерывания процессу. Команда извлекает из стека три верхние слова и помещает их в регистры IP, CS и флагов (см. команду int). Командой iret должен завершаться любой обработчик прерываний, как аппаратных, так и программных (от команды int). Команда не воздействует на флаги, однако она загружает в регистр флагов из стека его исходное содержимое, которое было там сохранено процессором в процессе обслуживания прерывания. Если требуется, чтобы после возврата из обработчика программного прерывания командой iret какие-либо флаги процессора были установлены требуемым образом (весьма распространенный прием), их установку надо выполнить в копии флагов в стеке.




Содержание  Назад  Вперед