Está en la página 1de 18

Laboratorio N° 9

INTERRUPCIÓN DE VIDEO – INT 10H


9.1 Objetivos

- Aprender a cerca de la programación del modo de video y del buffer de la pantalla.

Teoría:

Cuando en tus aplicaciones necesitas escribir en la pantalla en modo texto, puedes


elegir entre tres tipos de salida de video:

• Acceso a nivel de MS-DOS:


Cualquier computadora corriendo o emulando MS-DOS puede usar INT 21h para
escribir texto en la pantalla.
• Acceso a nivel de BIOS:
Los caracteres son salida usando la INT 10h. Esto se ejecuta más rápido que la 21h,
y permite el control del color del texto.
• Acceso directo a video:
Los caracteres son movidos directamente a la RAM de video (buffer de
pantalla), por lo que su ejecución es instantánea.

Buffer de pantalla:
• El buffer de la pantalla inicia en B800:0000 y tiene algunas filas y columnas.
• El número de columnas es usualmente 80.
• El número de filas puede tener entre 25 o 40 en el mejor de los casos.
• Cada línea en la pantalla toma 160 bytes (80 x 2 bytes para CHARACTER +
ATTRIBUTE)

Programando VIDEO con la INT 10h:

Hay dos tipos generales de modos de video: modo de texto y modo de gráficos.

Video en Modo de Texto:

1
Fonts: Los caracteres se generan a partir de una tabla de fuentes de caracteres
residentes en la memoria. Originalmente, la tabla estaba en la ROM, pero las versiones
posteriores de la BIOS permitieron a los programadores reescribir las tablas de
caracteres en tiempo de ejecución. Esto hace posible crear fuentes personalizadas en
modo texto.

Video Text Pages: La memoria de video en modo texto se divide en varias páginas de
video separadas, cada una con la capacidad de mantener una pantalla completa de
texto. Los programas pueden mostrar una página mientras escriben texto en otras
páginas ocultas, y pueden retroceder y avanzar rápidamente entre las páginas. En los
días de las aplicaciones de MS-DOS de alto rendimiento, a menudo era necesario
mantener varias pantallas de texto en la memoria al mismo tiempo. Con la popularidad
actual de las interfaces gráficas, esta función de página de texto ya no es tan
importante. La página de video por defecto es la Page 0.

Attributes: a cada carácter de la pantalla se le asigna un byte de atributo que controla


tanto el color del carácter (denominado primer plano) como el color de la pantalla
detrás del carácter (denominado fondo). Cada posición en la pantalla de video
contiene un solo carácter, junto con su propio atributo (color). El atributo se almacena
en un byte separado, siguiendo el carácter en la memoria.

Blinking: Los caracteres en la pantalla de video pueden parpadear. El controlador de


video hace esto invirtiendo los colores de primer plano y de fondo del caracter a una
velocidad predeterminada. De forma predeterminada, cuando una PC se inicia en
modo MS-DOS, se habilita el parpadeo. Es posible desactivar el parpadeo usando una
función de BIOS de video. Además, el parpadeo está desactivado de forma
predeterminada cuando abre una ventana de emulación de MS-DOS en MS-Windows.

Controlling the Color:


Atributos de Byte
En el modo de texto de color, a cada carácter se le asigna un byte de atributo, que consta de
dos códigos de color de 4 bits: fondo y primer plano:

I R G B I R G B

background foreground

2
Blinking Hay una complicación para este esquema de color simple. Si el adaptador de
video actualmente tiene habilitado el parpadeo, la parte alta del color de fondo controla
el carácter del parpadeo. Cuando se establece este bit, el carácter parpadea:

blink R G B I R G B Blink
habilitad
o
background foreground

Tabla 1 Codificación de texto, cuatro bits.

IRGB Color IRGB Color

0000 Black 1000 Gray

0001 Blue 1001 Light blue

0010 Green 1010 Light green

0011 Cyan 1011 Light cyan

0100 Red 1100 Light red

0101 Magenta 1101 Light magenta

0110 Brown 1110 Yellow

0111 Light gray 1111 White

3
Funciones de video INT 10h:
• AH registro que contiene el numero de la función
• 00h: Set video mode
• Text modes listed in Table 2
• Graphics modes listed in Table 3
• 01h: Set cursor lines
• 02h: Set cursor position
• 03h: Get cursor position and size
• 06h: Scroll window up
• 07h: Scroll window down
• 08h: Read character and attribute
• 09h: Write character and attribute
• 0Ah: Write character
• 10h (AL = 03h): Toggle blinking/intensity bit
• 0Fh: Get video mode

Tabla 2 Modos de texto reconocidos por la INT 10h.

Mode Resolución (columnas x filas) Número de


colores

0 40 x 25 1

1 40 x 25 16

2 80 x 25 2

3 80 x 25 16

7 80 x 25 2

14h 132 x 25 16
Tabla 3 Modos de gráficos reconocidos por la INT
10h.
Mode Resolución (columnas x filas) Número de colores
6 640 x 200 2

0Dh 320 x 200 16

0Eh 640 x 200 16

0Fh 640 x 350 2

10h 640 x 350 16

11h 640 x 480 2

12h 640 x 480 16

13h 320 x 200 256

6Ah 800 x 600 16


Laboratorio:

Ejercicio:
Limpia la pantalla usando la int 10h de video, luego imprime Hola en el centro de la
pantalla.

Salida:

Actividad:
Imprime la palabra en la localización de origen (0,0) con el fondo de la letra rojo y color de
fondo de pantalla verde.

Ejercicio2: Escriba un programa que limpie la parte inferior de la pantalla y la pinte de color
verde e imprima su nombre en el centro con fondo rojo y letra blanca.
Salida:
.

Ejercicio3: Escribe un programa que divida la pantalla en tres, cada parte debe tener
un color diferente de fondo. La división es vertical.
Salida:
Ing. Electrónica – Arquitectura de Computadoras

Tarea:

Escriba un programa divida en tres colores a la pantalla y que estas divisiones sean
horizontals. Debe quedar así:

Ing. Luis Gutiérrez Magán 13


Ing. Electrónica – Arquitectura de Computadoras

INT 10H Función 00H


Establecer modo de Vídeo
LLAMADA:
AH = 00H
AL = Modo de vídeo.
DEVUELVE:
NADA.

EFECTO:
Selecciona y activa el modo de vídeo especificado. A no ser que se utilice el truco que se indica a
continuación, al llamar a esta función, se borra la pantalla. Pero se borra el contenido de pantalla. Por suerte
hay una especie de 'truco' para evitar este borrado automático de la pantalla. Consiste en poner con valor 1 el
bit 7 del registro AL (que contiene el modo de vídeo) en la llamada a la función.

Así por ejemplo, si queremos cambiar a modo 13h, y queremos que se pierda el contenido que hubiera en la
pantalla en este modo, en vez de introducir en AL el número 13h (00010011b), introduciríamos el número
93h (10010011b).

TARJETA GRAFICA: TODAS (MDA, CGA, EGA, MCGA, VGA...)


Modos de vídeo y características principales:

Modo Resolución Colores Soportan

00h 40 por 25 16 Texto

01h 40 por 25 16 Texto

02h 80 por 25 16 Texto

03h 80 por 25 16 Texto

04h 20 por 200 4 Gráfico

05h 20 por 200 4 Gráfico

06h 640 por 200 2 Gráfico

07h 80 por 25 2 Texto

0Dh 20 por 200 16 Gráfico

0Eh 640 por 200 16 Gráfico

0Fh 640 por 350 2 Gráfico

10h 640 por 350 4 Gráfico EGA de


64KB de RAM

10h 640 por 350 16 Gráfico EGA > 64


KB y VGA

11h 640 por 480 2 Gráfico

12h 640 por 480 16 Gráfico

13h 20 por 200 256 Gráfico

Ing. Luis Gutiérrez Magán 14


Ing. Electrónica – Arquitectura de Computadoras

Modos superiores al 13h pertenecen a tarjetas Super-VGA superior.

INT 10H Función 01H


Establecer tamaño del Cursor
LLAMADA:
AH = 01H
Bits 0-4 de CH = Línea inicial del Cursor
Bits 0-4 de CL = Línea final del Cursor.
DEVUELVE:
NADA.
EFECTO:
Se selecciona un nuevo tamaño de Cursor en modo texto.

INT 10H Función 02H


Posicionar el Cursor
LLAMADA:
AH = 02H
BH = Página de vídeo
DH = Línea donde situar el cursor
DL = Columna donde situar el cursor
DEVUELVE:
NADA.
EFECTO:
Posiciona el cursor en pantalla, de acuerdo a las coordenadas indicadas en los registros DH y DL
Sólo se desplazará el cursor si la página de vídeo indicada mediante BH es la página de vídeo activa. Esto es
así ya que existe un cursor independiente para cada una de las páginas de vídeo con las que contamos en el
modo actual
Las coordenadas para la columna empiezan a partir de 0. Las coordenadas para la fila empiezan a partir de 0.
Esto quiere decir que la esquina superior izquierda de la pantalla tendrá las coordenadas (línea=0,columna=0).
La columna máxima es la 39 (si estamos en un modo de vídeo de 40 columnas) ó la 79 (si estamos en un
modo de vídeo de 80 columnas). La línea máxima es la 24 (si estamos en un modo de vídeo de 25 líneas) ó la
49 (si estamos en un modo de vídeo de 50 líneas).
(Un 'truco' para hacer desaparecer el cursor de la pantalla consiste en dar valores no válidos para la columna o
la fila. Por ejemplo, si damos a la columna el valor 100, el cursor desaparecer de la pantalla)

INT 10H Función 03H


Buscar posición del Cursor y Tamaño
LLAMADA:
AH = 03H
BH = Página de vídeo.
DEVUELVE:
CH = Línea inicial del cursor
CL = Línea final del cursor
DH = Fila donde se encuentra el cursor
DL = Columna donde se encuentra el cursor
EFECTO:
Obtiene las coordenadas del cursor en una página de vídeo dada. También se obtiene el tamaño del cursor.

INT 10H Función 05H


Establecer nueva página de vídeo
LLAMADA:
AH = 05H
AL = Página de vídeo.
DEVUELVE:

Ing. Luis Gutiérrez Magán 15


Ing. Electrónica – Arquitectura de Computadoras

NADA.
EFECTO:
Establece como activa la nueva página de vídeo indicada mediante el registro AL, mostrándose por pantalla el
contenido de esa página de vídeo, y situando el cursor en la posición que le corresponda para esa página de
vídeo. Las páginas posibles para cada modo de vídeo son:

Número de Páginas Modos de Video Tarjetas que lo soportan

8 (0 - 7) 00h y 01h CGA, EGA, MCGA, VGA

4 (0 - 3) 02h y 03h CGA

8 (0 - 7) 02h y 03h ECGA, MCGA, VGA

8 (0 - 7) 07h EGA, VGA

8 (0 - 7) 0Dh EGA, VGA


Los modos de vídeo 11h en
4 (0 - 3) 0Eh EGA, VGA
adelante cuentan sólo
con una página 2 (0 – 1) 0Fh EGA, VGA de vídeo.

INT 10H 2 (0 – 1) 10h EGA, VGA Función 06H


Desplazar líneas de texto
hacia arriba
LLAMADA:
AH = 06H
AL = Número de líneas a desplazar. Si AL=0, se borra toda la ventana seleccionada mediante los registros CX
y DX
BH = Atributo a usar en las líneas borradas.
CH = Línea donde comienza la ventana de texto.
CL = Columna donde comienza la ventana de texto.
DH = Línea donde acaba la ventana de texto.
DL = Columna donde acaba la ventana de texto.
DEVUELVE:
NADA.
EFECTO:
Desplaza hacia arriba un número determinado de líneas en la ventana especificada mediante los registros CX
y DX. Las líneas desplazadas, quedan vacías, rellenándose con blancos. El color utilizado en estas líneas
vacías se indica mediante el registro BH.

INT 10H Función 07H


Desplazar líneas de texto hacia abajo
LLAMADA:
AH = 07H
AL = Número de líneas a desplazar. Si AL=0, se borra toda la ventana seleccionada mediante los registros CX
y DX
BH = Atributo a usar en las l¡neas borradas.
CH = L¡nea donde comienza la ventana de texto.
CL = Columna donde comienza la ventana de texto.
DH = L¡nea donde acaba la ventana de texto.
DL = Columna donde acaba la ventana de texto.
DEVUELVE:
NADA.
EFECTO:

Ing. Luis Gutiérrez Magán 16


Ing. Electrónica – Arquitectura de Computadoras

Desplaza hacia abajo un número determinado de líneas en la ventana especificada mediante los registros CX y
DX . Las líneas desplazadas, quedan vacías, rellenándose con blancos. El color utilizado en estas líneas vacías
se indica mediante el registro BH.

INT 10H Función 08H


Leer carácter y atributo
LLAMADA:
AH = 08H
BH = Página de vídeo.
DEVUELVE:
AH = Atributo (color del carácter).
AL = Código ASCII del carácter leído.
EFECTO:
Mediante la llamada a esta función, se devuelve en AL el código del carácter situado en la posición del cursor.
Así mismo, obtenemos en AH el color de este carácter.

INT 10H Función 09H


Escribir carácter y atributo
LLAMADA:
AH = 09H
AL = Código del carácter a escribir.
BH = Página de vídeo donde escribir el carácter.
BL = Atributo ó color que va a tener el carácter.
CX = Cantidad de veces que se debe escribir el carácter, uno a continuación de otro.
DEVUELVE:
NADA.
EFECTO:
Se escribe un carácter en la posición actual del cursor, en la página de vídeo deseada. El carácter tendrá el
color indicado mediante BL.

INT 10H Función 0AH


Escribir carácter
LLAMADA:
AH = 0AH
AL = Código del carácter a escribir.
BH = Página de vídeo donde escribir el carácter.
CX = Cantidad de veces que se debe escribir el carácter, uno a continuación de otro.
DEVUELVE:
NADA.
EFECTO:
Se escribe un carácter en la posición actual del cursor, en la página de vídeo deseada. El carácter tendrá el
mismo color que tuviera el carácter antiguo en esa posición. Es decir, se modifica el carácter, pero no el color.
En caso de querer modificar el color del carácter, usar la función 09h.

INT 10H Función 0CH


Escribir un punto ó pixel gráfico
LLAMADA:
AH = 0CH
AL = Valor del color a usar.
BH = Página de vídeo donde escribir el carácter.
CX = Columna donde escribir el pixel (coordenada gráfica x)
CX = Fila donde escribir el pixel (coordenada gráfica y)
DEVUELVE:
NADA.
EFECTO:
Da un nuevo color a un pixel gráfico. Función válida sólo para modos gráficos.

Ing. Luis Gutiérrez Magán 17


Ing. Electrónica – Arquitectura de Computadoras

INT 10H Función 0DH


Obtener el color de un pixel gráfico
LLAMADA:
AH = 0DH
BH = Página de vídeo.
CX = Columna del pixel que nos interesa (coordenada gráfica x).
DX = Fila del pixel que nos interesa (coordenada gráfica y).
DEVUELVE:
AL = Valor del color del pixel.
EFECTO:
Obtiene el color de un punto gráfico de la pantalla. Este punto se referenciará mediante las coordenadas
gráficas (x,y): (CX,DX). Función válida sólo para modos gráficos.

INT 10H Función 0FH


Obtener el Modo de vídeo actual
LLAMADA:
AH = 0FH
DEVUELVE:
AL = Modo de vídeo actual.
AH = Cantidad de caracteres que caben en una línea en el modo de vídeo actual.
BH = Número de la página activa.
EFECTO:
Mediante esta función podemos saber en todo momento, en qué modo de vídeo estamos trabajando. La
utilidad de esta función reside sobre todo en la construcción de programas residentes.

Ing. Luis Gutiérrez Magán 18

También podría gustarte