Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
I8086.DOC
Скачиваний:
50
Добавлен:
02.05.2014
Размер:
1.36 Mб
Скачать
      1. Исключения

Микропроцессор 8086 обрабатывает три вида исключений – по ошибке деления, по точке остановка и по переполнению. Кроме того, в нём реализовано прерывание по трассировке.

Прерывание по ошибке деления

Прерывание по ошибке деления возникает при выполнении инструкции DIVилиIDIV, если результат прерывает максимально допустимую величину, а также при попытке деления на нуль.

Выполнение инструкции деления прекращается, управление передаётся обработчику прерывания по вектору 0. В стеке будет сохранён адрес инструкции деления, вызвавшей прерывание.

Прерывание по точке останова

Прерывание по точке останова возникает, если в программе встретилась инструкция INT3. Выполнение этой инструкции приводит к передаче управления обработчику прерывания по вектору 3. В стеке сохраняется адрес следующей инструкции.

Следует обратить внимание, что система команд микропроцессора 8086 обеспечивает два формата инструкции INT3– однобайтовый (код командыCC) и двухбайтовый (код командыCD03). Функционально они ничем не отличаются, но двухбайтовый формат принято относить к программным прерываниям, а однобайтовый – к исключениям.

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

Прерывание по переполнению происходит, если при выполнении инструкции INTOфлажок переполненияOFв регистре флагов установлен. Когда этот флажок сброшен, инструкцияINTOникаких действий не производит. Обработчик прерывания по переполнению использует вектор 4.

При прерывании в стеке сохраняется адрес следующей инструкции.

Прерывание по трассировке

Прерывания по трассировке происходят после выполнения каждой инструкции, когда в регистре флагов установлен флажок трассировки TF. В этом случае, завершив выполнение инструкции, микропроцессор передаёт управление обработчик прерывания по вектору 1. В стеке сохраняется адрес следующей инструкции.

Особенностью микропроцессоров семейства 8086 является то, что впервые после установки флажка трассировки связанное с ним прерывание происходит не после инструкции, в ходе выполнения которой этот флажок был установлен, а по завершении следующей за ней инструкции. Например, если при завершении обработчика прерывания по трассировке с помощью команды IRETв восстановленном содержимом регистра флагов флажокTFокажется установлен, то новое прерывание по трассировке произойдёт не сразу после выполнения инструкцииIRET, а по завершении команды, на которую инструкциейIRETбудет возвращено управление. В процессорах других ЭВМ, не обеспечивающих подобной задержки прерывания по трассировке, обычно используются две инструкции возврата из прерывания – одна для “обычного” возврата, другая – для возврата с задержкой прерывания по трассировке. Например, в 16-разрядных мини-ЭВМ семействаPDP-11 фирмыDEC(советский аналог – ЭВМ типа СМ-3, СМ-4, СМ-1420 и т.п.) имеются инструкции возврата из прерыванияRTIиRTT, отличающиеся друг от друга именно реакцией на флажок трассировки.

      1. Программные прерывания

Программные прерывания возникают при выполнении инструкций INT n, гдеn– номер вектора прерывания, которое должно произойти. Коды этих команд состоят из двух байтов: первый содержит код операции (CD), второй – номер вектора прерывания. При прерывании в стеке сохраняется адрес следующей инструкции.