Interrupciones ensamblador

Solo disponible en BuenasTareas
  • Páginas : 8 (1895 palabras )
  • Descarga(s) : 7
  • Publicado : 22 de junio de 2010
Leer documento completo
Vista previa del texto
INTERRUPCIONES
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...
tracking img