[ЭКЗАМЕН 30] Срабатывание прерывания. Обработчик прерывания в реальном режиме. Возврат из обработчика прерывания. - mRrvz/bmstu-asm GitHub Wiki

Срабатывание прерывания

  • Сохранение в текущий стек регистра флагов и адреса возврата (адреса следующей команды)
  • Передача управления по адресу обработчика из таблицы векторов
  • Настройка стека (возможно, обработчику прерываний нужен свой стек, потому что стек остается связан с той программой, которая работала до срабатывания прерывания; если обработчик сложный, то иногда такие обработчики перенастраивают стек)
  • Повторная входимость (реентерабельность), необходимость запрета прерываний (Кузнецов: "таймер тикает, срабатывают прерывания. В какой-то момент прерывание тика таймера не успевает отработать до след тика, вызывается еще раз тоже прерывание и нужно обеспечить корректную работу в такой ситуации"; запрет прерывания можно делать только на короткий срок, иначе можно потерять данные (переполнение буфера клавиатуры, например))

Обработчик прерывания в реальном режиме

Располагается в самом начале памяти, начиная с адреса 0. Доступно 256 прерываний. Каждый вектор занимает 4 байта - полный адрес. Размер всей таблицы - 1 Кб.

Возврат из обработчика прерываний

IRET - используется для выхода из обработчика прерывания. Восстанавливает FLAGS, CS:IP. При необходимости выставить значение флага обработчик меняет его значение непосредственно в стеке.

Следующий вопрос: Процессор 80386. Разрядность, регистры.

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