Está en la página 1de 19

UNIDAD III INTERRUPCIONES DEL BIOS Y DEL DOS

3.1 NIVELES DE COMUNICACIN . PROGRAMA DE USUARIO DOS BIOS HARDWARE.

a).- Los programas de Usuario se clasifican en 3 niveles de lenguajes: - LENGUAJES DE ALTO NIVEL Lenguaje Basic, Visual Basic, Pascal, Foxpro, Fortran, etc - LENGUAJES DE MEDIO NIVEL Lenguaje C y C++ - LENGUAJE DE BAJO NIVEL Lenguaje Ensamblador b).- Los programas de usuario llaman a las interrupciones del DOS . c).- Las interrupciones de DOS llaman a las interrupciones del BIOS. d).- Las interrupciones del BIOS manejan o controlan el HARDWARE CONCLUSIONES. Las rutinas del BIOS cambian con el hardware, o sea que dependen del hardware y las interrupciones del DOS no cambian.

3.2 INTERRUPCIONES DEL BIOS. INT INT 10H 11H VIDEO OBTENER EL ESTADO DEL EQUIPO. OBTENER EL TAMAO DE LA MEMORIA. MANEJO DE DISCOS PUERTO SERIE SERVICIOS DEL SISTEMA. TECLADO. IMPRESORA ENTRADA CON EL Basic DE ROM

INT 12H INT INT INT INT INT INT INT INT INT INT 13H 14H 15H 16H 17H 18H

19H BOOT AL SISTEMA. Es similar al CTR ALT DEL 1AH 1BH LEER Y ESTABLECER LA HORA CTRL. - BREAK

1CH INTERRUPCION TIMER TICK La rutina de servicio tiene normalmente un IRET para que el programa la utilice, esta rutina es llamada por la INT 08H 18.2 veces por segundo.

INT 1DH TABLA DE PARMETROS DE INICIALIZACION VIDEO. No es una interrupcin verdadera, apunta a una tabla. Puesto que no tiene cdigo ejecutable esta interrupcin, no deber ser llamada por el programador. INT 1EH TABLA DE PARMETROS DE INICIALIZACION DISK. Igual que la anterior. INT 1FH TABLA BIT MAP DE CARACTERES GRAFICOS. No es una interrupcin verdadera, apunta a una tabla de caracteres (ASCII) del 128 255.

3.3 PROCESAMIENTO AVANZADO DE LA PANTALLA O VIDEO FUNCIONES DE LA INTERRUPCION 10H ( VIDEO) AH = 00H AH = 01H AH = 02H AH = 03H AH = 04H AH = 05H AH = 06H AH = 07H AH = 08H AH = 09H AH = 0AH AH = 0BH AH = 0CH AH = 0DH AH = 0EH AH = 0FH AH = 11H AH = 12H AH = 13H AH = 1BH AH = 1CH ESTABLECE EL MODO DE VIDEO. ESTABLECE EL TAMAO DEL CURSOR. ESTABLECE LA POSICIN DEL CURSOR LEE LA POSICIN DEL CURSOR LEE LA POSICIN DE LA PLUMA OPTICA. SELECCIONAR LA PAGINA ACTIVA. RECORRE LA PANTALLA HACIA ARRIBA (SCROLL WINDOW UP.) RECORRE LA PANTALLA HACIA ABAJO (SCROLL WINDOW DOWN). LEER CARCTER Y ATRIBUTO EN LA POSICIN DEL CURSOR. ESCRIBIR UN CARCTER Y ATRIBUTO EN LA POSICIN DEL CURSOR. ESCRIBIR UN CARCTER EN EL CURSOR(MODO GRAFICO). PONER EL PALETTE DE COLOR. ESCRIBIR UN PXEL(MODO GRAFICO). LEER UN PXEL(MODO GRAFICO) . ESCRIBIR TEXTO EN MODO TELETIPO. OBTENER EL MODO DE VIDEO ACTUAL. GENERA CARCTER SELECCIONA RUTINA ALTERNA DE PANTALLA DESPLIEGA CADENA DE CARACTERES REGRESA LA INFORMACIN DE FUNCIONALIDAD O DE ESTADO GUARDA O RESTAURA EL ESTADO DE VIDEO

LA PANTALLA O VIDEO La pantalla puede trabajar en 2 modos de video seleccionables , modo TEXTO o modo GRAFICO. La funcin 00H, de la INT 10H, designa el modo de video para el programa que se est ejecutando actualmente (ver tablas de la pagina 156 y 174 del libro). Ejemplo para poner el modo 07h de texto sera as: MOV MOV INT AH, 00H AL, 07H 10H ; Funcin 00h para poner el modo de video ; Modo 07H de texto ; Interrupcin 10H que llama al BIOS

En modo texto la pantalla o video es una matriz de renglones y columnas en donde en cada coordenada se puede poner o ver un caracter. Por cada carcter se utilizan 2 bytes, uno para el atributo y otro para el cdigo ascii del carcter. Por ejemplo un monitor comn de video tiene 25 renglones y 80 columnas(modo 07H de texto). 80 X 25 = 2000 caracteres.

2000 caracteres / pant X 2 Bytes = 4000 bytes / pantalla. El sistema proporciona un espacio en la memoria para un rea de despliegue de video, o bfer. El rea de despliegue monocromtico (2 colores) inicia en la localidad de BIOS B000:0000H y permite utilizar 4Kb de memoria para caracteres : 2Kb para el cdigo ascii y 2Kb para el atributo( como video inverso, intermitencia, intensidad y subrayado). Ver la tabla de la pgina 157 para los atributos de despliegue monocromtico. Ejemplo: El cdigo ascii del 1 sera el 31H El atributo 07H es el Normal (Fondo Negro, frente Blanco)

El despliegue bsico de video grfico a color permite utilizar 16Kb iniciando en la direccin del BIOS B800:0000H. Se puede procesar ya sea en modo texto para carcter normal y en modo grfico. Para modo texto, el rea de despliegue ofrece para la pantalla pginas numeradas desde la 0 hasta la 3 para una pantalla de 80 columnas (4Kb X 4 paginas = 16Kb). Para una pantalla de 40 columnas el nmero de paginas sera de 8 con 2Kb por cada pgina (2Kb X * paginas = 16Kb). Ver la tabla de la pgina 157 para el atributo a color. Ejemplo para una pantalla de color de 80 columnas en la pgina 0: El cdigo ascii del 1 sera el 31H

El atributo 71H correspondera a fondo Blanco, frente Azul.

ATRIBUTOS.

MONOCROMATICO. FONDO FOREGROUND 000 000 001 001 000 111 111 000 HEX 00H 11H 07H 70H

No display Subrayado (normal) video inverso.

COLOR.

1. Blue. 2. Green. 3. Cyan. 4. Red. 5. Magenta. 6. Brown. 7. Light blue. 8. Dark gray. 9. Light blue. 10. Light green. 11. Light cyan. 12. Light red. 13. Light magenta. 14. Yellow. 15. White.

EJEMPLO PARA COLOCAR EL CURSOR AH = 02H PONER LA POSICIN DEL CURSOR PAGE. MODO ADAPTADORES. 0 - 7 00H, 01H CGA, EGA, MCGA, VGA 03 07 0 0-7 02H, 03H 02H, 03H 07H 07H CGA EGA, MCGA, VGA MDA EGA, VGA

REGISTROS. BH = Numero de paginas. DH = Renglones. DL = Columnas.

Las instrucciones siguientes colocan el cursor en el rengln 05, columna 12. MOV MOV MOV MOV INT AH, 02H BH, 00 DH,05 DL, 12 10H ; Peticin para colocar cursor ; Nmero de pgina 0 ; Rengln 05 ; Columna 12 ; Interrupcion 10H que llama al BIOS

Para poner el rengln y la columna se pudo haber hecho de la sig forma: MOV DX, 050CH ; Rengln 05, Columna 12

RUTINAS PARA LIMPIAR PANTALLA. Funciones utilizadas la 06H y 02H. AH = 06H SCROLL WINDOW UP. AL = Numero de lneas a scroll. BH = Atributo usado para el rea. CH = Rengln de la esquina superior izquierda. CL = Columna de la esquina superior izquierda. DH = Rengln de la esquina inferior derecha. DL = Columna de la esquina inferior derecha. CLRSCR PROC NEAR MOV AH, 06H MOV AL, 25 MOV CX, 0000H MOV DX, 184FH MOV BL, 07H INT MOV MOV MOV INT RET CLRSCR ENDP 10H AH, 02H DX, 00H BH, 0 10H ;Poner la posicin del cursor. ;Esquina superior izquierda. ;Pagina 0. ;Funcion scroll window up. ; Numero de renglones. ;Esquina superior izquierda. ;Esquina inferior derecha (23, 79). ;Atributo normal (Fondo negro, carcter blanco opaco)

Otra rutina sera: LIMPIA PROCNEAR MOV AH, 0FH INT 10H MOV AH, 00H INT 10H RET ENDP ;Obtener el modo de display. ;Definir modo de video segn AL.

LIMPIA

3.4 PROCESAMIENTO AVANZADO DEL TECLADO INT 16H TECLADO AH = 00H LEE UN CARCTER DEL TECLADO. RETURN: AH = Cdigo de rastreo (SCAN). AL = ASCII del carcter. Espera y lee un carcter del buffer del teclado. AH = 01H LEE EL ESTADO DEL TECLADO (Checa ZF) UN TECLADO.

RETURN: (Si ZF = 0). AH = Cdigo de SCAN. AL = ASCII del carcter. (Si ZF = 1 no se aplasto tecla) (No espera y regresa). AH = 02H REGRESA LAS BANDARAS DEL TECLADO.

RETURN: AL = Banderas del teclado (byte).

Bits. 7 6 5 4 3 2 1 0 TECLA PRESIONADA * * * * * * * 1 SHIFT derecho ....................................................... Presionado * * * * * * 1 * SHIFT izquierdo ..................................................... Presionado * * * * * 1 * * CTRL. (ambos) ....................................................... Presionado * * * * 1 * * * ALT (ambos) ....................................................... Presionado * * * 1 * * * * SCROLL LOCK ....................................................... Habilitado * * 1 * * * * * NUM LOCK ....................................................... Habilitado * 1 * * * * * * CAPS LOCK ....................................................... Habilitado 1 * * * * * * * INSERT .......................................................

Habilitado AH = 05H ESCRIBIR AL BUFFER DEL TECLADO. CH = Cdigo de SCAN (rastreo). CL = Carcter (ASCII). RETURN: AL = 01H Si el buffer esta lleno. PARA TECLADOS MENORES. AH = 10H OBTENER LA TECLA APLASTADA. RETURN: AH = Cdigo de SCAN. AL = Carcter (ASCII). NOTA: Esta funcin no la lee del buffer, si no directamente. AH = 11H OBTENER LA TECLA CHECANDO ZF.

RETURN: (Si ZF = 0, si hay tecla aplastada). AH = Cdigo de SCAN. AL = Carcter (ASCII). (Si ZF = 1 no hay tecla aplastada). AH = 12H OBTENER EL ESTADO DE LAS BANDERAS.

RETURN: AL = Status flag 1. AH = Status flag 2. Status Flag 1 (Es el mismo que el anterior). Status Flag 2.

7 6 5 4 3 2 1 0 TECLA PRESIONADA * * * * * * * 1 CTRL. Izquierdo ....................................................... Presionado * * * * * * 1 * ALT Izquierdo ..................................................... Presionado * * * * * 1 * * CTRL. Derecho ....................................................... Presionado * * * * 1 * * * ALT derecho ....................................................... Presionado

* * * 1 * * * * SCROLL LOCK Habilitado * * 1 * * * * * NUM LOCK Habilitado * 1 * * * * * * CAPS LOCK Habilitado 1 * * * * * * * SYS REQ Habilitado SCAN CODE. (TECLADO) (COPIA).

....................................................... ....................................................... ....................................................... .......................................................

EL TECLADO.
El teclado estndar de la PC tiene su propio controlador (Intel 8048 o correspondiente). Presionando o liberando una tecla enva una IRQ1 al controlador de interrupciones (8259) que invoca a la ISR9 (Rutina de servicio de interrupcin, vector 9 INT 9). La prioridad de esta interrupcin es solo precedida por la TIC del reloj. El complicado cdigo lee, codifica el cdigo mapa de la tecla. Cada tecla produce el cdigo mapa al ser presionada y al ser liberada. La informacin del registro de estado afecta la descodificacin del mapeo. Ejemplo: Si se presiona la tecla (a) produce un cdigo mapa (1E). ESTADO. VALOR DECODIFICADO. Normal. 61H Control. 01H Shift 41H EQUIVALENCIA. a ^A A

Como respuesta a teclas de control (Ctrl Shift, Caps Look, etc). La ISR9 actualiza el registro de estado. El registro de estado es un byte. Los datos del BIOS comienzan en el prrafo 40H. BIOS Segment Org 17H At 40H

KB Flag Org 1AH KB HEAD KB TAIL KB BUFFSIZE

DB DB DB

0 0 16DWP(0) ;32 bytes 16 caracteres.

KB FLAGS (40H 17H) 40:0017H (Registro de Estado).

BUFFER CIRCULAR (32 BYTES) (15 TECLAS). En la direccin 0040:001E. Tamao 10H (32 bytes). Es una cola circular. Si el buffer se llena el ISR9 manda un sonido. Cada dato tiene 2 bytes (El formato depende de la interpretacin del cdigo mapa y registro de estado). El BIOS accesa al buffer a travs de la interrupcin 16H la cual remueve los caracteres del buffer.

CIRCULAR Head = Tail Buffer vacio. Head + 2 = Tail Buffer lleno. (La cabeza alcanza a la cola).

ALTAS Con ISR9H BAJAS Con ISR16H

INT

17H

IMPRESORA (Puerto 378H).

AH = 00H ESCRIBIR UN CARCTER A LA IMPRESORA. AL = Carcter (ASCII). DX = Numero de impresora (0 2). RETURN: AH = Estado de la impresora. AH = 01H INICIALIZAR LA IMPRESORA. DX = Numero de impresora. RETURN: AH = Estado de la impresora. La funcin saca la secuencia 08H, 0cH al puerto de la impresora. La EPSON e IBM responden a esta secuencia RESETEANDOSE, otras pueden no responder.

AH = 02H OBTENER EL ESTADO DE LA IMPRESORA. Dx = Numero de la impresora (0 2). RETURN: AH = Estado de la impresora. BITS DE ESTADO DE LA IMPRESORA. 7 * * * * * * 1 6 * * * * * X * 5 * * * * 1 * * 4 * * * 1 * * * 3 * * 1 * * * * 2 * X * * * * * 1 * X * * * * * 0 1 * * * * * *

Time Out (Error de tiempo). Unused. I/O error (Error de trasferencia). Impresora en lnea = 1 / fuera de lnea = 0. Sin papel. Unused. Impresora no ocupada.

Los bits 1, 2, 6 no se utilizan. Si el bit 4 esta en 1 y el bit 0 esta en 0 la impresora esta lista.

DISCOS ACCESANDO DISCOS 51/4. 1. FLOPPYS.

(INT 13H).

XT 360 tracks (0 39) 9 sector / track 512 bytes / sector. AT 1.2 Mbytes 80 tracks (0 79) 15 sector / track 512 bytes / sector.

Para acceder al disco se usa la INT 13H funcin 00H. Resetear los controladores de disco (Cuando hay errores es conveniente resetear).

INT 13H Funcin 00H = AH (Resetear). AH = 00H DL = 0 1. RETURN: C = 1 error C = 0 Operacin Completa AH = 0. AH = Cdigo de error.

Codigo de Error AH 1 2 3

Tipo de Error. Numero de funcin no permitida. Direccin no encontrada. Disco protegido contra escritura.

4 9 10 20 40 80

Sector no encontrado. La trasmisin de datos se salio de segmento. Error de lectura. Error en el controlador. Track no encontrado. La utilidad no responde.

AH = 01H Lee el status del drive desde la ultima operacin. DL = 0 1. RETURN: Igual que en la funcin 0. AH = 02H Lee uno o varios sectores hacia un buffer en memoria. AL = Numero de sectores a leer. BX = FOCET del buffer. CH = Numero del track. CL = Numero del primer sector a leer. DH = Lado del disco 0 (Parte del frente = 0), (Parte trasera = 1). DL = Numero del disco (Disco A = 0), (Disco B = 1). ES = Segmento del buffer. SALIDA.- Igual que funcin 1. AH = 03H Escribe uno o mas sectores del disco, los datos se toman del buffer. Igual que la funcin 02H. AH = 04H Verifica sectores del disco, compara uno o mas sectores del disco con un buffer (solo opera con XT). Igual que la funcin 02H. AH =05H Formatea un track de un lado del disco, escribiendo informacin de los sectores desde un buffer. Igual que la funcin 02H. El buffer deber contener 4 bytes consecutivos para cada sector a ser formateado. 1.- Numero de track. 2.- Numero del lado del disco 0 =Frontal, 3.- Numero de sector. 4.- Numero de bytes en este sector. 0 = 128 bytes. 1 = 256 bytes. 2 = 512 bytes (std). 3 = 1024 bytes. 1 = Trasero.

ACCESANDO EL DISCO DURO.- Los discos duros tienen dos platos, 4 lados numerados del 0 al 3 y aceptan 17 sectores por cilindro de 512 bytes cada sector. Un cilindro es un track de uno de los lados.

En XT son 306 cilindros (0 a 305) en cada lado. En AT son 615 cilindros (0 a 614) en cada lado. Se manejan con la misma INTERRUPCION 13H. AH = 00H Resetea el controlador de disco. DL = 80 Primer disco. DL = 81 Segundo disco. RETURN: Si C = 0 Si C = 1 Cdigo de error en AH. 01 02 03 04 05 07 0AH 11H AAH CCH Operacin Completa. Hubo error. Error. Unidad no disponible. Direccin no encontrada. Direccin no encontrada. (Igual que la anterior), Solo agregar las siguientes. Error al resetear el controlador. Error durante la inicializacin del controlador. Sector Defectuoso. Error de lectura corregido. Unidad no lista. Error de escritura.

AH = 01H Lee el status del disco duro desde la ultima operacin. DL = 80 81. RETURN: Igual que la funcin 0.

AH = 02H Lee uno o mas sectores. AL = Numero de sectores a leer entre 1 128. BX = FOCET del buffer. CH = Numero del cilindro. CL = Numero del primer sector. DH = Numero de la cabeza. DL = Numero del disco duro. (80 primer disco 81 segundo disco). ES = Segmento del buffer. RETURN: Igual que la funcin 00H 01H. AH = 03H Escribe uno o mas sectores. Igual que la funcin 02H. Ah = 04H Verifica uno o mas sectores con respecto al contenido de un buffer. Igual que la funcin 01H 02H. AH = 05H Formatea un cilindro completo. (17 Sectores). AL = 17 decimal. BX = FOCET del buffer. CH = Numero del cilindro. CL = 01 primer sector. DH = Numero de la cabeza. DL = Numero del disco duro 80 81. ES = Segmento del buffer. RETURN: Igual que las funciones anteriores. El buffer debe ser de 512 bytes, aunque solo se usan los 34 primeros bytes; 2 para cada sector. El primer byte indica si el sector esta bien 00 = bien, 80 = mal.

El segundo byte indica el numero lgico del sector.

Numero Lgico. 1 2

Numero fsico XT 1 7

Numero fsico AT. 1 4

3 4 -

13

El nico que no interesa es el numero lgico.

La diferencia se debe a la velocidad con que gira el disco y que no tenga problema la cabeza para leer. PARTICIN DEL DISCO DURO. Al preparar el disco duro se pueden tener 3 pasos: 1.- Particin primaria. 2.- Formato de bajo nivel. 3.- Particin extendida. En la particin primaria se le asigna un identificador para todo el disco.

También podría gustarte