Microprocesador - 8086 interrupciones

Interruptes el método de crear una parada temporal durante la ejecución del programa y permite que los dispositivos periféricos accedan al microprocesador. El microprocesador responde a esa interrupción con unISR (Rutina de servicio de interrupción), que es un programa corto para instruir al microprocesador sobre cómo manejar la interrupción.

La siguiente imagen muestra los tipos de interrupciones que tenemos en un microprocesador 8086:

Interrupciones de hardware

La interrupción de hardware es causada por cualquier dispositivo periférico al enviar una señal a través de un pin específico al microprocesador.

El 8086 tiene dos pines de interrupción de hardware, es decir, NMI e INTR. NMI es una interrupción no enmascarable e INTR es una interrupción enmascarable que tiene menor prioridad. Un pin de interrupción más asociado es INTA llamado reconocimiento de interrupción.

NMI

Es un solo pin de interrupción no enmascarable (NMI) que tiene mayor prioridad que el pin de solicitud de interrupción enmascarable (INTR) y es de tipo 2 interrupción.

Cuando se activa esta interrupción, se llevan a cabo estas acciones:

  • Completa la instrucción actual que está en curso.

  • Coloca los valores del registro de bandera en la pila.

  • Inserta el valor de CS (segmento de código) y el valor de IP (puntero de instrucción) de la dirección de retorno en la pila.

  • La IP se carga desde el contenido de la palabra ubicación 00008H.

  • CS se carga desde el contenido de la siguiente ubicación de palabra 0000AH.

  • El indicador de interrupción y el indicador de captura se restablecen a 0.

INTR

El INTR es una interrupción enmascarable porque el microprocesador será interrumpido solo si las interrupciones están habilitadas usando la instrucción de establecer bandera de interrupción. No debe habilitarse usando la instrucción Clear interrupt Flag.

La interrupción INTR se activa mediante un puerto de E / S. Si la interrupción está habilitada y NMI está deshabilitado, entonces el microprocesador primero completa la ejecución actual y envía '0' en el pin INTA dos veces. El primer '0' significa que INTA informa al dispositivo externo que se prepare y durante el segundo '0' el microprocesador recibe los 8 bits, digamos X, del controlador de interrupción programable.

Estas acciones las realiza el microprocesador:

  • Primero completa la instrucción actual.

  • Activa la salida INTA y recibe el tipo de interrupción, digamos X.

  • El valor del registro de bandera, el valor CS de la dirección de retorno y el valor de IP de la dirección de retorno se envían a la pila.

  • El valor de IP se carga desde el contenido de la ubicación de la palabra X × 4

  • CS se carga desde el contenido de la siguiente ubicación de palabra.

  • La bandera de interrupción y la bandera de trampa se restablecen a 0

Interrupciones de software

Algunas instrucciones se insertan en la posición deseada en el programa para crear interrupciones. Estas instrucciones de interrupción se pueden utilizar para probar el funcionamiento de varios manejadores de interrupciones. Incluye -

INT- Instrucción de interrupción con número de tipo

Es una instrucción de 2 bytes. El primer byte proporciona el código de operación y el segundo byte proporciona el número de tipo de interrupción. Hay 256 tipos de interrupciones en este grupo.

Su ejecución incluye los siguientes pasos:

  • El valor del registro de bandera se envía a la pila.

  • El valor CS de la dirección de retorno y el valor de IP de la dirección de retorno se introducen en la pila.

  • La IP se carga a partir del contenido de la ubicación de la palabra 'número de tipo' × 4

  • CS se carga desde el contenido de la siguiente ubicación de palabra.

  • El indicador de interrupción y el indicador de trampa se restablecen a 0

La dirección inicial para la interrupción de tipo 0 es 000000H, para la interrupción de tipo 1 es 00004H de manera similar, para el tipo 2 es 00008H y …… así sucesivamente. Los primeros cinco punteros son punteros de interrupción dedicados. es decir,

  • TYPE 0 la interrupción representa una situación de división por cero.

  • TYPE 1 interrupt representa la ejecución de un solo paso durante la depuración de un programa.

  • TYPE 2 La interrupción representa una interrupción NMI no enmascarable.

  • TYPE 3 interrupción representa una interrupción de punto de interrupción.

  • TYPE 4 interrupción representa interrupción por desbordamiento.

Las interrupciones del Tipo 5 al Tipo 31 están reservadas para otros microprocesadores avanzados, y las interrupciones del 32 al Tipo 255 están disponibles para interrupciones de hardware y software.

INT Instrucción de interrupción de 3 puntos de ruptura

Es una instrucción de 1 byte que tiene el código de operación CCH. Estas instrucciones se insertan en el programa de modo que cuando el procesador llega allí, detiene la ejecución normal del programa y sigue el procedimiento de punto de interrupción.

Su ejecución incluye los siguientes pasos:

  • El valor del registro de bandera se envía a la pila.

  • El valor CS de la dirección de retorno y el valor de IP de la dirección de retorno se introducen en la pila.

  • La IP se carga desde el contenido de la palabra ubicación 3 × 4 = 0000CH

  • CS se carga desde el contenido de la siguiente ubicación de palabra.

  • El indicador de interrupción y el indicador de trampa se restablecen a 0

INTO - Interrupción en instrucción de desbordamiento

Es una instrucción de 1 byte y su mnemónico INTO. El código de operación para esta instrucción es CEH. Como sugiere el nombre, es una instrucción de interrupción condicional, es decir, está activa solo cuando el indicador de desbordamiento se establece en 1 y se bifurca al manejador de interrupciones cuyo número de tipo de interrupción es 4. Si el indicador de desbordamiento se restablece, la ejecución continúa al siguiente instrucción.

Su ejecución incluye los siguientes pasos:

  • Los valores de los registros de banderas se envían a la pila.

  • El valor CS de la dirección de retorno y el valor de IP de la dirección de retorno se introducen en la pila.

  • La IP se carga desde el contenido de la ubicación de la palabra 4 × 4 = 00010H

  • CS se carga desde el contenido de la siguiente ubicación de palabra.

  • La bandera de interrupción y la bandera de trampa se restablecen a 0