El controlador tiene un registro para el contador del programa que realiza un seguimiento de la dirección donde se almacena la siguiente instrucción a ejecutar. (Este registro también se escribe cuando se ejecuta un salto).
El controlador tiene un vector de interrupción (o, a veces, más de uno, dependiendo del tipo de interrupción), que es la dirección donde se almacena el ISR. Esta dirección es siempre la misma: es como el vector de reinicio, donde se inicia el programa.
(A menudo, hay una instrucción de salto almacenada en este vector que salta al código real para ejecutar, ya que el espacio en el vector no es suficiente para almacenar todo el procedimiento. Sin embargo, lo importante es que el ISR siempre se encuentra en el mismo posición.)
Cuando ocurre una interrupción, hay un hardware dedicado en el controlador que escribe el contador del programa con el vector de interrupción. Luego, cuando el controlador alcanza el siguiente ciclo de instrucciones, obtiene la instrucción de la dirección que señala el contador del programa (por lo tanto, el vector de interrupción).
(En un ciclo de instrucciones del controlador hay diferentes tareas que realiza: obtiene la siguiente instrucción de la dirección señalada por el contador del programa; aumenta el contador del programa; decodifica la instrucción y la ejecuta).
CALL
instrucción ordinaria , ya que las interrupciones se terminan de una manera diferente (cf.RET
vs.RETI
).