Контроллер имеет регистр для счетчика программ, который отслеживает адрес, по которому хранится следующая для исполнения инструкция. (Этот регистр также записывается при выполнении прыжка.)
Контроллер имеет вектор прерывания (или иногда более одного, в зависимости от типа прерывания), который является адресом, где хранится ISR. Этот адрес всегда один и тот же - это как вектор сброса, с которого начинается программа.
(Часто в этом векторе хранится инструкция перехода, которая переходит к фактическому коду для выполнения, поскольку места в векторе недостаточно для хранения всей процедуры. Однако важно то, что ISR всегда находится в одном и том же месте. позиция.)
Когда происходит прерывание, в контроллере есть специальное оборудование, которое записывает счетчик программ с вектором прерывания. Затем, когда контроллер достигает следующего цикла инструкций, он выбирает команду с адреса, на который указывает программный счетчик (то есть вектор прерывания).
(В одном цикле команд контроллера есть разные задачи, которые он выполняет: он выбирает следующую инструкцию с адреса, на который указывает счетчик программы; он увеличивает счетчик программы; он декодирует инструкцию и выполняет ее.)
CALL
инструкция, так как прерывания прекращается по-другому (смRET
противRETI
).