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.)








Дата добавления: 2016-01-26; просмотров: 2885;


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

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.008 сек.