Команды программных прерываний

Опубликовано февраля 3, 2018 в Архитектура процессора Intel

Команды программных прерываний являются генераторами прерываний и включаются в программу для вызова различных служебных функций, команды (INT n) DOS или BIOS.

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

Команды перехода но счетчику

В основном эти функции сводятся к:

  1. сохранению состояния прерванной программы;
  2. вызову про1раммы-обработчика прерываний.

При сохранении состояния прерванной профаммы на аппаратном уровне производится сохранение в стеке содержимого трёх регистров процессора:

  1. FLAGS;
  2. CS;
  3. IP.

Для вызова обработчика прерываний тип прерывания п, который задаётся вторым байтом команды, модифицируется путём умножения на 4 в адрес соответствующего вектора прерываний из таблицы векторов, которая хранится в основной памяти и занимает в ней область с младшими адресами, которая является зарезервированной для служебных функций. Каждый элемент этой области, называемый вектором прерывания, состоит из 4 байт, которые и являются полным указателем программы — обработчика прерываний. При вызове обработчика младшее слово вектора прерывания пересылается в регистр IP, а старшее слово — в регистр CS.

Чехол Samsung Galaxy S9 Plus, а так же пленки, стекла, качественные аксессуары и многое другое на сайте компании E-star.

Действия, выполняемые двухбайтной командой INT п (с заданным типом прерывания):

  1. Последовательное сохранение в стеке регистров FLAGS, CS, IP;
  2. Модификация второго байта команды, номера типа прерывания, в адрес вектора прерывания сдвигом на два разряда влево (умножением на 4);
  3. Чтение из основной памяти двух последовательных слов, адреса программы-обработчика прерываний, с их загрузкой в регистры IP и CS.

Однобайтные команды INT по умолчанию используют тип прерывания, равный 3, выполняемые ею действия аналогичны выполняемым выше. Как правило, эту команду используют для реализации останова в контрольной точке при отладке программы.

INTO — предварительно осуществляет проверку значения флага OF. Если он сброшен, то осуществляется передача управления следующей команде программы. При установленном флаге реализуются действия, аналогичные определённым выше, для типа прерываний 4 (стандартный тип прерывания по переполнению).

IRET — возврат из обработчика прерывания. Действие этой команды аналогично действию однобайтной команды RET FAR, но дополнительно из стека извлекается содержимое регистра флагов.