Bien: Ya que nos metimos en el tema de los modos de video, vamos a ver algo muy elemental sobre un modo de video. El modo 13 es un modo de 256 colores, de 320x200 pixels. La memoria de video en este modo empieza en la direccion 0a000h. Existe una tabla que se llama paleta donde se guarda para cada color la cantidad de rojo, de verde y azul. Esa tabla guarda la composicion de los 256 colores en 256x3 bytes. Los colores que se pueden mostrar en la pantalla son 256 de los 256x256x256=16.777.216 colores posibles. Si el valor de rojo, verde y azul es igual, se forma un color gris, que puede tener 256 valores de intensidad. Tambien se pueden hacer paletas con solo distintas intensidades de rojo, pej. La paleta tiene , de prima, ya definidos sus valores al principio (sino el micro no sabria de que color poner las letras, por ejemplo) pero pueden variarse haciendo uso de la int. 10h. Los pixel de la pantalla se almacenan asi: en el primer byte de memoria (a000:0000) esta el primer pixel de arriba a la izquierda, despues el segundo....hasta completar la primera linea. Despues sigue la segunda, la tercera,... Una pantalla completa ocupa 200x320=64000 bytes. Como un fuente vale mas que mil palabras, les dejo un programa que permite ver un "cuadro de prueba" con franjas coloreadas, y que muestra como aplicar un par de cositas de las vistas tratando de no apelar a las no vistas. franjas proc near mov ah,00 mov al,013h int 10h ;cambio al modo de video 13h mov ax,0a000h mov es,ax ;es=principio memoria video mov dh,200 ;es el numero de lineas mov di,00 ;es el desplazamiento dentro ;del segmento es olico mov dl,16 ;este es el numero de franjas a ; hacer (16 franjas=16 colores) mov al,00 ;cargo al con el color 0 (negro) olica mov ch,00 mov cl,20 ;este es el ancho de la franja ;20 bytes=20 pixels car5 mov es:[di],al ;guardo el valor de color en la ;memoria de video inc di ;proximo pixel loop car5 ;repito cx=20 veces inc al ;siguiente color dec dl ;bajo el numero de franjas ;que faltan jnz olica ;si no es cero, salto a olica ;si llegue aqui es que termine ;una linea dec dh ;descuento una linea jnz olico ;si no llegue a 0 salto a ;empezar otra linea int 20h ;si llegue aca es que termine ;todo y salgo al dos endp Como veran la pantalla queda en un modo de 40 columnas: con lo visto deberian poder hacer un programa que vuelva al modo de video inicial. Haganlo. Como ver este programa paso a paso: cargen el programa bajo el control de debug asi debug franja.com despues presionen

y alternativamente. Van a ver como el programa avanza paso a paso, mostrando en cada paso el contenido de los registros. Tiene la ventaja que no se mete en las interrupciones (no las hace paso a paso porque seria la muerte) ni en los loops, a diferencia de , que hace TODO paso por paso. Prueben y veran :) Esto sirve para debugear un programa: sacarle los BUGS (errores): DEBUGear... DEBUGear... no les sugiere nada? (continuara?)