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

10H

INT

11H

VIDEO
OBTENER EL ESTADO DEL EQUIPO.

INT 12H

OBTENER EL TAMAO DE LA MEMORIA.

INT

13H

MANEJO DE DISCOS

INT

14H

PUERTO SERIE

INT

15H

SERVICIOS DEL SISTEMA.

INT

16H

TECLADO.

INT

17H

IMPRESORA

INT

18H

ENTRADA CON EL Basic DE ROM

INT

19H
BOOT AL SISTEMA.
Es similar al CTR ALT DEL

INT

1AH

LEER Y ESTABLECER LA HORA

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.

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
AH
AH
AH
AH
AH
AH
AH
AH
AH

= 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

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

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

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

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

;Funcion scroll window up.


; Numero de renglones.
;Esquina superior izquierda.
;Esquina inferior derecha (23, 79).
;Atributo normal (Fondo negro, carcter blanco
opaco)
;Poner la posicin del cursor.
;Esquina superior izquierda.
;Pagina 0.

ENDP

Otra rutina sera:


LIMPIA

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.

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.
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)

;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

(INT 13H).

ACCESANDO DISCOS 51/4.


1. FLOPPYS.
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

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.

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