Diferencia entre ISR y llamada de función

Interrumpir :

  • Una interrupción es un tipo especial de condición que ocurre durante el funcionamiento de un microprocesador.
  • El microprocesador atiende la interrupción ejecutando una subrutina llamada rutina de servicio de interrupción (ISR).
  • La interrupción puede ser dada al procesador por la señal externa (es decir, en los pines externos de un microprocesador) o como una interrupción de software o por la condición producida por el programa.

Mecanismo de manejo de interrupciones:

  • Cuando ocurre una interrupción, el procesador primero finaliza la instrucción actual.
  • Luego suspende el programa actual y ejecuta una ISR.
  • Para esto, empuja el valor de PC (dirección de la siguiente instrucción) a la pila.
  • Ahora carga la dirección ISR en la PC y procede a ejecutar la ISR.
  • Al final de la ISR, extrae la dirección de retorno de la pila y la vuelve a cargar en la PC.
  • Así es como el procesador vuelve a la siguiente instrucción del programa.

Mecanismo de manejo de interrupciones

Ejemplo 1: 
 transferencia de E/S por E/S controlada por interrupción

  • Si un dispositivo de E/S desea realizar una transferencia de datos con el procesador, debe interrumpir al procesador.
  • Una interrupción es una condición que hace que el procesador ejecute una ISR (rutina de servicio de interrupción).
  • En el ISR, el procesador realizará la transferencia de datos con el dispositivo de E/S.
  • Siempre que un dispositivo quiera transferir datos, interrumpirá el procesador.

Ejemplo 2 – 
Solicitud de interrupción presionando la tecla del teclado,

  • En lugar de que el procesador verifique todo el tiempo si se presiona una tecla, el teclado interrumpe al procesador como cuando presionamos una tecla. En el ISR del teclado, que forma parte del software del controlador del teclado, el procesador leerá los datos del teclado.

Función :

  • Una subrutina (procedimiento/Subrutina) es un conjunto de instrucciones que el programa necesita repetidamente. Se almacena como una subrutina y el programa principal la llama desde varios lugares.
  • En el caso de un procesador 8086, una subrutina es invocada por una instrucción CALL y el control regresa por una instrucción RET.
  • Reduce el tamaño del programa.
  • Se ejecuta lentamente porque se desperdicia tiempo para insertar y extraer la dirección de retorno en la pila.
  • Depende de la pila.

Diferencia entre ISR y llamada de función:

SL. No.

Rutina de servicio de interrupción (ISR) 

Llamada de función 

1.

La interrupción generalmente es iniciada por un microprocesador interno (es decir, dividido por cero, desbordamiento de registro, etc.) o externo (es decir, pines externos de)  en lugar de la ejecución de instrucciones (es decir, interrupción de software). Después de almacenar el estado actual del programa (es decir, el valor de PC, PSW) en la pila, se ejecuta el ISR. ISR realiza diferentes tipos de tareas según el dispositivo que interrumpió o las instrucciones escritas por un programador (en el caso de interrupciones de software). La llamada de función se invoca mediante la ejecución de instrucciones, que realizan tareas específicas, y también reduce el tamaño del programa.

2.

  • La dirección ISR está escrita dentro de la tabla de vectores de interrupción.
  • Por ejemplo
    en el caso de 8086, el primer 1 KB de memoria, dirección 00000 H … 003FF H, está reservado para IVT.
  • La dirección ISR para cada interrupción es fija.
La dirección de la subrutina está escrita dentro de las instrucciones que están escritas en el código del programa principal.  

3.

La dirección de la ISR está determinada por el hardware. La dirección de la subrutina está escrita dentro del programa principal.

4.

ISR se utiliza para todas las tareas de propósito general.
Por ejemplo:  
si el papel en la impresora no está presente, la impresora genera la interrupción y ejecuta un ISR (es decir, un mensaje de error en la pantalla). 
Las llamadas a funciones se realizan para tareas específicas del programa (es decir, para tareas específicas de la aplicación).

5.             

Cuando ocurre una interrupción durante la ejecución de un programa actual, por lo tanto, después de la ejecución de la instrucción actual, el procesador ejecuta ISR. Después de la ejecución de ISR, el procesador debe reanudar la programación exactamente como antes de que ocurriera la interrupción. Para ello se almacena el contenido del PC, contenido de registros µP y el contenido de algunas condiciones de estado.
La recopilación de todas las condiciones de los bits de estado en un microprocesador se denomina PSW (palabra de estado del programa).

Durante el ciclo de interrupción, los contenidos de PC y PSW se colocan en la pila. La dirección de rama para la interrupción en particular se pasa luego a la PC y se carga una nueva PSW en el registro de estado.

La última instrucción en el ISR es el regreso de una instrucción interrumpida. Cuando se ejecuta esta instrucción, la antigua PSW y la dirección de retorno se extraen de la pila. 

Aquí, solo se almacena una PC en la pila para obtener la dirección de la siguiente instrucción en el programa principal.

Es necesario que la subrutina tenga acceso a los datos de la subrutina que llama y que devuelva resultados a esa subrutina. Por lo tanto, se realizan los parámetros de subrutina y el enlace de datos.

Esto se puede hacer a través 

  • El registro AC se puede utilizar para un solo parámetro de entrada y un solo parámetro de salida. En computadoras con múltiples registros de procesador, se pueden pasar más parámetros de esta manera.
  • Otra forma de pasar datos a una subrutina es a través de la memoria.

Publicación traducida automáticamente

Artículo escrito por goutamnagpal y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *