26. Прерывание. Классификация. Команда INT

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

В зависимости от источника различают прерывания:

  • Аппаратные (внешние) – реакция процессора на физический сигнал от некоторого устройства. Возникают в случайные моменты времени, а значит – асинхронные
  • Программные (внутренние) – возникает в заранее запланированный момент времени — синхронные
  • Исключенияразновидность программных прерываний, реакция процессора на некоторую не стандартную ситуацию возникшую во время выполнения команды;

Вектор прерываний – адрес процедуры обработки прерываний. Адреса размещаются в специальной области памяти доступной для всех подпрограмм. Вектор прерывания одержит 4 байта: старшее слово содержит сегментную составляющую адреса процедуры обработки исключения, младшее — смещение.

Вызов прерывания осуществляется с помощью директивы INT номер_прерывания.
00h – 1Fh – прерывания BIOS
20h – 3Fh – прерывания DOS
40h – 5Fh – зарезервировано
60h – 7Fh – прерывания пользователя
80h – FFh – прерывания Бейсика

Порядок выполнения INT:
1) В стек помещается содержимое регистра флагов FLAGS
2) Флаги трассировки и прерывания устанавливаются в нуль (TF = 0, IF = 0)
3) Вычисляется адрес соответствующего вектора прерываний – 4*номер_прерывания
4) Содержимое сегментного регистра CS помещается в стек
5) Содержимое второго слова вектора прерываний заносится в CS
6) Содержимое управляющего регистра IP заносится в стек
7) Первое слово вектора прерываний помещается в IP

Процедура используемая для обработки прерывания должна быть дальней (FAR). Возврат с прерывания осуществляется при помощи директивы IRET, которая восстанавливает CS:IP и FLAGS. Все параметры в процедуру и из нее передаются через регистры, какое – зависит от прерывания.

17.07.2015