Cuando ocurre una instrucción INT, ya sea generada por el hardware o por el programa, el CPU conserva el estado actual del registro de banderas (FLAGS) guardándolo en la pila. Entonces se limpia la bandera de interrupciones y se coloca el valor 0 en la bandera TRAP. Limpiar la bandera IF is igual que ejecutar la instrucción CLI (Clear Interrupt), en ambos casos se deshabilitan las interrupciones y se asegura que el CPU no sea interrumpido hasta que procedimiento de INT realice su tarea crítica. Un manejador de interrupciones puede habilitar las interrupciones tan pronto como termine, utilizando la instrucción STI (Set Interrupt) para que otra interrupción pueda ocurrir. La instrucción STI se puede omitir si el código del manejador es muy corto.
Después el CPU guarda el valor actual del registro CS colocándolo en
la pila. Entonces se carga el CS que corresponde al manejador de interrupciones
que se encontraba almacenado en la tabla del vector de interrupciones. La
tabla del vector de interrupciones se encuentra al fondo de la memoria RAM.
La tabla se indexa multiplicando el número de la interrupción por 4 y
después sumándole 2. Esto es:
El valor actual del IP se guarda colocandolo en la pila. El nuevo IP se carga
con el valor del offset del manejador de instrucciones almacenado en el
vector de interrupciones. La tabla del vector de interrupciones se indexa
multiplicando el valor de la interrupción por 4. Esto es:
Lo último que hace un manejador de interrupciones es ejecutar la instrucción IRET. La instrucción IRET regresa el control del CPU al proceso interrumpido haciendo lo opuesto a la instrucción INT. Esto es, toma una palabra de la pila (2 bytes) y la coloca en el IP, y que es el offset de la siguiente instrucción que se ejecutará. La siguiente palabra se saca de la pila y se almacena en el registro CS y que corresponde al segmento de la siguiente instrucción a ejecutarse. La última palabra que se recupera de la pila se almacena en el registro de bandera (FLAGS).
Este proceso le regresa el control al programa interrumpido. Puesto que el estado de la máquina se ha reestablecido (esto es, el valor de los registros) a como estaban, el programa interrumpido no se da cuenta que fue suspendido y continúa su ejecución sin cambios.
La técnica del vector de interrupciones proporciona un forma muy pura para hacer modificaciones a las interrupciones de los programas sin cambiar las formas de las funciones del CPU. Todo lo que se debe hacer es cambiar las direcciones de puntos de entrada en la tabla. La cambios más comunes en los programas de manejo de interrupciones (o programas de servicio) se hacen cuando se carga un sistema operativo.