Прерывания, указатель инструкций и очередь инструкций в 8086 году

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

Теперь большинство учебников / документов описывают, что указатель инструкций также помещается в сегмент стека, что нормально, поскольку он указывает на следующий байт инструкции в сегменте кода (непосредственно перед выполнением запроса на прерывание).

Но что происходит с очередью инструкций? Он также помещается в сегмент стека при обработке запроса на прерывание? Или его содержимое очищено до нуля? В этом случае, не следует ли уменьшить указатель команд, чтобы его можно было указывать на предыдущие инструкции в сегменте кода (после обработки прерывания)?

Вот,После запроса прерывания на самом деле означаетПосле обработки запроса на прерывание, Эта диаграмма показывает, что до того, как пришел запрос на прерывание, инструкции были кэшированы,с IP, указывающим на адрес следующего байта инструкции в сегменте памяти CS, Для обслуживания запроса прерывания, содержимое регистров (включительно IP и флаги) помещаются в сегмент стека. После обработки запроса предыдущее содержимое загружается обратно -с IP-адресом, указывающим на расположение 7-го байта (инструкции), с очередью (кешем) пустой. Вот в чем мое сомнение.IP уменьшается, чтобы указывать на i1? Во-вторых, нужно ли нам вручную обрабатывать IP (например, помещать его в стек при прерывании) или программа обработки прерываний обрабатывает это для нас? Пожалуйста, любая помощь приветствуется, спасибо!

Замечания:Очередь инструкций - Архитектура 8086 имеет шестибайтовый конвейер инструкций предварительной выборки. Поскольку исполнительный модуль выполняет текущую инструкцию, интерфейсный модуль шины заранее считывает из памяти до шести байтов кодов операций.

Ответы на вопрос(2)

Ваш ответ на вопрос