Interrupciones ensamblador
Tres tipos de interrupciones: • Internas (TRAPS) • Externas (HARDWARE) • Software Existen 256 interrupciones En el modo real cada una tiene un vector asociado Vectores de 4 bytes: segmento + offset
.... 0000:0008 0000:0006 0000:0004 0000:0002 0000:0000
Memoria principal 32 50 F0 8A
Segmento Offset
Vector INT 0 = F032:8A50
(dirección donde comienza la rutina de atención)Número de interrupción: Internas : implícito Externas : Enviado por el periférico solicitante Software : indicado en la propia instrucción
INTERRUPCIONES
INT 0 INT 1 INT 2 INT 3 INT 4
Error de división por 0 Ejecución paso a paso NMI (No enmascarable) Instrucción INT Desbordamiento (INTO) Reservadas por INTEL (modo protegido)
INT 32 INT 33 INT 34
Utilizables por el usuario
INT255 Cada vector: 4 bytes La tabla ocupa 256x4 = 1024 bytes (1 Kbyte) Dirección del vector: 0: INT x 4
INTERRUPCIONES
Proceso de una interrupción: 1. Guarda registro F en la pila 2. IF=0, TF=0 3. Guarda CS en la pila 4. CS = NUM_INT x 4 + 2 5. Guarda IP en la pila 6. IP = NUM_INT x 4 Retorno de interrupción: IRET Realiza el proceso inverso
INTERRUPCIONES
Internas 0 1 2 3 4
Error dedivisión por 0 Ejecución paso a paso NMI (No enmascarable) Instrucción INT Desbordamiento (INTO) El cociente no cabe en el registro destino Se produce una interrupción cada vez que se ejecuta una instrucción si el flag T está activado Interrupción hardware (NMI) Produce una interrupción cuando se ejecuta la instrucción INT (1 byte) - BREAKPOINTS Si el flag O está activado se dispara al ejecutar lainstrucción INTO
Reservadas
Son necesarias en el modo protegido Fallos de página Nivel de privilegio insuficiente Violación de límite de segmento No deben utilizarse en el modo real IBM las utilizó en el PC
Software
Cualquier interrupción se puede disparar mediante la instrucción
INT n
INTERRUPCIONES
Hardware
NMI
NMI activa en flanco de subida
INTR
CPU
INTR activa a nivelalto
La CPU genera dos impulsos de reconocimiento de interrupción
REQ0 INTA .... REQ4 Lógica
INTR INTA
Reconocimiento Petición vector
Nº de vector
D0 .. D7
INTERRUPCIONES
Interconexión de varios dispositivos a la línea de interrupción
El PIC 8259 (“Programmable Interrupt Controller”)
ESQUEMA INTERNO DE BLOQUES
INT
BUFFER D0..D7 BUS DE DATOS LÓGICA DE CONTROL
INTA
RD#WR#
Bus interno (8 bits)
LÓGICA LECTURA/ ESCRITURA
A0 CS#
REGISTRO INTERRUPCIONES EN SERVICIO
ÁRBITRO DE PRIORIDADES
ISR
IRR
REGISTRO DE PETICIÓN DE INTERRUPCIÓN
CAS0 CAS1 CAS2 SP/EN
CONTROL DE CASCADA
IRQ0 IRQ1 IRQ2 IRQ3 IRQ4 IRQ5 IRQ6 IRQ7
IMR
REGISTRO DE MÁSCARA
INTERRUPCIONES
Proceso de una interrupción en el PIC
1. Un periférico solicita interrupciónIRR
0 0 0 1 0 0 0 0 Se activa el bit correspondiente en ISR
IRR
REGISTRO DE PETICIÓN DE INTERRUPCIÓN
IRQ0 IRQ1 IRQ2 IRQ4 IRQ5 IRQ6 IRQ7
INT IRQ3
2. El PIC solicita interrupción a la CPU (INT) 3. La CPU reconoce la petición con un primer pulso de INTA 4. Se activa el bit correspondiente de ISR y se desactiva en IRR
IRR
0 0 0 0 0 0 0 0
ISR
0 0 0 1 0 0 0 0
5. La CPU envía elsegundo pulso de INTA 6. El PIC coloca un puntero de 8 bits en el bus de datos El valor del puntero es distinto para cada entrada IRQ Es programable 7. A partir de entonces comienza a ejecutarse la rutina de atención
INTERRUPCIONES
Fin de interrupción (EOI)
Los bits activos de ISR bloquean futuras peticiones por esa línea
ISR
0 0 0 1 0 1 0 0
Líneas activas
Líneas bloqueadasDeben ponerse a 0 al terminar la rutina de servicio: (EOI) Formas de poner a 0 el bit de ISR: 1. Programar el modo automático (AEOI) El bit se pone a 0 automáticamente al colocar el puntero en el bus de datos 2. Enviar al PIC el comando EOI: No específico : pone a 0 el de más prioridad Específico: pone a 0 el que se le indica Generalmente se envía el EOI justo antes del IRET
INTERRUPCIONES...
Regístrate para leer el documento completo.