Está en la página 1de 42

TIPOS DE INTERRUPCIONES

Internas o
Externas
excepciones
Software
o de hardware

No Enmascarables Enmascarables
NMI INTR
TABLA DE VECTORES DE INTERRUPCIÓN

La tabla de vectores de interrupción contiene las


direcciones de las rutinas de servicio de las
interrupciones que realizan las funciones asociadas
con las interrupciones.

Las rutinas del POST del BIOS inicializa la tabla de


vectores, al momento de “bootear”, con las
direcciones de las rutinas suministradas por el código
en la ROM BIOS y después el DOS y nuestros
programas de aplicación agregan sus respectivos
vectores a los vectores de esta tabla, conforme son
cargados..
LA TABLA DE VECTORES DE INTERRUPCIÓN
3FFF

Se ubica en 1024 localidades de RAM en la


parte más baja de la memoria que permiten
256 vectores de interrupción de 4 bytes
cada uno.

Tabla de vectores
de interrupción

CSL 0003
Un vector de interrupción está
CSH 0002 formado por la dirección de inicio
Vector 0
IPL 0001 de la rutina de servicio de la
IPh 0000
interrupción ISR ( 2 bytes para CS y
2 bytes para IP)
LA TABLA DE VECTORES DE INTERRUPCIÓN

Error de división por 0


Ejecución paso a paso
NMI (No enmascarable)
Instrucción INT
Desbordamiento (INTO)

Reservadas por INTEL (modo protegido)

Utilizables por el usuario

Cada vector: 4 bytes


Dirección del vector: 0: INT x 4
La tabla ocupa 256x4 = 1024 bytes (1 Kbyte)
Cuando una interrupción ocurre, independientemente de la fuente, el 80x86 realiza lo
siguinte:

1) El CPU carga (push) el registro de banderas al STACK

2) La CPU carga al STACK la dirección de retorno lejano ( segmento:offset )


primero el valor del segmento.

3) La CPU determina la causa de la interrupción ( esto es, lee el número o tipo


de la interrupción) y toma los 4 bytes del vector de interrupción de la
dirección 0000:vector*4.

4) La CPU transfiere el control a la rutina especificada por la tabla de vectores


de interrupción.

Después de completados estos pasos,la rutina de servicio de la interrupción


toma el control. Cuando la interrupción desea regresar el control , debe ejecutar
una instrucción IRET ( Interrupt Return). El retorno de una interrupción recupera
del STACK la dirección de retorno lejano y las banderas.
Operación de las instrucciones INT e IRET

PROGRAMA INVOCANTE
INT 16h produce un FAR CALL a la STACK
dirección contenida en el vector
de la interrupción 16h, la dirección 0915:0002 Int
de retorno se carga al STACK 0915:0003 16H
0915:0004 4 04
00
TABLA DE VECTOR 1 15
DE INTERRUPCIONES 09
FLAGS
0000:0000

0000:0058 2E
0000:0059 EB RUTINA DE LA
0000:005A 00 ROM BIOS
0000:005B F0
2 IRET produce un retorno de la rutina de
interrupción al programa invocante,
F000:EB2E recuperando del STACK la dirección
F000:E82F CS:IP de la instruccón que quedó
pendiente

IRET
3
DESCRIPCIÓN DE LA TABLA DE VECTORES DE INTERRUPCIÓN Y SU TIPO

Int. Num. Address in I.V.T. Description


0 00-03 CPU divide by zero
1 04-07 Debug single step
2 08-0B Non Maskable Interrupt (NMI input on processor)
3 0C-0F Debug breakpoints
4 10-13 Arithmetic overflow
5 14-17 BIOS provided Print Screen routine
6 18-1B Reserved
7 1C-1F Reserved
8 20-23 IRQ0, Time of day hardware services
9 24-27 IRQ1, Keyboard Interface
A 28-2B IRQ2, ISA Bus cascade services for second 8259
B 2C-2F IRQ3, Com 2 hardware
C 30-33 IRQ4, Com1 hardware
D 34-37 IRQ5, LPT2, Parallel port hardware (Hard Disk on XT)
E 38-3B IRQ6, Floppy Disk adaptor
F 3C-3F IRQ7, LPT1, Parallel port hardware
10 40-43 Video services, see note 1
11 44-47 Equipment check
12 48-4B Memory size determination
13 4C-4F Floppy I/O routines
14 50-53 Serial port I/O routines
15 54-57 PC used for Cassette tape services
16 58-5B Keyboard I/O routines
17 5C-5F Printer I/O routines
18 60-63 Points to basic interpreter in a "real" IBM PC
19 64-67 Bootstrap loader
1A 68-6B Time of day services
1B 6C-6F Services Ctrl-Break service

1C 70-73 Timer tick (provides 18.2 ticks per second)

1D 74-77 Video parameters

1E 78-7B Disk parameters

1F 7C-7F Video graphics

20 80-83 Program termination (obsolete)

21 84-87 All DOS services available through this Interrupt

22 88-8B Terminate address

23 8C-8B Ctrl-Break exit address

24 90-93 Critical error handler

25 94-97 Read logical sectors


26 98-9B Write logical sectors
27 9C-9F Terminate and stay resident routines (obsolete)
28 to 3F A0-A3 to FC-FF Reserved for DOS
40 to 4F 100-103 to 13C-13F Reserved for BIOS
50 140-143 Reserved for BIOS
51 144-147 Mouse functions
52 to 59 148-14B to 164-167 Reserved for BIOS
5A 168-16B Reserved for BIOS
5B 16C-16F Reserved for BIOS
5D 174-177 Reserved for BIOS
5E 178-17B Reserved for BIOS
5F 17C-17F Reserved for BIOS
60 to 66 180-183 to 198-19B Reserved for User programs
67 19C-19F Used for EMS functions
68 to 6F 1A0-1A3 to 1BC-1BF Unused
70 1C0-1C3 IRQ8, ISA bus Real time clock
71 1C4-1C7 IRQ9, takes the place of IRQ2
72 1C8-1CB IRQ10 (available hardware interrupt)
73 1CC-1CF IRQ11 (available hardware interrupt)
74 1D0-1D3 IRQ12 (available hardware interrupt)
75 1D4-1D7 IRQ13, maths co-processor
76 1D8-1DB IRQ14, ISA bus hard disk controller
77 1DC-1DF IRQ15, (available hardware interrupt)
78 to 7F 1E0-1E3 to 1FC-1FF Unused
80 to 85 200-203 to 214-217 Reserved for basic
86 to F0 218-21B to 3C0-3C3 Used by basic
F1 to FF 3C4-3C7 to 3C4-3FF Unused
EN GENERAL:

La familia de microprocesadores 8086 pueden


reconocer 256 diferentes interrupciones, cada una con
un código único de TIPO (número) con el que el
microprocesador lo identifica.

El procesador usa este código de TIPO ( un número


entre 00 y FF en hexadecimal ) para apuntar a una
localidad dentro de la tabla de vectores de interrupción.
La CPU no puede dejar una instrucción a
medio ejecutar, sensa las interrupciones en
Termina la el último ciclo de máquina de la instrucción
instrucción en curso y responde al finalizar la
en curso Call ISR
instrucción en curso
Interrupción SI SI
interna NMI

SI
NMI 1
TEMP

SI 1 Interrupción Lee código


INTR IF Ejecuta ISR
reconocida de tipo

0
Push flags Pop IP&CS
1
TF
Let temp=TF Pop flags
0
Ejecuta la
Siguiente Clear IF&TF Continua con
instrucción el programa
Push CS&IP
INTERRUPCIONES INTERNAS O EXCEPCIONES:

Las genera la propia CPU cuando se produce una situación


anormal o cuando llega el caso. Por desgracia, IBM se saltó
olímpicamente la especificación de Intel que reserva las
interrupciones 0-31 para el procesador.

•INT 0: error de división, generada automáticamente cuando el cociente no cabe en


el registro o el divisor es cero. Sólo puede ser generada mediante DIV o IDIV.

•INT 1: paso a paso, se produce tras cada instrucción cuando el procesador está en
modo traza (utilizada en depuración de programas).

•INT 2: interrupción no enmascarable, tiene prioridad absoluta y se produce incluso


aunque estén inhibidas las interrupciones (con CLI) para indicar un hecho
muy urgente (fallo en la alimentación o error de paridad en la memoria).
INTERRUPCIONES INTERNAS O EXCEPCIONES:

•INT 3: utilizada para poner puntos de ruptura en la depuración de programas,


debido a que es una instrucción de un solo byte muy cómoda de utilizar.

•INT 4: desbordamiento, se dispara cuando se ejecuta un INTO y había


desbordamiento.

•INT 5: rango excedido en la instrucción BOUND (sólo 286 y superiores). Ha sido


incorrectamente empleada por IBM para volcar la pantalla por impresora.

•INT 6: código de operación inválido (sólo a partir del 286). Se produce al ejecutar
una instrucción indefinida, en la pila se almacena el CS:IP de la instrucción
ilegal.

•INT 7: dispositivo no disponible (sólo a partir del 286).


INTERRUPCIONES DE SOFTWARE:

 Producidas por el propio programa usando la


instrucción INT para invocar ciertas subrutinas.

 La BIOS y el DOS utilizan algunas interrupciones


a las que se puede llamar con determinados
valores en los registros para que realicen
ciertos servicios.
INTERRUPCIONES EXTERNAS O DE HARDWARE:

• Son generadas por dispositivos periféricos


externo a través de una señal eléctrica.

• Se solicita la atención de la CPU aplicándole


la señal a sus terminales INT y NMI
• Las Enmascarables por INT : activa a nivel
alto
• Las No Enmacarables por NMI: activa en
flanco de subida
INTERRUPCIONES EXTERNAS O DE HARDWARE:

INTR

NMI
CPU

La CPU genera dos impulsos de reconocimiento


INTA
de interrupción
INTERRUPCIONES EXTERNAS O DE HARDWARE:

INTERRUPCIONES ENMASCARABLES
 SE HABILITAN O DESHABILITAN POR PROGRAMA:

 Con la instrucción SETI se habilitan las interrupciones y pone la


bandera IF a 1
 Con la instrucción CLI se inhiben todas las posibles
interrupciones de este tipo y se pone la bandera IF a 0.

 LA CPU RESPONDE AL SER ACEPTADA LA INTERRUPCIÓN,


CON UNA SEÑAL EN SU TERMINAL INTA ( INTERRUPT
ACNOWLWDGE)
INTERRUPCIONES EXTERNAS O DE HARDWARE:

INTERRUPCIONES ENMASCARABLES:
son solicitadas por periféricos externos, a través de un Controlador de
interrupciones programable ( Programmable Interrupts Controller : PIC)
que se conecta a la terminal INT del mprocesador, La aceptación o no
depende del status de la bandera de interrupciones IF
La IBM PC original usó el controlador de interrupciones 8259.
Este permitía que se pudieran generen hasta 8 señales de
interrupción ( numeradas de 0 a 7).
Estas líneas de interrupción son llamadas líneas de “Interrupt
Request” ( requerimiento de interrupción) o IRQ´s
A partir de la IBM AT se incluyen 2
controladores de interrupción, donde el
segundo controlador (ESCLAVO) está
conectado en cascada a la línea de
interrupción 2 del primer controlador (
MAESTRO) . L a líneas de interrupción del
segundo controlador están numeradas de
8 a 15.

Debido a este “cascadeo”, la línea de


interrupción 2 no está disponible. Sin
embargo ; para compatibilidad con la PC
original, la línea de interrrupción 2 es
conectada a al línea 9 del segundo
controlador ( tal que, si un dispositivo en
la PC es configurado para la interrupción
2, en realidad éste usa la interrupción 9)
Interrupciones reservadas:
IRQ0 Temporizador (Timer)
IRQ1 Teclado
IRQ8 Reloj de tiempo real
IRQ13 Errores del coprocesador
IRQ14 Controlador de disco duro
IRQ3 Puerto serie COM1
IRQ4 Puerto serie COM2
IRQ6 Controlador de diskette
IRQ7 Puerto paralelo

Al inicio del sistema se especifica: PIC MAESTRO Dir E/S = 20h, 21h
PIC MAESTRO INT = IRQ + 8
PIC ESCLAVO Dir E/S = A0h, A1h
PIC ESCLAVO INT = IRQ + 70h
Entradas del controlador programable de interrupciones PIC 8259
El PIC 8259 (“Programmable Interrupt Controller”)

ESQUEMA INTERNO DE BLOQUES


El PIC 8259 (“Programmable Interrupt Controller”)
El registro de máscara

Permite enmascarar individualmente cada entrada:


1 Prohibe interrupciones por esa línea
0 Permite interrupciones por esa línea
El PIC 8259 (“Programmable Interrupt Controller”)

Proceso de una interrupción en el PIC


1. Un periférico solicita interrupción

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
El PIC 8259 (“Programmable Interrupt Controller”)

Proceso de una interrupción en el PIC (continuación)

5. La CPU envía el segundo 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
El PIC 8259 (“Programmable Interrupt Controller”)

Fin de interrupción (EOI)


Los bits activos de ISR bloquean futuras peticiones por esa
línea
El PIC 8259 (“Programmable Interrupt Controller”)

Fin de interrupción (EOI)

 Deben 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
El PIC 8259 (“Programmable Interrupt Controller”)
CONEXIÓN DE LOS CONTROLADORES PROGRAMABLES
DE INTERRRUPCIÓN (PIC) 8259 A LA PC

Los PICs se conectan al sistema a través de Los puertos de E/S


20h/A0h y 21h/A1h.

La primera dirección es la dirección del PIC maestro (IRQ0-IRQ7), la


segunda corresponde al PIC esclavo (IRQ8-IRQ15).

La 20h/A0h es una localidad de lectura/escritura a la cual se escriben


comandos al PIC y se lee su status, nos referiremos a éste como el
registro de comandos o el registro de status.

EL registro de comandos es de sólo escritura y el de status es de sólo


lectura . Ellos solo comparten la misma localidad de E/S. Las líneas de
READ/WRITE del PIC determina que registro va a accesar el CPU.

EL puerto 21h/A1h es una localidad de lecto/escritura que contiene el


registro máscara de interrupción.
Registro de máscara de Interrupción del PIC

El registro de máscara del PIC es


un registro de 8 bits que nos
permite habilitar y deshabilitar
individualmente las interrupciones
de los dispositivos del sistema.
Esto es similar a las acciones de
las instrucciones CLI y STI, pero
sobre un dispositivo

Para deshabilitar la interrupción de algún dispositivo específico, escriba un uno al


registro de máscara
Para habilitar la interrupción de algún dispositivo específico, escriba un cero al
registro de máscara
INTERRUPCIONES DEL BIOS

 SERVICIO A DISPOSITIVOS PERIFÉRICOS..............(6)


 STATUS DEL EQUIPO..................................................(2)
 HORA Y FECHA...........................................................(1)
 PRINT SCREEN...........................................................(1)
 SERVICIOS ESPECIALES............................................(2)
INTERRUPCIONES DEL BIOS

SERVICIO A DISPOSITIVOS PERIFÉRICOS:

 INT 10H............................................SERVICIO DEL VIDEO


 INT 13H............................................SERVICIOS DE DISKETTE
 INT 14H............................................COMUNICACIONES
 INT 15H............................................SERVICIOS DEL SISTEMA
 INT 16H............................................SERVICIOS DEL TECLADO
 INT 17H............................................SERVICIOS DE IMPRESORA
INTERRUPCIONES DEL BIOS

STATUS DEL EQUIPO:


 INT 11H............................................LISTADO DEL EQUIPO
 INT 12H............................................TAMAÑO DE MEMORIA
HORA Y FECHA:
 INT 1AH............................................HORA Y FECHA
PRINT SCREEN:
 INT 5H.............................................IMPRESIÓN DE PANTALLA
 INT 18H...........................................ACTIVAR LA BASIC-ROM
SERVICOS ESPECIALES:
 INT 19H...........................................ACTIVAR RUTINA DE
ARRANQUE CARGADO
Función 02 de la INT 10H del BIOS
Renglón 0
Columna 0 0123
DL 76 77 78 79
0
Colocación del cursor
1
Renglón 0
2
Columna 79
DH
22
Renglón 24
23
Columna 79
24 Renglón 12
Columna 40
Renglón 24 Ejemplo:Colocar al cursor en las posiciones
Columna 0 (DL,DH)=(12,40)
MOV AH,02H ;invocar a la función 2 de la INT
10h

AH=02 INT MOV BH,00 ;trabajar con la página 0


BH=00 10H
DH = renglón
Colocación MOV DH,12 ;cargar el #de columna en DH
DEL
DL = columna del cursor MOV DL,40 ;cargar el # de renglón en DL
BIOS
INT 10H ;Invocar a la rutina del BIOS
Función 06 de la INT 10H del BIOS
Limpiar la pantalla

AH=06
AL=00
INT 10H Limpiar
BH=# de atributo
la pantalla
CX=renglón:columna(inicio) DEL BIOS
DX=renglón:columna ( final )

Cx posición AL=00; Pantalla


inicial completa
00:00

BH=atributo de la
Dx pantalla ejemplo:
18:4F posición 7=blanco 1=azul
final
Atributos de la pantalla
El atributo se carga al registro BH
Cada carácter de la pantalla
monocromática tiene su propio
atributo: BH: b7 b6 b5 b4 b3 b2 b1 b0
 parpadeante o no
Background Foreground
 intensificado o no 000=negro 000=negro
 video normal o 001=azul 001=azul
inverso. 010=verde 010=verde
011=cian 011=cian
Cada posición de un carácter en la 100=rojo 100=rojo
pantalla (25X80=2000 ) es 101=magenta 101=magenta
representado por 2 bytes:
110=café 110=café
 El primero es el ASCII del 111=blanco 111=blanco
caracter
Parpadeo Intensidad
 El segundo es el byte 0= normal
0= normal
que contiene el atributo
1=parpadeante 1=intensificado
SERVICIOS DE LA INT 14H DEL BIOS
MANEJO DEL PUERTO SERIAL

Servicio Descripción
__________________________________________

 00 Inicializa el puerto serial


 01 Envía un carácter
 02 Recibe un carácter
 03 Lee el status del puerto serie
 04 Inicializa el puerto serie extra
 05 Control del puerto de comunc.
SERVICIO 00 DE LA INT 14H :
INICIALIZACIÓN DEL PUERTO SERIAL

ACTIVA LOS PARAMETROS SIGUIENTES:


_________________________________________

 EL BAUDAJE
 LA PARIDAD
 EL NÚMERO DE STOPS BITS
 EL TAMAÑO EN BITS DEL DATO
SERVICIOS DE LA INT 14H DEL BIOS
SERVICIO 00h:INICIALIZACIÒN DEL PUERTO SERIAL

b7 b6 b5 b4 b3 b2 b1 b0

Tamaño del dato


Baudaje # de stops bits
_________
Código de paridad
765 bps
_________ Código de baudaje
000 110 Paridad Tamaño del dato
001 150 ________________ ____________
010 300 43 significado Stop bits 10 significado
011 600 ________________ _____________ ____________
100 1200 00 ninguna bit2 significado 00 No usado
101 2400 01 Paridad impar _____________ 01 No usado
110 4800 10 ninguna 0 1stop bit 10 7 bits
111 9600 11 Paridad par 1 2 stops bits 11 8 bits

También podría gustarte