El controlador tiene un registro para el contador de programas 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 algunas veces más de uno, según el 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 comienza 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 la misma posición.)
Cuando se produce 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, recupera las instrucciones de la dirección a la que apunta el contador del programa (es decir, el vector de interrupción).
(En un ciclo de instrucciones del controlador, realiza diferentes tareas: obtiene la siguiente instrucción de la dirección a la que apunta el contador del programa; aumenta el contador del programa; descodifica la instrucción y la ejecuta .)