Hola,
Las interrupciones se activan mediante la flag IF (que podes prender con la instrucción STI). Cuando la CPU arranca, las interrupciones están deshabilitadas, por lo que deberías habilitarlas con esta instrucción, pero antes de habilitarlas es necesario instalar las interrupciones necesarias, utilizando el vector de interrupciones. El vector de interrupciones tiene 256 elementos, que cada uno de estos es una dirección segmentada (es decir 4 bytes: 16 bits de segmento y 16 bits de desplazamiento) donde la dirección indica donde se encuentra la rutina de atención a la interrupción seleccionada. Al darse una interrupción el procesador utilizará la dirección del vector para saltar a la rutina que maneja la interrupción, por lo que si vos no lo instalas, podría saltar a cualquier lugar, ejecutando basura cuando se da la interrupción. Entonces para instalar las interrupciones deberías poner en el vector de interrupciones (segun el indice) la dirección segmentada para la rutina.
Cada elemento del vector ocupa 4 bytes, donde los primeros 2 son el desplazamiento, y los siguientes 2 son el segmento y se encuentra a partir de la dirección 0 absoluta. Podes verlo en el dibujo de las diapositivas que adjunto. En el dibujo podes ver como dice Vector 0 (es decir el elemento 0) y la dirección segmentada (desplazamiento y segmento) y así para los 256 elementos. Entonces, para instalar una interrupción deberías primero saber el indice dentro del vector de interrupciones donde lo vas a instalar, imaginate que sea 9 (es algo dado).
Entonces en el elemento 9 vamos a poner nuestra dirección. Como cada elemento ocupa 4 bytes, sabemos que el desplazamiento del elemento 9 se encuentra en 9*4 (el indice es 9 y 4 la cantidad de bytes por elem) y el segmento en 9*4 +2. Imaginate que tenes una interrupción que se llama int1. Con las directivas segment y offset podes obtener el segmento y desplazamiento de tu interrupción int1, haciendo segment int1 y offset int1, que es lo que necesitas poner en el vector de interrupciones
Ahora lo que necesito hacer es, escribir en el vector de interrupciones la direccion segmentada. Como el vector se encuentra a partir de la dirección 0, en la dirección 9*4 escribo el desplazamiento de la rutina y en 9*4+2 el segmento de la rutina.
Entonces tendrías algo asi:
xor ES, ES ; ES = 0 donde arranca el vector
mov ES:[9*4], offset int1 ; escribo en la posición de memoria 9*4 el desplazamiento correspondiente a la rutina int1
mov ES:[9*4+2], segment int1 ; escribo en la posición de memoria 9*4+2 el segmento correspondiente a la rutina int1
sti ; habilito las interrupciones
...
int1 proc far; esta es tu interrupcion
...
Cualquier cosa si no queda claro preguntá de nuevo
saludos!