Interrupciones - Departamento de Sistemas e Informática

Anuncio
Departamento de Sistemas e
Informática
Programación en Assembler - Clase 4
Digital II
Interrupciones
Una interrupción es una llamada generada por hardware (o software)
que interrumpe al programa principal y transferirá el control a un
procedimiento previamente definido (servicio de interrupción).
Las interrupciones son de especial utilidad cuando se conectan
dispositivos E/S que usualmente requiere su atención a
velocidades de transferencias mas o menos bajas. (ej. Teclado)
El 8086 tiene dos terminales de entrada a través de los cuales se
solicitan interrupciones (INTR y NMI) y una de salida (INTA) que
reconoce la interrupción solicitada.
Adicionalmente existen instrucciones que pueden generar un ciclo de
interrupción (INT, INTO, INT3, BOUND).
Clase 4– Interrupciones y DVIO– Digital II
2
Interrupciones
Vectores de Interrupción
Es un número de 4 bytes, cada vector contiene
la dirección (CS:IP) de un procedimiento de
servicio de interrupción previamente
establecido.
Tabla de vectores de Interrupción (IVT)
Existen 256 vectores de interrupción distintos
que ocupan los primeros 1024 bytes de la
memoria (00000h-003FFh).
En un sistema estándar, los primeros 32 vectores
están reservados para usos específicos el
resto (32-255) están disponibles para el
usuario.
Clase 4– Interrupciones y DVIO– Digital II
Tipo 255
…
0Ch – Tipo 3
Sobreflujo
08h – Tipo 2
NMI
04h – Tipo 1
Trap
00h - Tipo 0
División por cero
3
Interrupciones
Mecanismo de interrupción
Cuando el microprocesador termina la ejecución de una instrucción
verifica si existe alguna interrupción activa (pines NMI, INTR o
instrucción INT), si esto es así se desencadena el siguiente
proceso:
Se salva el contenido del registro de FLAGS en la pila
Se desactivan las interrupciones (IF, TF)
Se salva el contenido del registro CS en la pila.
Se salva el contenido del registro IP en la pila.
Se recupera el contenido del vector de la interrupción solicitada y
se coloca en CS:IP de modo que se ejecute la rutina de servicio de
interrupción.
Clase 4– Interrupciones y DVIO– Digital II
4
Interrupciones
Mecanismo de interrupción
Las instrucciones STI y CLI activan y desactivan respectivamente las
interrupciones.
Para retornar de una rutina de servicio de interrupción debe utilizarse
la instrucción IRET, la cual vuelve a habilitar las interrupciones
deshabilitadas durante el llamado.
Clase 4– Interrupciones y DVIO– Digital II
5
Dispositivos Virtuales I/O
Espacio de entrada salida
Como sabemos la instrucción mov [BX],AX graba datos en el espacio de
memoria, en forma análoga las intrucciones in y out leen o escriben
datos en otro espacio que conocemos como espacio de entrada
salida.
Usualmente en un sistema microprocesado en el espacio de entrada
salida se mapean todos los dispositivos físicos que permiten al
sistema comunicarse con el medio exterior.
Cuando hablamos del espacio de entrada salida, en lugar de direcciones
hablamos de “puertos”
Clase 4– Interrupciones y DVIO– Digital II
6
Dispositivos Virtuales I/O
Dispositivos virtuales
Para poder utilizar el espacio de entrada salida en el emu8086 es
necesario mapear dispositivos en él.
En nuestro caso estos dispositivos son virtuales ya que están
implementados por software que emulan el comportamiento de un
dispositivo real.
Llamamos dispositivos virtuales de Entrada/Salida (DVIO), a los
elementos emulados por el módulo de software realizado por la
Cátedra.
Clase 4– Interrupciones y DVIO– Digital II
7
Dispositivos Virtuales I/O
Mapa de entrada salida
Los DVIO pueden dividirse
en dispositivos de
entrada, de salida o de
entrada/salida según el
sentido de la transferencia
de datos.
En nuestro caso los DVIO se
encuentran mapeados
según el esquema
mostrado
Clase 4– Interrupciones y DVIO– Digital II
8
Dispositivos Virtuales I/O
Listado de interrupciones
Algunos DVIO generan pedidos de interrupción al microprocesador
cuando corresponde. La siguiente tabla muestra todos los dispositivos
y en caso de generar interrupciones se indica su “tipo”
Clase 4– Interrupciones y DVIO– Digital II
9
Dispositivos Virtuales I/O
Ejemplo de DVIO utilizando interrupciones
Escribir un programa en assembler que contabilice la cantidad de
pulsaciones pares de un botón conectado al sistema.
Ejemplos de DVIO sin utilizar interrupciones
Referirse al help de los DVIO y sus correspondientes ejemplos de
utilización.
Clase 4– Interrupciones y DVIO– Digital II
10
Gracias!
Clase3 – Pila y Procedimientos– Digital II
11
Descargar