Interrupciones Del Z80
Una interrupción es una señal por lacual se interrumpe momentáneamente el secuenciamiento del programa, se trata dicha interrupción mediante una rutina y después se vuelve al punto donde se interrumpió.
Como ya comenté previamente,en el Z80 tenemos 2 biestables (dispositivos que almacenan un bit) llamados IFF1 y IFF2. El primero se usa para indicar si las interrupciones enmascarables (las que pueden ignorarse) están habilitadas(IFF1=1) o inhibidas (IFF1=0) y el segundo nos servirá como respaldo del primero (ya veremos luego como).
Hay dos tipos de interrupciones: enmascarables (INT) y no enmascarables (NMI). Ladiferencia entre ambas es que las primeras pueden ignorarse si así se configura el computador y las segundas hay que tratarlas obligatoriamente.
Para habilitar las INT se usa la instrucción EI que pone a 1los biestables IFF1 y IFF2, mientras que para inhibirlas usaremos la instrucción DI que los pone a 0.
Interrupción no enmascarable
Cuando se produce una NMI el procesador sigue los siguientespasos:
1. Salvaguarda el contador de programa (PC) en la pila.
2. Guarda el valor de IFF1 en IFF2 y pone IFF1=0 (inhibe INT).
3. Pone PC=0x0066 (Salta a la dirección 0x0066).
Una vezrealizado este proceso, en la dirección 0x0066 estará la rutina correspondiente a su tratamiento. Cabe fijarse que no se puede interrumpir a una NMI con una INT porque pone IFF1 a 0.
Finalmente, cuandoacabe la rutina de tratamiento de interrupción se ejecutará la instrucción RETN que copia IFF2 en IFF1 (restaura el valor guardado) y restaura el PC desde la pila para continuar la ejecución donde sequedó.
Interrupción enmascarable
Hay tres modos diferentes en que puede estar el procesador para atender a las INT, estos modos llamados 0, 1 y 2 se establecen con las instrucciones IM0, IM1 y...
Regístrate para leer el documento completo.