Процедура обслуживания прерывания 8086

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


person Diptopol Dam    schedule 16.06.2011    source источник


Ответы (2)


ПК загружается, загружая содержимое в начале диска в начало оперативной памяти. Ожидается, что это содержимое, попав в оперативную память, частично перезапишется, при этом первый килобайт оперативной памяти будет выделен для «ТАБЛИЦЫ ВЕКТОРОВ ПРЕРЫВАНИЯ» (IVT).

IVT состоит из 256 записей SEG:ADDRESS, которые «вызываются» в соответствии с номером INT.

Так, например, если бы я сказал INT 10h, процессор ищет 16-ю запись в IVT (по адресу памяти 0000:0040h), устанавливает CS на значение первого слова по этому адресу и устанавливает IP на второе слово по адресу этот адрес, поэтому машина продолжает выполнение с нового адреса в CS:IP, пока не достигнет инструкции IRET, где она устанавливает CS:IP на следующую инструкцию до того, как было вызвано прерывание.

Это основной механизм, однако вы не заметите, что прерывания также могут быть вызваны из вещей, которые являются внешними по отношению к выполняемой программе. 8086 имеет пару каскадных контроллеров прерываний, которые могут генерировать запрос на прерывание в любое время без предварительной подготовки процессора, поэтому, хотя машина должна сохранять CS:IP в стеке перед переходом на адрес, индексированный IVT, она также должен помещать в стек все остальные регистры, включая флаги. Точно так же они должны быть извлечены из стека в IRET.

person Stephen Duffy    schedule 09.04.2020

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

Эта ссылка может оказаться полезной: Аппаратные прерывания

person Trevor Arjeski    schedule 06.07.2011