Interrupciones de Software (BIOS y DOS)

25
Interrupciones de software Dr. Sergio Luis Castillo Valerio

description

Descripción del uso de las interrupciones de BIOS y DOS en ensamblador con sinaxis de Nasm

Transcript of Interrupciones de Software (BIOS y DOS)

Introduccin a NASM

Interrupciones de softwareDr. Sergio Luis Castillo Valerio

NSub-niveles enLenguaje EnsambladorPara 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 BIOSSub-nivel 0: HardwareNSub-nivel 0: HardwareSe 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.NSub-nivel 1: Funciones del BIOSEl 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.NSub-nivel 2: Funciones del SOSon 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 funciones.InterrupcionesUna 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.)NInterrupciones mascarables y no mascarablesLas 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 habilitar.cli y sti modifican el valor de la bander IF (interruption flag)Interrupciones de softwareLas 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 servicios que ofrecer a los programadores por medio de interrupciones de software.Atencin a las interrupcionesCuando 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).Se localiza la direccin de inicio de la rutina de servicio a ejecutar en la Tabla de Vectores de Interrupcin y se ejecuta.Al terminar la rutina de servicio, se reanuda la ejecucin del programa suspendido restaurando CS:IP desde la pila.Rutina de servicioUna 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).NSolicitud 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.NTabla de Vectores de InterrupcinEn 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.NTabla de Vectores de InterrupcinLa 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.NTabla de Vectores de InterrupcinEl 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 10h10h x 4 = 40hEn la celdas 0:40h a 0:43h estn almacenados el Segmento y el Desplazamiento de la direccin de inicio de la rutina de servicio para la Int 10h

Interrupciones de BIOS(Basic Input Output System)NInterrupciones de BIOSLas 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.NLlamada a las rutinas o interrupciones de BIOSDado 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.NLlamada a las rutinas de BIOSPor 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.NAlgunos ejemplos de rutinas deBIOSAlgunos 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 parmetros ni regresa informacin alguna.NAlgunas rutinas de BIOSOtro ejemplo de interrupcin de BIOS es:int 11h: Banderas de BIOS del equipoEntrada: NingunaRegresa: AX = Palabra de equipoLa 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.Este ejemplo ilustra una interrupcin que no requiera parmetros de entrada, pero s regresa informacin. Algunas rutinas de BIOSint 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 videoEntrada: AH = 0, AL= No. de modoRegresa: NadaNAlgunas rutinas de BIOSint 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.NUso de rutinas de BIOSA 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 Normalmov al,0 ; Pgina completa.mov ah,6; preparamos int 10h/06hint 10h* Note que es necesario inicializar los registros adecuadosantes de ejecutar la instruccin int.* De esta manera aseguramos que se pasen los argumentosadecuados a la rutina de servicio.NInformacin de referencia sobre rutinas de BIOSEn las siguiente pgina se puede consultar informacin de referencia sobre las interrupciones de BIOS:Help PC Reference Guidehttp://stanislavs.org/helppc/En la seccin Interrupt Services DOS/BIOS/EMS/Mouse.Gracias por su atencin!

Dudas?