Está en la página 1de 25

Interrupciones de

software
Dr. Sergio Luis Castillo Valerio

Sub-niveles en
Lenguaje Ensamblador
Para interactuar con el usuario, es

necesario tener acceso a los dispostivos de


E/S.

Un programa en ensamblador puede tener

tres sub-niveles de acceso a estos


dispositivos:

Sub-nivel 2: Funciones del Sistema

Operativo.
Sub-nivel 1: Funciones del BIOS
Sub-nivel 0: Hardware

Sub-nivel 0: Hardware
Se requiere la informacin tcnica de

referencia del hardware del sistema


para programar a este nivel.

Se accesan directamente las reas de

memoria y los registros de E/S de los


perifricos a programar.

Toda la operacin de E/S queda bajo la

total responsabilidad del programador.

Sub-nivel 1: Funciones del


BIOS
El BIOS (Basic Input Output System)

ofrece una serie de funciones bsicas


de E/S.

Se invocan por medio de

Interrupciones de Software.

Se requiere la informacin de

referencia del BIOS para poder utilizar


estas funciones o interrupciones.

Sub-nivel 2: Funciones del SO


Son funciones con ms alto nivel

de abstraccin, pero se invocan


tambin por medio de
interrupciones de software.
Requieren que el sistema operativo
est cargado y controlando el
sistema.
Al igual que las funciones de BIOS,
se requiere informacin de
referencia para usar estas

Interrupciones
Una interrupcin es un suceso que nos

obliga a suspender temporalmente


una tarea en ejecucin.
Interrupciones de hardware y de
software.
Las solicitudes de interrupciones de
hardware son producidas por algn
evento de E/S (opresin de una tecla,
recepcin de un carcter en el puerto
serie, etc.)

mascarables y no
mascarables
Las interrupciones mascarables

pueden ser ignoradas


temporalmente por el CPU.
Las interrupciones no mascarables
siempre deben ser atendidas
cuando se presentan.
En la arquitectura IA32, la
instruccin cli inhabilita las
interrupciones mascarables, y la
instruccin sti las vuelve a

Interrupciones de software
Las interrupciones de software son

producidas por la ejecucin


intencional de una instruccin.
En IA32 esta instruccin es int ##

(donde ## es un identificador de la
interrupcin)

Es responsabilidad del diseador

de la computadora definir los

Atencin a las interrupciones


Cuando el procesador acepta una

interrupcin, maneja igual los 2 tipos de


interrupciones (de hardware de
software).
Al aceptar la solicitud de interrupcin, se
realizan automticamente los siguientes
pasos:
Se guarda en la pila la direccin de la siguiente
instruccin a ejecutar del programa actual
(contenido de registros CS e IP).
2. Se localiza la direccin de inicio de la rutina de
servicio a ejecutar en la Tabla de Vectores de
Interrupcin y se ejecuta.
3. Al terminar la rutina de servicio, se reanuda la
1.

Rutina de servicio
Una rutina de servicio es un procedimiento

que ejecuta las instrucciones de E/S


necesarias para atender al dispositivo que
produjo el evento, o ejecutar las instrucciones
asociadas con la interrupcin de software.
En algn momento estos procedimientos
deben ser cargados a la memoria.
Una parte de esta carga se realiza durante el
encendido del equipo (BIOS) y se completa
con la carga del sistema operativo (DOS).

Solicitud de Interrupcin
(Interruption ReQuest)
Cada dispositivo de E/S tiene asociado un

nmero de solicitud de interrupcin nico


(IRQ, Interruption ReQuest) que lo identifica.
Cada IRQ es una seal de control que viaja
por el bus de control del microprocesador.
Cuando algn dispositivo de E/S genera una
solicitud de interrupcin, el procesador
identifica su nmero de IRQ y, si esa
interrupcin no est mascarada, la acepta.

Tabla de Vectores de
Interrupcin
En caso de aceptar atender una

solicitud de interrupcin, el procesador


utiliza el nmero asociado a la IRQ
como ndice para buscar en una tabla la
direccin de inicio de la rutina de
servicio adecuada.
En la IA32, los primeros 1024 bytes de
la memoria RAM (Segmento = 0000h)
estn destinados a la Tabla de Vectores
de Interrupcin.

Tabla de Vectores de
Interrupcin
La Tabla de Vectores de Interrupcin

contiene las direcciones de inicio de las


Rutinas de Servicio de los dispositivos
de E/S y de las interrupciones de
software del sistema.

Cada entrada de esta Tabla ocupa 4

bytes: dos para guardar el segmento y


dos para guardar el desplazamiento de
la direccin de inicio de cada rutina de
servicio.

Tabla de Vectores de
Interrupcin
El procesador multiplica por 4 el IRQ del

dispositivo, o el ## de la instruccin int


##, para determinar la entrada a la tabla
que contiene la direccin de inicio de la
rutina de servicio a la que debe saltar.
Por ejemplo, para la interrupcin 10h
10h x 4 = 40h
En la celdas 0:40h a 0:43h estn

almacenados el Segmento y el
Desplazamiento de la direccin de

Interrupciones de BIOS
(Basic Input Output
System)

Interrupciones de BIOS
Las interrupciones del BIOS son

interrupciones de software que nos


proveen de un conjunto de rutinas
para el manejo bsico de entradas y
salidas en bajo nivel.

Como toda interrupcin de software,

se invocan con la instruccin INT ##,


donde ## identifica a la interrupcin.

Llamada a las rutinas o


interrupciones de BIOS
Dado que son subrutinas o

funciones, muchas de las


interrupciones del BIOS requieren
que se les pasen argumentos.

En general, es por medio de los

registros de uso general que se


pasan argumentos a las
interrupciones de software.

Llamada a las rutinas de BIOS


Por tanto, pasar argumentos a estas

interrupciones requiere colocar en


los registros indicados los valores
adecuados para cada funcin.
Esta informacin acerca de cada
interrupcin, la funcin que realiza,
sus parmetros de entrada y sus
datos de salida, se encuentran en
los manuales de referencia de la
IBM PC y compatibles.

Algunos ejemplos de
rutinas de
BIOS
Algunos ejemplos de interrupcines

de BIOS son:
int 5h: Copia a la impresora el
contenido de la pantalla en modo
texto.
Entrada: Ninguna.
Regresa: Nada

Esta interrupcin es un ejemplo de

una rutina que no requiere

Algunas rutinas de BIOS


Otro ejemplo de interrupcin de

BIOS es:
int 11h: Banderas de BIOS del
equipo
Entrada: Ninguna
Regresa: AX = Palabra de equipo

La palabra de equipo es un grupo

de bits que definen algunas


caractersticas como: nmero de
puertos serie y paralelo, y nmero
de drives, entre otros.

Algunas rutinas de BIOS


int 10h: Rutinas de video. Esta es

realmente una familia de rutinas que


tienen que ver con el manejo de la
tarjeta de video.
Algunas de estas funciones son fijar el
modo de video (texto o grfico), y
ubicar el cursor en pantalla, entre otras.
Por ejemplo:
int 10h/0: Fija el modo de video
Entrada: AH = 0, AL= No. de modo
Regresa: Nada

Algunas rutinas de BIOS


int 10h/6: Desplaza la pgina activa

hacia arriba.

Entrada: AH = 6, AL = No. de lneas a

desplazar (0 para pgina completa), CL=Fila,


Esquina Superior Izquierda, CH=Columna,
Esq. Sup. Izquierda, DH=Fila, Esq. Inferior
Derecha, DL=Columna, Esq. Inf. Derecha,
BH=Atributo a ser usado.
Regresa: Nada.
Estos ejemplos ilustran muy bien que

algunas funciones requieren ms


parmetros que otras.

Uso de rutinas de BIOS


A manera de ejemplo, presentamos el

cdigo utilizado para limpiar la pantalla


utilizando Int 10h/6.
mov cx,0000h

; Fila 0, Col 0, esq. Sup. Izq.

mov dx,184fh

; Fila 24, Col 79, esq. Inf. Der.

mov bh,7

; Atributo Normal

mov al,0

; Pgina completa.

mov ah,6

; preparamos int 10h/06h

int 10h
* Note que es necesario inicializar los registros adecuados
antes de ejecutar la instruccin int.
* De esta manera aseguramos que se pasen los argumentos
adecuados a la rutina de servicio.

Informacin de referencia
sobre rutinas de BIOS
En las siguiente pgina se puede

consultar informacin de referencia


sobre las interrupciones de BIOS:
Help PC Reference Guide
http://stanislavs.org/helppc/

En la seccin Interrupt Services

DOS/BIOS/EMS/Mouse.

Gracias por su

atencin!
Dudas?

También podría gustarte