Está en la página 1de 53

INTRODUCCION

8086
MODO MINIMO Y MODO MAXIMO
Conectado MN/MX a tierra (0)
Autnomo
Monotarea
Modo Mnimo
Conectado MN/MX a Corriente
(1)
Paralelo
Multitarea
Es capaz de ampliar el 8086, y un
bus de sistema multibus, permite
configuracin con otros
procesadores (coprocesador
matemtico, reloj).
Modo Mximo
INTERRUPCIOES EN EL 8086
Una estructura de
interrupcin es una forma de
que el procesador provea un
servicio rpido y uniforme
para la E/S, correcciones y
ciertos tipo de error.
El procesador contina con
su trabajo habitual hasta que
ocurre una interrupcin
Salva su estado actual
(puntero de instruccin,
segmento de cdigo e
indicadores )
Ejecuta una rutina especial, y
entonces vuelve a lo que
estaba haciendo antes.
La estructura de interrupciones
del 8086 utiliza una tabla de 256
posiciones de 4 bytes cada una, la
cual est en el inicio de la
memoria.
Cada una de estas posiciones de
la tabla de interrupciones puede
cargarse con un puntero a
diferentes rutinas de la memoria
principal.
A cada uno de estos punteros de
4 octetos se le asigna un nmero
del 0 al 255, segn su posicin en
la memoria.
A este nmero se le llama tipo. Al
tipo de interrupcin 0 se le asigna
la posicin de memoria 0 y as
sucesivamente hasta la posicin
1.020. En general, al tipo N se le
asigna la posicin 4N de
memoria.
Hay un bit de control,
llamado indicador de
interrupcin ( IF ) que
controla si el 8086 responde
o no a las interrupciones
externas.
Cada tipo de interrupcin
puede ser llamado tanto por
hardware como por software.
Este bit puede activarse o
desactivarse a travs de las
rdenes: activar
interrupciones ( STI ) y borrar
interrupcin ( CLI ).
Abriendo y cerrando el
acceso para interrupciones
de la CPU.
TIPOS DE INTERRUPCIOES EN EL 8086
Hay determinadas causas que
hacen que un programa presente
un problema en su ejecucin,
por lo que deber generarse una
interrupcin, de forma que el
sistema operativo trate dicha
causa.
Ejemplos son el desbordamiento
en las operaciones aritmticas, la
divisin por cero, el intento de
ejecutar una instruccin con
cdigo de operacin incorrecto o
de direccional una posicin de
memoria prohibida.
EXCEPCIN DE PROGRAMA
INTERRUPCIN DE RELOJ
Estas interrupciones se producen
cada varios milisegundos, por
ejemplo cada 20 milisegundos, y se
llevan a cabo para que ningn
proceso que se encuentra en el
microprocesador monopolice el
uso y espacio de este, entonces
cada 20 milisegundos el reloj
provoca un reset permitiendo la
entrada de nuevos procesos.
Cuando un dispositivo externo
necesita servicio produce una
seal externa se aplica al pin de
entrada NMI o produce una seal
en la lnea de peticin de
interrupcin ( INTR ), para el caso
del 8086.
Si el 8086 puede responder
(interrupcin activa ), enva una
seal de recibido, bien de forma
directa ( en modo mnimo ), o
bien va el controlador de bus
8288 ( en modo mximo ).
NMI interrupciones no
enmascarable (sin filtro)
INTR interrupcin (con filtro)
Se procesan por medio del
Controlador de Interrupciones
PIC 8259
Principalmente utilizadas en el
manejo de dispositivos de
entrada y salida
HARDWARE
Cuando se ejecuta la
instruccin INT.
Llamadas a las
funciones del BIOS o
a la porcin
residente del
sistema operativo.
SOFTWARE
TABLA DE INTERRUPCIOES DEL 8086
INSTRUCION INT
La instruccin INT es acompaada por un valor hexadecimal que identifica el tipo de
interrupcin.
Ejemplos mas comunes:
INT 10h - BIOS de video
INT 14h - Dispositivo de I/O serie
INT 16h - Llamado al BIOS para el teclado
INT 17h - Servicios de impresin
INT 1Ah - Hora del da
INT 1Ch - Temporizador
INT 21h - Servicios del DOS
LLAMADOS A LAS FUNCIONES DEL DOS (INT 21H)
La instruccin INT 21h activa las funciones de llamado al DOS.
El nmero de la funcin (0-255) se coloca en el registro AH antes de invocar la instruccin INT
21h
Algunas funciones requieren que se asignen valores a otros registros antes de invocarla
interrupcin INT 21h
Algunas funciones regresan valores en registros.
El sistema operativo MS-DOS reserva las interrupciones comprendidas entre 20H hasta 3FH
para su propio uso.
En la mayora de los computadores, las interrupciones 5 y 10H hasta la 1FH son utilizadas por
las rutinas del BIOS.
INTERRUPCIONES POR HARDWARE
El 8086 tiene interrupciones internas y externas
La estructura de las interrupciones se basa en una tabla de vectores almacenados
en memoria entre las posiciones 0H a 3FFH
Cada vector necesita de 4 bytes para almacenar la direccin donde se encuentra la
rutina de servicio
Como 3FFH es de 1K de memoria y cada vector necesita de cuatro bytes,
solamente se cuenta con 256 vectores de interrupcin disponibles
Cuando se le da servicio a la interrupcin las banderas, CS e IP se colocan en la pila
y CS e IP se cargan con el vector interrupcin
EL 8086 TIENE CINCO INTERRUPCIONES
PREDEFINIDAS
Tipo 0 Divisin por cero
Tipo 1 Interrupciones paso a paso (bandera de Trap puesta)
Tipo 2 - NMI (interrupciones no enmascaradas)
Tipo 3 - Puntos de ruptura (breakpoints)
Tipo 4 Interrupcin por rebase (Interrupt Overflow)
Excepto la tipo 1, estas interrupciones no pueden deshabilitarse, solamente
la tipo 2 puede presentarse sin especificaciones del programador.
La interrupcin tipo 2 se presenta cuando hay transiciones de bajo a alto en
el pin de NMI del 8086. Esta es utilizada para emergencias como por ejemplo
fallas de energa elctrica.
Las interrupciones externas son enmascarables por medio de la bandera IF.
Estas interrupciones se activan en el pin de entrada INTR del 8086 y se les da
servicio si la bandera IF = 1.
Con las interrupciones externas, el controlador de interrupciones coloca en el
bus de datos el tipo de interrupcin.
TIPO 0
La interrupcin Tipo 0 especifica una interrupcin de divisin por cero.
Recuerde de la instruccin DIV.
Si el cociente de la divisin utilizando DIV o IDIV es muy grande para ser
almacenado en el registro del resultado, la interrupcin se ejecuta
automticamente.
Es responsabilidad del programador manejar este tipo de interrupcin.
Una posibilidad es definir una bandera de error definida por el programador,
con el fin de enviar un mensaje de error.
INTERRUPCIN PASO A PASO TIPO 1
Si TF (la bandera trap) esta puesta, la interrupcin tipo 1 automticamente se
generar despus de que el procesador ejecute cada instruccin.
En este estado el procesador ejecuta instruccin por instruccin.
Para implementar un sistema paso a paso:
Ponga la bandera TF
Escriba una rutina que salve todos los registros en el stack.
Cargue la direccin de inicio en las direcciones XXXXXXXX
INTERRUPCIONES NO ENMASCARABLES TIPO 2
Automticamente ocurre cuando el procesador recibe una transicin de bajo
a alto en el pin NMI.
Este tipo de interrupcin no puede ser filtrada por ningn programa o
instruccin.
Normalmente se utiliza para sistemas de emergencia como por ejemplo:
Sensores de presin es una caldera
Guardar datos cuando hay falla de energa
INTERRUPCIN PUNTOS DE PRUEBA TIPO 3
Este tipo de instruccin se produce cuando se ejecuta la instruccin INT 3.
No hay disparos automticos.
De mucha utilidad en depuracin.
Muchos depuradores utilizan puntos de ruptura insertando la instruccin INT
3 antes de la instruccin especificada.
La rutina que da servicio a la interrupcin tipo 3 debe respaldar los registros
para que sean examinados por el usuario.
Se puede utilizar INT 03H como puntos de ruptura en cualquier parte del
programa.
INTERRUPCIN DE REBASE TIPO 4
Este tipo de interrupcin se produce si OF (bandera de rebase) se pone, pero
no se dispara automticamente.
La bandera OF se pone si el resultado con signo de una operacin aritmtica
de dos nmeros con signo es muy grande para colocarse en el destino.
01101100 (108 decimal) + 01010001 (81 decimal), con signo
CONCEPTOS BSICOS
Master
Es el nico controlador de
interrupciones encargado de
manejar el sistema de
interrupciones
Esclavo
Existen varios controladores de
interrupciones manejando el
sistema, en este caso debe
existir un amo para que tengan
sentido los esclavos.
INTRODUCCION
Una de las tareas esenciales de
la CPU consiste en responder a
las interrupciones del
hardware.
Es una seal generada por un
componente del ordenador
que indica que ese
componente requiere la
atencin del procesador.
Es necesario jerarquizar las
interrupciones de alguna
manera para decidir cul se
atiende en el caso de que se
produzcan dos o mas
simultneamente.
Es importante el control de
prioridad para el caso de que
se produzca una interrupcin
mientras se est procesando
otra: slo se la atender si es
de mayor prioridad.
El circuito integrado 8259 est
diseado para controlar las
interrupciones en sistemas
basados en el microprocesador
8086.
Puede controlar hasta 8
interrupciones vectorizadas (el
programa tendr siempre una
localidad de memoria
especfica e invariable).
Se puede conectar en cascada
un mximo de 8 chips 8259
adicionales, lo que permite
gestionar sistemas con hasta 64
interrupciones.
DIAGRAMA DE PINS DEL 8259
CS (chip select): Habilita la
comunicacin del CPU con el
microprocesador, tiene que estar
activado para que pueda ser
programado y para leer datos de
estados que sern almacenados
en los registros del PIC.
WR: Permite aceptar comandos
del microprocesador (Escritura
de datos).
RD: Permite dejar la informacin
en el bus de datos (Lectura de
Datos).
D7 - D0: Bus de datos
bidireccional, por el que se
transmite la informacin de
control/estado y el nmero de
vector de interrupcin adecuado
al microprocesador.
CAS0 - CAS2: Lneas de cascada,
actan como salida en el 8259
maestro y como entrada en los
8259 esclavos, en un sistema
con varios 8259
interconectados, constituyendo
un bus local.
Cuando un controlador esclavo recibe
una interrupcin, activa su salida INT
que a su vez alimenta una IR del
maestro.
Entonces el maestro activa las lneas CAS de manera que el
controlador esclavo quede habilitado para colocar en el
bus el vector de interrupcin.
SP/EN: Pin de doble funcin:
Modo no buffered: Indican al controlador si es
un maestro (0) o un esclavo (1).
Modo buffered: En este modo el controlador
puede conectar el bus directamente al
procesador o hacerlo a travs de un buffer. Si se
utiliza el buffer, esta seal es de salida y sirve
para habilitar el buffer en la direccin adecuada.
INT: Conectado a la patilla INT de la
CPU para producir la interrupcin
cuando llegue el momento.
Procedente del controlador se dirige
a la entrada INTR del procesador.
Procedente de un esclavo se dirige a
una de las entradas IR del maestro.
IR0 - IR7: Lneas asncronas de
peticin de interrupcin procedente
de dispositivos de e/s o de otros
controladores (modo cascada). Una
peticin de interrupcin se activan
manteniendo IR en alto (modo por
flancos) o poniendo en alto la lnea
IR (modo por niveles).
INTA: Lnea de reconocimiento de
interrupcin, por medio de esta
lnea se fuerza al 8259 a depositar
en el bus la informacin del vector
de interrupcin. INTA es
independiente de -CS.
A0: En conjuncin con -CS, -WR y -
RD es empleada para enviar las
palabras de comando al 8259 y
para solicitar informacin al mismo.
nica lnea del bus direcciones
usada para seleccionar los registros
de control.
1.
Una o mas lneas IRQ son activadas por los
perifricos conectados al PIC y esto activa los
correspondientes bits del IRR
2.
El 8259 evala la prioridad de estas interrupciones
(mediante la codificacin de prioridad) y solicita
una interrupcin a la CPU activando la lnea INT
3.
Cuando la CPU reconoce la interrupcin enva la
seal INTA
CICLO DE RECONOCIMIENTO DE INTERRUPCIN
4.
Entonces el PIC, recibida la seal INTA, activa el bit correspondiente a la
interrupcin de mayor prioridad (la que va a ser procesada) en el ISR y borra ese
mismo bit en el IRR. En este ciclo, el 8259 aun no controla el bus de datos
5.
Cuando el uP enva un segundo ciclo INTA, el 8259 deposita en el bus de datos
un valor de 8 bits que indica el numero de vector de interrupcin. El uP
multiplica este valor por 4 para buscar en esa direccin de memoria la direccin
de comienzo de la RTI
6.
En el modo AEOI del PIC, el bit de la interrupcin en el ISR es borrado
automticamente nada mas acabar el segundo pulso INTA. En caso contrario,
este bit permanece activo hasta que el uP envi el mandato EOI (End of
interrupt) al final de la rutina que trata la interrupcin
(Interrupt Request Register): Cada uno de los bits de este registro esta
asociado con una de las lneas de peticin de interrupcin. Estos bits
almacenan las peticiones de interrupcin pendientes
IRR
(In-Service Register): Cada uno de los bits asocia con una lnea de peticin de
interrupcin. En este caso solo se activa el bit que corresponde a la interrupcin
que se esta procesando en un momento dado
ISR
(Interrupt Mask Register): Registro de enmascaramiento de interrupciones
IMR
(Solucionador de prioridad ): Determines cuando se puede reconocer otra
interrupcin mientras el CPU esta dando servicio a una primera interrupcin. PR
REGISTROS INTERNOS
Determina que interrupcin, de las solicitadas en
el IRR, debe ser atendida primero
Lgica de gestin de
prioridad
Conecta el 8259 con el bus de datos de la placa
principal del uP
Buffer del bus de
datos
Acepta los comandos que enva el uP; transfiere
el estado del 8259 hacia el bus de datos
Lgica de lectura y
escritura
Almacena y compara las identificaciones de
todos los 8259 del sistema
Buffer de
cascada/comparador
Modo completamente anidado
En este modo, tras la secuencia de inicializacin, las
interrupciones quedan ordenadas, por prioridades,
de mayor (IRQ0) a menor (IRQ7). Este orden puede
modificarse en la modalidad de prioridad rotatoria o
con el mandato de asignacin de prioridad
Cuando se produce un reconocimiento de
interrupcin por parte de la CPU,
el i8259 evala cul es la interrupcin
pendiente de mayor prioridad, coloca
su nmero de vector en el bus y activa su bit
correspondiente en el ISR.
Este bit permanece activo hasta que el 8259 recibe el mandato
EOI (fin de interrupcin) por parte del procesador. Mientras el bit
del ISR est activo, todas las interrupciones de igual o menor
prioridad que lleguen permanecen inhibidas; Sin embargo, las de
mayor prioridad podrn interrumpir.
MODOS DE OPERACIN
Modo completamente anidado especial
se emplea en sistemas que tienen varios PIC
conectados. Slo el i8259 maestro
es programado en este modo.
Las diferencias respecto al Fully Nested
Mode normal son:
Cuando se atiende una interrupcin de
un 8259 esclavo, si viene otra de mayor
prioridad de ese mismo 8259 esclavo,
se provoca una interrupcin al maestro
(normalmente, el 8259 esclavo estara
enmascarado mientras se procesa una
de sus interrupciones).
Cuando acaba la rutina de servicio de interrupcin, hay
que enviar un EOI al 8259 esclavo. Adems hay que leer a
continuacin su ISR y comprobar si es cero. En ese caso,
hay que enviar adems otro EOI al 8259 maestro (si no es
cero significa que an hay interrupciones en proceso en el
8259 esclavo).
Sirve para bajar el bit del ISR que
representa la interrupcin que est
siendo procesada.
El EOI puede producirse
automticamente (AEOI) al final de la
ltima seal INTA que enva la CPU.
Como la mayora de los sistemas
requieren una gestin de prioridades
en las interrupciones, es mejor que el
EOI lo enve el propio procesador al
8259 a travs de OCW2 cuando
termine la RTI (rutina de tratamiento
de la interrupcin).
En un sistema con varios PIC, el EOI
debe ser enviado al 8259 esclavo y
tambin al maestro. Hay dos
modalidades de EOI:
Especifico: si el 8259 es incapaz de
determinar cul fue el ltimo nivel de
interrupcin procesado (no se
respeta el Fully Nested Mode), la RTI
debe enviar un EOI especfico al PIC
indicndole qu bit hay que borrar en
el ISR.
No especifico: el 8259 borra el bit
ms significativo que est activo en el
registro ISR, que se supone que es el
correspondiente a la ltima
interrupcin producida
El EOI (End Of lnterrupt)
La solucin consiste en
asignar el menor nivel de
prioridad a la interrupcin
recin atendida para
permitir que las dems
pendientes se procesen
tambin.
Hay sistemas en que varios
perifricos tienen el mismo
nivel de prioridad, en los
que no interesa mantener
un orden de prioridades en
las lneas IR.
Para ello se enva un EOI que
rote las prioridades. Por
ejemplo, si se haba
procesado una IRQ3, entonces
IRQ3 pasar a tener el menor
nivel de prioridad e IRQ4 el
mayor.
Existe tambin una
asignacin especfica
de prioridades a
travs de OCW2.
Rotacin de prioridades
Hay ocasiones en las que
mientras se ejecuta una
RTI es necesario permitir que
se produzcan ciertas
interrupciones de
menor prioridad
Esto implica alterar la
estructura normal de
prioridades activando el Special
Mask Mode con OCW3 durante
la RTI (es importante inhibirlo
de nuevo al final).
Una vez activado este modo, el
registro IMR indica qu
interrupciones estn permitidas
Special Mask Mode
Rotacin automtica
En este modo, cada vez que una interrupcin
es atendida, como la de mxima prioridad,
queda degradada al rango de menor
prioridad para la siguiente ocasin.
Rotacin especfica
Es un tercer modo en el cual el programador
puede indicarle al controlador, por medio de
un comando, cual es el orden de prioridad
que desea darle a las interrupciones,
concretamente le indica cual es la
interrupcin de mayor prioridad y el resto se
ordenarn entorno a ella.
Ello permite que ninguna interrupcin pueda
acaparar la atencin del procesador.
(Por ejemplo, si decide que la IR5 va a ser la
de mayor prioridad, la IR6 ser la siguiente,
despus IR7 y a continuacin IR0, etc.)
DIAGRAMA ESQUEMTICO INTERNO

También podría gustarte