INT, INTO - команды прерывания




 

Команда INT инициирует в процессоре процедуру прерывания, в результате которой управление передается программе обработки прерывания с номером n, который указан в качестве операнда команды INT. В стек прерываемого процесса (текущей программы) заносится содержимое регистра флагов, сегментного регистра CS и указателя команд IP. Затем сбрасывается флажок IF, запрещая внешние прерывания и исключая появление других сигналов прерывания во время процедуры перехода. Наконец из таблицы векторов прерываний в регистры IP и CS передается содержимое двух слов, расположенных по адресам 0: n 4и 0: n 4+2. Процессор, выполняя свой базовый цикл работы, формирует адрес первой команды программы обработки данного прерывания, исполняет ее и все последующие команды программы. В конце программы находится команда IRET, которая восстанавливает из стека содержимое IP и CS основной программы и ее выполнение продолжается с команды стоящей следующей за командой INT.

Прерывания могут быть инициированы внешним устройством системы или специальной командой прерывания из программы. У микропроцессора 8086 есть три различные команды прерывания - две команды вызова и одна команда возврата:

Команда INT (interrupt - прерывать) имеет формат

INT тип_прерывания

где тип_ прерывания - номер, идентифицирующий один из 256 различных векто­ров, находящихся в памяти. Таким образом, каждому из 256 прерываний соответствует один вектор (4 байта памяти, где хранятся IP и CS программы обработки прерывания). При исполнении команды INT микропроцессор производит следующие действия:

1. Помещает в стек регистр флагов.

2. Обнуляет флаг трассировки TF и флаг включения-выключения прерываний IF для исключения пошагового режима исполнения команд и блокировки других маскируемых прерываний.

3. Помещает в стек значение регистра CS.

4. Вычисляет адрес вектора прерывания, умножая тип_прерывания на 4.

5. Загружает второе слово вектора прерывания в регистр CS.

6. Помещает в стек значение указателя команд IP.

7. Загружает в указатель команд IP первое слово вектора прерывания.

8. Устанавливает флаги IP и TF.

Итак, после исполнения команды INT в стеке окажутся значения регистра флагов и регистров CS и IP, флаги TF и IF будут равны 0, а пара регистров CS:IP будет указывать на начальный адрес программы обработки прерывания.

256 векторов прерывания размещаются в области памяти с младшими адресами. Так как каждый из них имеет длину 4 байта, то все они занимают первые 1К байтов, т.е. область памяти с абсолютными адресами от 0до 3FFH. Например, команда

INT 21Н

заставит микропроцессор 8086 вычислить адрес вектора 54Н (4 21Н). Следователь­но, он получит 16-битовые значения регистров IP и CS, отвечающие программе обработки прерывания, из ячеек 54Н и 56Н соответственно.

Из 256 типов прерываний фирма Intel зарезервировала первые 5 (от 0 до 4) для внутренних прерываний. В IBM PC многие другие типы прерываний зарезерви­рованы для нужд основной системы ввода-вывода (BIOS), а также для операцион­ной системы DOS.

INTO - команда прерывания по переполнению

Команда INTO (interrupt if overflow - прервать при переполнении) представляет собой команду условного прерывания. Она инициирует прерывание лишь тогда, когда флаг переполнения OF равен 1. В этом случае команда INTO передает управление программе обработки прерывания с помощью косвенного вызова через вектор прерывания 4. (Другими словами, команда INTO инициирует прерывание типа 4.)



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-02-16 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: