Bien el dia de hoy mostrare como cambiar el color de pantalla en ensamblador, para ello sera necesario saber unas cosas:
Primero conocer la interrupción 10h: la interrupción 10h nos permite manipular algunas cosas del sistema de video, en este caso trabajaremos directamente con la BIOS.
Asi mismo sera necesario conocer acerca de algunos servicios de dicha interrupción como:
06h : permite manupular el comportamiento de las lineas en blanco en pantalla. En este caso CX es usado para indicar el pixel donde debe inicar a pintar la pantalla y DX indica donde debe terminar de pintar.
02h: permite colocar el cursor en la posición deseada. En este caso el registro BH indica la pagina donde posicionar el cursor (La pantalla esta formada por 6224px, cuando se supera esta cantidad y se sigue escribiendo, apartir del pixel 6225 se dice que estamos en otra pagina y asi sucesivamente), el registro DH indica el renglon y DL la fila donde posicionar el cursor.
Así mismo debemos conocer los colores que podemos utilizar:
Cada color puede ser representado por su parte hexadecimal o binaria. Por ejemplo:
Los primeros 4 numeros de derecha a izquierda representan el color que sera para el color de letra, los siguientes 3 representan el color del fondo (para el fondo tenemos solo 8 colores para tomar), el ultimo bit solo es un indicador, si esta en 1 el texto completo en pantalla estara parpadeando.
0:Bit indicador, si esta activo parpadea el texto
001:Color de fondo
1110:Color del texto
De igual forma este valor puede estar en su equivalente a hexadecimal 00011110B = 30H, este valor es igual mente valido.
Ahora veamos un ejemplo:
Primero conocer la interrupción 10h: la interrupción 10h nos permite manipular algunas cosas del sistema de video, en este caso trabajaremos directamente con la BIOS.
Asi mismo sera necesario conocer acerca de algunos servicios de dicha interrupción como:
06h : permite manupular el comportamiento de las lineas en blanco en pantalla. En este caso CX es usado para indicar el pixel donde debe inicar a pintar la pantalla y DX indica donde debe terminar de pintar.
02h: permite colocar el cursor en la posición deseada. En este caso el registro BH indica la pagina donde posicionar el cursor (La pantalla esta formada por 6224px, cuando se supera esta cantidad y se sigue escribiendo, apartir del pixel 6225 se dice que estamos en otra pagina y asi sucesivamente), el registro DH indica el renglon y DL la fila donde posicionar el cursor.
Así mismo debemos conocer los colores que podemos utilizar:
Cada color puede ser representado por su parte hexadecimal o binaria. Por ejemplo:
00011110B
0:Bit indicador, si esta activo parpadea el texto
001:Color de fondo
1110:Color del texto
De igual forma este valor puede estar en su equivalente a hexadecimal 00011110B = 30H, este valor es igual mente valido.
Ahora veamos un ejemplo:
PILA SEGMENT STACK 'STACK'
DB 100H DUP (?)
PILA ENDS
DATOS SEGMENT
MENSAJE DB 'Se ha cambiado el color de la pantalla$'
DATOS ENDS
CODIGO SEGMENT
ASSUME CS:CODIGO, SS:PILA, DS:DATOS
INICIO:
mov ah,06h
mov bH,00011111B
mov cx,0000h
mov dx,184fh
int 10h
MOV AH,02H ;Para posicionar el cursor
MOV BH,00H ;Coloco en la pagina 0
MOV DX,0000H ;Establesco las coordenadas, x=dh=renglon y=dl=columna
INT 10H ;ejecuto la interrupción
MOV AX,DATOS ;Coloco la pila de datos en ax
MOV DS,AX ;paso ax a ds
LEA DX,MENSAJE ;imprimmo el mensaje
MOV AH,9H ;utilizo el servicio 9h para visulizarla en pantalla
INT 21H ;ejecuto llamo a la interrupcion 21h
mov ax,4c00h
int 21h
MOV AX,4C00H
INT 21H
CODIGO ENDS
END INICIO
Resultado:
Fuentes:
https://tipsparaisc.blogspot.com/2012/04/ensamblador-8086-modo-grafico-13h.html
http://www.forosdelweb.com/f14/colores-ensamblador-537837/
https://lgomezitm.blogspot.com/2018/02/cambio-de-color-en-las-pantallas-con-el.html
https://es.wikipedia.org/wiki/Int_10h
https://solocodigo.com/9497/colores-en-ensamblador/
https://en.wikipedia.org/wiki/BIOS_color_attributes
http://www.esacademic.com/dic.nsf/eswiki/591427

Comentarios
Publicar un comentario