unidad1-10 interrupciones de la pc-2.pptx
Post on 17-Jan-2016
236 Views
Preview:
TRANSCRIPT
Interrupciones en la PC
INTERRUPCIONES: Definición
• Una interrupción es un evento que hace que el CPU deje de procesar el programa actual (principal) y pase a ejecutar una tarea específica (otro programa) de servicio a la interrupción.
• Finalidad de las interrupciones: las interrupciones son de particular utilidad cuando se conectan dispositivos de E/S que requieren o suministran datos a velocidades de transferencia más o menos bajas.
INTERRUPCIONES : Objetivos.
• Definición• Mecánica de una interrupción• Tabla de vectores de interrupción• Interrupciones por “hardware”.• Interrupciones por “software”.• Ejecución de Interrupciones en una IBM PC.• Subrutinas de Servicio de Interrupción.• El controlador programable de interrupciones
8259
INTERRUPCIONES EN LA PC
TIPOS DE INTERRUPCIONES EN LA PC
Internas o excepcionesInternas o
excepciones Externas o de hardware
Externas o de hardware
Software Software
No EnmascarablesNMI
No EnmascarablesNMI
EnmascarablesINTR
EnmascarablesINTR
MECANICA DE LA INTERRUPCION
Interrupciones por “software”• CLI; IF ← 0• STI; IF ← 1• ==================================• INT n
((SP)-2) ← FlagsTF ← 0, IF ← 0((SP)-4) ← (CS)(CS) ← (4xn+2)((SP)-6) ← (IP)(IP) ← (4xn)
• IRET(IP) ← ((SP))(CS) ← ((SP)+2)(Flags) ← ((SP)+4)(SP) ← (SP)+6
LA TABLA DE VECTORES DE INTERRUPCION DE LA PCLA TABLA DE VECTORES DE INTERRUPCION DE LA PC
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 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.
Tabla de Vectores
3FF CSH
3FE CSL
3FD IPH
3FC IPL
…… ………
004
003 CSH
002 CSL
001 IPH
000 IPL
Tabla de vectores de interrupción
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.
Un vector de interrupción está formado por la dirección de inicio de la rutina de servicio de la interrupción ISR ( 2 bytes para CS y 2 bytes para IP), CS: IP.
INTERRUPCIONES EN LA PC
LA TABLA DE VECTORES DE INTERRUPCIÓN
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
INTERRUPCIONES EN LA PC
DESCRIPCIÓN DE LA TABLA DE VECTORES DE INTERRUPCIÓN Y SU TIPO
Time of day services68-6B1A
Bootstrap loader64-6719
Points to basic interpreter in a "real" IBM PC60-6318
Printer I/O routines5C-5F17
Keyboard I/O routines58-5B16
PC used for Cassette tape services54-5715
Serial port I/O routines50-5314
Floppy I/O routines4C-4F13
Memory size determination48-4B12
Equipment check44-4711
Video services, see note 140-4310
IRQ7, LPT1, Parallel port hardware3C-3F F
IRQ6, Floppy Disk adaptor38-3B E
IRQ5, LPT2, Parallel port hardware (Hard Disk on XT)34-37 D
INTERRUPCIONES EN LA PC
Read logical sectors94-9725
Critical error handler90-9324
Ctrl-Break exit address8C-8B23
Terminate address88-8B22
All DOS services available through this Interrupt84-8721
Program termination (obsolete)80-8320
Video graphics7C-7F1F
Disk parameters78-7B1E
Video parameters74-771D
Timer tick (provides 18.2 ticks per second)70-731C
Services Ctrl-Break service6C-6F1B
INTERRUPCIONES EN LA PC
Used for EMS functions19C-19F67
Reserved for User programs180-183 to 198-19B60 to 66
Reserved for BIOS17C-17F5F
Reserved for BIOS178-17B5E
Reserved for BIOS174-1775D
Reserved for BIOS16C-16F5B
Reserved for BIOS168-16B5A
Reserved for BIOS148-14B to 164-16752 to 59
Mouse functions144-14751
Reserved for BIOS140-14350
Reserved for BIOS100-103 to 13C-13F40 to 4F
Reserved for DOSA0-A3 to FC-FF28 to 3F
Terminate and stay resident routines (obsolete)9C-9F27
Write logical sectors98-9B26
INTERRUPCIONES EN LA PC
Unused3C4-3C7 to 3C4-3FFF1 to FF
Used by basic218-21B to 3C0-3C386 to F0
Reserved for basic200-203 to 214-21780 to 85
Unused1E0-1E3 to 1FC-1FF78 to 7F
IRQ15, (available hardware interrupt)1DC-1DF77
IRQ14, ISA bus hard disk controller1D8-1DB76
IRQ13, maths co-processor1D4-1D775
IRQ12 (available hardware interrupt)1D0-1D374
IRQ11 (available hardware interrupt)1CC-1CF73
IRQ10 (available hardware interrupt)1C8-1CB72
IRQ9, takes the place of IRQ21C4-1C771
IRQ8, ISA bus Real time clock1C0-1C370
Unused1A0-1A3 to 1BC-1BF68 to 6F
INTERRUPCIONES EN LA PC
La familia de microprocesadores de Intel 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.
INTERRUPCIONES EN LA PC
EN GENERAL:
INTERRUPCIONES EN LA PCCuando una interrupción ocurre, independientemente de la fuente, el microprocesador realiza lo siguiente:
1) El CPU guarda (push) el registro de banderas en el STACK
2) La CPU guarda en el 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 al programa principal , debe ejecutar una instrucción IRET ( Interrupt Return). El retorno desde una interrupción recupera del STACK la dirección de retorno lejano y las banderas.
INTERRUPCIONES EN LA PCOperación de las instrucciones INT e IRET
Int16H
00
2EEB
04001509
0915:00020915:00030915:0004
F000:EB2EF000:E82F
IRET
0000:0000
F0
0000:00580000:00590000:005A0000:005B
FLAGS
PROGRAMA PRINCIPALSTACK
TABLA DE VECTOR DE INTERRUPCIONES
RUTINA DE LA ROM BIOS
1
2
3
4
IRET produce un retorno de la rutina de interrupción al programa principal,recuperando del STACK la dirección CS:IP de la instrucción que quedó pendiente
INT 16h produce un FAR CALL a la dirección contenida en el vector de la interrupción 16h, la dirección de retorno se carga al STACK
INTERRUPCIONES EN LA PCINTERRUPCIONES EN LA PC
Termina la instrucción
en curso
Termina la instrucción
en curso
Interrupción interna
Interrupción interna
Ejecuta la Siguiente
instrucción
Ejecuta la Siguiente
instrucción
NMINMI
INTRINTR
TFTF
IFIF Interrupción reconocida
Interrupción reconocida
Lee código de tipo
Lee código de tipo
Push flagsPush flags
Let temp=TFLet temp=TF
Clear IF&TFClear IF&TF
Push CS&IPPush CS&IP
NMINMI
TEMPTEMP
Ejecuta ISREjecuta ISR
Pop IP&CSPop IP&CS
Pop flagsPop flags
Continua con el programa
Continua con el programa
SI
SI
SI
SI
1
1
1
0
0
Call ISRCall ISR
La CPU no puede dejar una instrucción a medio ejecutar, sensa las interrupciones en el último ciclo de máquina de la instrucción en curso y responde al finalizar la instrucción en curso
•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: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.
INTERRUPCIONES EN LA PC
•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 INTERNAS O EXCEPCIONES:INTERRUPCIONES INTERNAS O EXCEPCIONES:
INTERRUPCIONES EN LA PC
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 DE SOFTWARE:INTERRUPCIONES DE SOFTWARE:
INTERRUPCIONES EN LA PC
INTERRUPCIONES EXTERNAS O DE HARDWARE:INTERRUPCIONES EXTERNAS O DE HARDWARE:
INTERRUPCIONES EN LA PC
• 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
La CPU genera dos pulsos de reconocimiento de interrupción
INTR
NMI
INTA
CPU
INTERRUPCIONES EXTERNAS O DE HARDWARE:INTERRUPCIONES EXTERNAS O DE HARDWARE:
INTERRUPCIONES EN LA PC
INTERRUPCIONES EXTERNAS O DE HARDWARE:INTERRUPCIONES EXTERNAS O DE HARDWARE:
INTERRUPCIONES EN LA PC
INTERRUPCIONES ENMASCARABLES
SE HABILITAN O DESHABILITAN POR PROGRAMA:
Con la instrucción STI 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 EXTERNAS O DE HARDWARE:
INTERRUPCIONES EN LA PC
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
INTERRUPCIONES ENMASCARABLES:
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
INTERRUPCIONES EN LA PC
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 la 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 EN LA PC
INTERRUPCIONES EN LA PC
Interrupciones reservadas:IRQ0 Temporizador (Timer)IRQ1 TecladoIRQ8 Reloj de tiempo realIRQ13 Errores del coprocesadorIRQ14 Controlador de disco duroIRQ3 Puerto serie COM1IRQ4 Puerto serie COM2IRQ6 Controlador de disketteIRQ7 Puerto paralelo
PIC MAESTRO Dir E/S = 20h, 21hPIC ESCLAVO Dir E/S = A0h, A1h
Al inicio del sistema se especifica: PIC MAESTRO INT = IRQ + 8 PIC ESCLAVO INT = IRQ + 70h
Ejemplo1
¿En qué dirección en la tabla de vectores debe almacenarse el vector 50?
Cada vector demanda 4 bytes en memoria, razón por la cual multiplicamos el tipo de vector por 4.
4x50=200 en base 10 =C8 en base 16Por lo tanto IP50 se almacena en 00C8y CS50 se almacena en 00CA
CS50: IP50 es la dirección de la subrutina de servicio
Procesamiento de interrupciones: RESUMEN
Cuando el microprocesador 8088/8086 procesa una interrupción (software o harware) ejecuta los pasos siguientes:
• Guarda en la pila el registro de banderas PSW.• Encera las banderas IF=0, TF=0.• Guarda en la pila CS actual.• Guarda en la pila IP actual.• El tipo de interrupcion (n=0,1,2, 255) se multiplica por 4 para obtener
la direccion física de la tabla de vectores y buscar la pareja CS:IP de la subrutina de servicio.
• Con esta dirección CS:IP el CPU busca y ejecuta las instrucciones de la subrutina de servicio.
• La última instrucción de la subrutina de servicio debe ser IRET, que recupera IP, CS y PSW para que el CPU recobre la ejecución del programa principal.
Desinstalación de un Vector de Interrupción
• La función 35H de INT 21H lee un vector de interrupción de la tabla de vectores.
• Entrada:- AH = 35H- AL = # del vector de iterrupción
• Salida:- ES : BX = dirección archivada en el vector- BX = IP de subrutina de servicio de Int.- ES = CS de subrutina de servicio de Int.
Ejemplo
- MOV AH, 35H; obtener vector actual- MOV AL, 50 ;de tipo n=50- INT 21H- MOV IPVIEJO, BX; salva IP- MOV AX, ES- MOV CSVIEJO, AX; salva seg. de código
Instalación de un vector de Interrupción
• La función 25H de INT 21H instala el vector de interrupción en tabla de vectores.
• Entrada:- AH = 25H- AL = # del vector de interrupción- DS : DX dirección de subrutina de servicioDS = CS de subrutina de servicioDX = IP de subrutina de servicio
Ejemplo
- PUSHDS- LEA DX, ISR40
- MOV AX, CS40
- MOV DS, AX- MOV AH, 25H; instala el vector- MOV AL, 40; tipo 40- INT 21H- POP DS
VECTOR DE INTERRUPCION 28(1CH)
• Ver ejemplo INT_1CH en carpeta PRACTICAS.• Este ejemplo ilustra la instalación de una
subrutina de servicio de interrupción en el vector 1CH.
• Esta interrupcion se genera 18 veces por segundo.
FIN
top related