Прерывания и особые ситуации - это изменения нормального хода программы для обработки внешних событий, для сообщения об ошибках и об особых условиях.
Прерывания используются для обработки внешних асинхронных событий (обычно это получение сигналов от оборудования). Программные прерывания называют особыми ситуациями . Так, широко используемые «командные прерывания» (команда INT п) квалифицируются процессором как особые ситуации.
Особые ситуации можно разделить на ошибки, ловушки и неудачи.
Ошибки (нарушения, fault) - это особые ситуации, которые генерируются и обслуживаются до исполнения вызвавшей их команды (например, когда она обращается к странице, отсутствующей в памяти).
Ловушки {trap) - особые ситуации, о которых сообщается сразу после выполнения команды, вызвавшей ситуацию. Командные прерывания, определяемые программистом, являются здесь типичным примером.
Неудачи (аварии, abort) - особые ситуации, не позволяющие точно определить команду-причину ситуации. Примерами могут служить сбои аппаратуры или недопустимые значения в системных таблицах. Используются для фиксации фатальных ошибок. Каждый источник прерывания и каждый тип особой ситуации имеет идентификационный номер (от 0 до 255); микропроцессор использует этот номер для вызова соответствующего обработчика.
Номера особых ситуаций определяются процессором. Номера прерываний определяются операционной системой: программируемый контроллер прерываний 8259А инициализируется ОС таким образом, что каждый источник прерываний ассоциируется со своим номером. При появлении прерывания 8259А передает МП номер прерывания. Команды прерываний указывают номера в своих операндах.