Está en la página 1de 3

Apuntes de Lenguaje Ensamblador Luis A.

Zarza López, UTM, 2022

17. Gráficas
El manejo de gráficas de muy bajo nivel consiste en operaciones muy básicas el establecimiento del
modo gráfico, y pintar un pixel con algún color. Estas operaciones se efectúan también con llamadas,
pero en este caso no son llamadas al Sistema Operativo, sino al BIOS (Basic Input Output System). El
BIOS es código que se ejecuta desde memoria ROM de la tarjeta madre (motherboard) de la
computadora. Ese código necesita ser independiente del Sistema Operativo, pues es el que efectúa el
acceso al hardware del sistema. Para gráficas, las llamadas al BIOS se efectúa con la interrupción 10h.
Las siguientes operaciones no pueden ser ejecutadas desde las computadoras con sistemas operativos
posteriores a Windows XP, pues dichos sistemas mantienen un control más estricto sobre los modos de
presentación de gráficas. Es por ello que para los siguientes ejemplos de manejo de gráficas de bajo
nivel va a ser necesario utilizar Windows XP, o DOS BOX.
Es muy importante tomar en consideración que las computadoras modernas ya no solicitan servicios de
gráficas al BIOS, pues ya cuentan con poderosos circuitos de procesamiento de gráficos y se utilizan
mediante controladores adaptados al sistema operativo. Sus operaciones se invocan mediante llamadas
a funciones en lugar de interrupciones. El modo gráfico presentado aquí mediante el BIOS es parecido
al que utilizan algunos microcontroladores, por lo que es conveniente familiarizarse con este modo.

Modo gráfico y un pixel


El siguiente programa muestra: 1) cómo se obtiene el estado actual de presentación (para
posteriormente dejarlo como estaba), 2) cómo se establece un modo gráfico, 3) cómo se pinta un pixel
y 4) cómo se regresa el estado de presentación a su estado original.

.model small
.stack
.code
main: ;Leer configuración de pantalla y guardarla en la pila
mov ah,0fh ;Función leer modo.
int 10h
push ax ;Guardar modo en la pila.

;Definir pantalla 640x480, 16 colores


mov ah,0 ;Función establecer modo.
mov al,12h
int 10h

;Desplegar algo
mov al,0Eh ;Amarillo.
mov ah,0Ch ;Función escribir punto .
mov cx,0200 ;Coordenada X.
mov dx,0280 ;Coordenada Y.
int 10h

17. Gráficas 52
Apuntes de Lenguaje Ensamblador Luis A. Zarza López, UTM, 2022

;Esperar usuario (para que no termine sin poder ver)


mov ah,00h
int 16h
;Restaurar pantalla
pop ax ;Modo original en la pila.
mov ah,0 ;Función establecer modo
int 10h ;Establecer. Queda como al principio.

fin: .exit 0

Al ejecutar el programa, la pantalla quedará toda oscura, y si se observa con cuidado, deberá aparecer
un pixel de color amarillo. Si se oprime cualquier tecla, deberá volver al modo de texto original. Si se
ejecuta desde Windows XP, el modo de texto podría ocupar la pantalla completa, en cuyo caso será
necesario oprimir <Alt>-<Enter> para volver al modo de consola en ventana.

SVGA
En versiones modernas del BIOS, se cuenta con modos gráficos con mayor resolución. A continuación
se muestra el mismo procedimiento pero para mayor resolución. Se aclara que el procedimiento podría
no funcionar como se espera. Si el procedimiento no deja el modo gráfico como al principio, podría ser
necesario reiniciar, o ajustar el modo gráfico manualmente. Se debe tomar en cuenta de que en algunas
computadoras para alumnos no se pueda hacer ese ajuste.
Observe en el programa siguiente que ahora se pasa mediante AX un código de servicio de 16 bits,
mientras que para leer o definir el modo se utiliza el registro BX.

.model small
.stack
.code
main: ;Obtener configuración de pantalla y guardarla en la pila .
mov ax,4f03h
int 10h
push bx

;definir pantalla 1024x768, 256 colores.


mov ax,4f02h
mov bx,105h ;Código del modo.
int 10h

;desplegar algo
mov al,0Eh ;Amarillo.
mov ah,0Ch ;Funcion escribir punto.
mov cx,0200
mov dx,0280

17. Gráficas 52
Apuntes de Lenguaje Ensamblador Luis A. Zarza López, UTM, 2022

int 10h ;Pintar

;esperar usuario
mov ah,00h
int 16h
;restaurar pantalla
pop bx
mov ax,4f02h
int 10h

fin: .exit 0

Ejercicio: Hacer un macro que reciba color y coordenadas, y que pinte un pixel.
Ejercicio: Hacer un programa que pinte un rectángulo relleno de cualquier color.
Ejercicio: Hacer un programa que pinte un rombo hueco de cualquier color.
Ejercicio: Hacer un programa que pinte un rombo relleno de cualquier color.

17. Gráficas 52

También podría gustarte