Hay tres clases de interrupcin: por hardware, por software e internas (a las dos ltimas tambin se las llama "excepciones"). Veremos primeramente el caso de interrupciones por hardware: el 8086/8088 tiene dos entradas de peticin de interrupcin: NMI e INTR y una de reconocimiento (INTA). La gran mayora de las fuentes de interrupcin se conectan al pin INTR, ya que esto permite enmascarar las interrupciones (el NMI no). Para facilitar esta conexin, se utiliza el circuito integrado controlador de interrupciones, que tiene el cdigo 8259A.
Existen algunas interrupciones predefinidas, de uso
exclusivo del microprocesador, por lo que no es recomendable utilizar estos tipos de interrupcin para interrupciones por hardware o software. Tipo 0: Ocurre cuando se divide por cero o el cociente es mayor que el valor mximo que permite el destino. Tipo 1: Ocurre despus de ejecutar una instruccin si TF (Trap Flag) vale 1. Esto permite la ejecucin de un programa paso a paso, lo que es muy til para la depuracin de programas. Tipo 2: Ocurre cuando se activa la pata NMI (interrupcin no enmascarable).
Tipo 3: Existe una instruccin INT que ocupa un slo byte,
que es la correspondiente a este tipo. En los programas depuradores (debuggers) (tales como Debug, CodeView, Turbo Debugger, etc.), se utiliza esta instruccin como punto de parada (para ejecutar un programa hasta una determinada direccin, fijada por el usuario del depurador, se inserta esta instruccin en la direccin orrespondiente a la parada y se lanza la ejecucin. Cuando el CS:IP apunte a esta direccin se ejecutar la INT 3, lo que devolver el control del procesador al depurador). Debido a esto, si se le ordena al depurador que ejecute el programa hasta una determinada direccin en ROM (memoria de slo lectura) (por ejemplo, para ver cmo funciona una subrutina almacenada en dicha memoria), la ejecucin seguir sin parar all (ya que la instruccin INT 3 no se pudo escribir sobre el programa). En el 80386, con su elaborado hardware de ayuda para la depuracin, se puede poner un punto de parada en ROM.
Tipo 4: Ocurre cuando se ejecuta la instruccin de
interrupcin condicional INTO y el flag OF (Overflow Flag) vale 1. Los tipos 5 a 31 (1F en hexadecimal) estn reservados para interrupciones internas (tambin llamados "excepciones") de futuros microprocesadores. Prioridad entre diferentes fuentes de interrupcin: 1) Error de divisin, INT n (no enmascarable), INTO. 2) NMI (no enmascarable). 3) INTR (enmascarable mediante IF). 4) Ejecucin paso a paso (enmascarable mediante TF).
Ciclo de DMA
El ciclo de DMA es un poco ms complicado ya que tanto la funcin de
lectura como de escritura son realizados en un mismo ciclo. El bus es controlado por el controlador DMA y no por el 8088 Los ciclos de DMA no son iniciados ni por el 8088 ni por el controlador de DMA sino por una peticin de un adaptador de interfase. El bus del sistema posee tres seales: DRQ1, DRQ2 y DRQ3 producidas por el controlador DMA. Un ciclo de DMA puede ser iniciado al poner en alto cualquiera de estas seales. La primera indicacin en el sistema que una peticin ha sido aceptada y que un ciclo de DMA ha iniciado es cuando la seal AEN del bus es activada. Luego de activarse la seal AEN, una de cuatro posibles seales (DACK0, DACK1, DACK2, DACK3) es activada. Estas seales le indican al adaptador de interfase que canal de DMA est siendo atendido.
Cuando el controlador DMA no est ejecutando un ciclo
de DMA, se encuentra en lo se conoce como un estado de no actividad, ejecutando continuamente ciclos S0 mientras espera por peticiones de DMA. Cuando una peticin es detectada, el controlador enva una seal al 8088 que le dice que deje el control del bus al siguiente tiempo conveniente. El controlador es puesto en el estado S0 el cual busca continuamente una respuesta del 8088 que le diga que el bus es libre y que puede ser utilizado para iniciar el ciclo DMA. Esta seal se conoce como ALDA y al recibirla el controlador DMA entra en un estado S1 marcando el inicio del ciclo DMA.