Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Unidad III INTERRUPCIONES DEL BIOS Y DEL DOS
Unidad III INTERRUPCIONES DEL BIOS Y DEL DOS
DOS
BIOS
HARDWARE.
CONCLUSIONES.
Las rutinas del BIOS cambian con el hardware, o sea que dependen del
hardware y las interrupciones del DOS no cambian.
10H
INT
11H
VIDEO
OBTENER EL ESTADO DEL EQUIPO.
INT 12H
INT
13H
MANEJO DE DISCOS
INT
14H
PUERTO SERIE
INT
15H
INT
16H
TECLADO.
INT
17H
IMPRESORA
INT
18H
INT
19H
BOOT AL SISTEMA.
Es similar al CTR ALT DEL
INT
1AH
INT
1BH
CTRL. - BREAK
INT
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.
= 00H
= 01H
= 02H
= 03H
= 04H
= 05H
= 06H
= 07H
= 08H
= 09H
AH = 0AH
AH = 0BH
AH = 0CH
AH = 0DH
AH = 0EH
AH = 0FH
AH = 11H
AH = 12H
AH = 13H
AH = 1BH
AH = 1CH
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
80 X 25 = 2000 caracteres.
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.
REGISTROS.
BH = Numero de
paginas.
DH = Renglones.
DL = Columnas.
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
AH, 02H
BH, 00
DH,05
DL, 12
10H
CLRSCR
PROC NEAR
MOV AH, 06H
MOV AL, 25
MOV CX, 0000H
MOV DX, 184FH
MOV BL, 07H
INT
10H
MOV
MOV
MOV
INT
RET
AH, 02H
DX, 00H
BH, 0
10H
ENDP
LIMPIA
PROCNEAR
MOV AH, 0FH
INT 10H
MOV AH, 00H
INT 10H
RET
ENDP
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
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
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
RETURN:
(Si ZF = 0, si hay tecla aplastada).
AH = Cdigo de SCAN.
AL = Carcter (ASCII).
(Si ZF = 1 no hay tecla aplastada).
AH = 12H
RETURN:
AL = Status flag 1.
AH = 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.
ESTADO.
Normal.
Control.
Shift
VALOR DECODIFICADO.
61H
01H
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
DB
KB HEAD
KB TAIL
KB BUFFSIZE
DB
DB
16DWP(0)
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).
INT
17H
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.
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
*
*
*
*
*
*
DISCOS
(INT 13H).
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
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.
10
20
40
80
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.
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.
Numero Lgico.
1
2
Numero fsico XT
1
7
3
4
-
13
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.