AYUDANTIA Nº 2 INTERRUPCIONES Ayudante: Viviana Muñoz Arquitectura de Computadores II INTERRUPCIÓN: Una interrupción es un suceso, más o menos inesperado, que se produce bien como consecuencia de un evento externo de la CPU (por los dispositivos E/S), o bien por la propia CPU como consecuencia de la ejecución o intento de ejecución de una instrucción. Por cualquiera de estos motivos una interrupción debe entenderse como un suceso que se produce inesperadamente, pero que hay que tratarlo inmediatamente. TIPOS DE INTERRUPCIONES Las interrupciones implican una ruptura en la secuencia del programa saltando al código que da ese servicio y cuando se ha terminado, se vuelve a la ejecución del programa en curso Pueden ser: – Interrupciones hardware: son generadas por los circuitos asociados al microprocesador en respuesta a algún evento como pulsar una tecla del teclado – Interrupciones software: son generadas por un programa para llamar a ciertas subrutinas almacenadas en memoria ROM o RAM Es posible cambiarlas y crear otras nuevas. Los pasos para llamar a una interrupción son: identificar la interrupción necesaria, pasar los parámetros a la subrutina, llamar a la interrupción Las interrupciones salvaguardan los flags y los registros que emplean 1 Cuando se produce una interrupción, lo normal es: Abandonar el flujo secuencial de ejecución actual. Dar control a una Rutina de Tratamiento de la Interrupción. Ejecutar la RTI . Reanudar el flujo normal de ejecución en el punto donde se interrumpió. Como existen distintos motivos para generar una interrupción, debe existir una rutina de tratamiento para cada tipo o motivo de interrupción posible. INTERRUPCIONES INTERNAS SE PUEDEN PRODUCIR POR 2 MOTIVOS 1. En la ejecución de una instrucción se detecta alguna anomalía Como por ejemplo, que el código de operación es desconocido, que se intenta dividir por cero, o que se ha realizado una operación aritmética que ha producido un overflow. 2. Interrupciones Simuladas o Interrupciones de Software Son generadas por instrucciones del lenguaje máquina incluidas en el código de un programa, cuyo cometido es única y simplemente provocar una interrupción. Cuando se ejecuta una de estas instrucciones de interrupción Software, el tratamiento es el mismo que si se hubiera generado por un dispositivo externo, cambia la rutina eso si. Llamada a una interrupción dentro del código de Lenguaje Máquina Fases que efectúa: Se genera una interrupción por software. Esto nos permitirá usar unas determinadas funciónes o rutinas del BIOS y del DOS. Su forma de trabajar es muy semejante a la llamada a una subrutina. INT tipo_int Apila los flags. IF=0 y TF=0, inhibe las interrupciones. Apila la dirección de retorno. Accede a la tabla de interrupciones según el tipo de interrupción Desapila la dirección de retorno. Devuelve al control al programa. 2 Veremos 4 servicios de la interrupción 21h. Servicio 01. Lee un carácter introducido por teclado introduciendo su código ASCII en el registro AL. MOV AH,01 INT 21H Servicio 07. Hace lo mismo que el servicio 01 pero este carácter no aparece por pantalla. MOV AH,07 INT 21H Servicio 02. Muestra un carácter por pantalla. Para ello debemos introducir en un registro de datos como puede ser DL, el código ASCII de dicho carácter. MOV AH,02 MOV DL,41H INT 21H Servicio 09. Escribe una cadena de caracteres por pantalla. Esta cadena de caracteres ha de definirse en el segmento de datos en una variable. MOV AH,09 MOV DX,OFFSET VAR1 INT 21H EJEMPLOS: Programa que presenta en pantalla la letra “A”. Push ds mov ax,0 push ax mov ah, 2 mov dl, 65 int 21h ret Programa que lee una tecla pulsada y la muestra en pantalla. PUSH DS MOV AX,0 PUSH AX MOV AH,07 INT 21H MOV DL,AL MOV AH,02 INT 21H RET Correo [email protected] Tarea Nº 1 3