Está en la página 1de 4

Más

achainya@gmail.com
Escritorio
Cerrar sesión

Tips para estudiantes de Sistemas Computacionales

martes, 10 de abril de 2012 Búsqueda

Buscar
Ensamblador 8086 Formato BMP
Te encuentras en la serie de "Ensamblador 8086 Modo Gráfico 13h": Seguidores (67)
Siguiente

1. Ensamblador 8086 Modo Gráfico 13h


2. Ensamblador 8086 Modo 13h Memoria para Gráficos
3. Ensamblador 8086 Modo 13h Paleta de Colores
4. Ensamblador 8086 Formato BMP
5. Ensamblador 8086 Desplegar una imagen BMP
6. Ensamblador 8086 Moviendo imagen BMP
7. Ensamblador 8086 Buffer Doble

Hasta el momento hemos hablado del modo 13h, la memoria de gráficos y la paleta de
colores. En este post veremos cómo está compuesto el formato BMP. En particular
hablaremos del formato que contiene una paleta de colores, lo cual lo hace ideal para poder Seguir
desplegarlo en el modo 13h.

El formato BMP con paleta de colores tiene 3 secciones principales: Entradas populares

1. Encabezado fijo de 54 bytes: donde podemos encontrar información como el ancho y Cómo evaluar transformadas de
el alto de la imagen, y la dirección donde empieza la información de cada pixel de la Laplace utilizando Wolfram Alpha
imagen (sección 3).
Cómo evaluar integrales múltiples
2. Paleta de colores: la cual puede variar en tamaño. Cada entrada tiene 4 bytes en el utilizando Wolfram Alpha
siguiente orden: azul (B), verde (G), rojo (R), byte reservado. Para calcular el número
de elementos de la paleta tomamos la dirección donde inicia la sección 3 Ordenamiento externo: Mezcla
(información de cada pixel) y restamos los 54 bytes del encabezado fijo. Esto nos da Natural (Natural Merge Sort)
el tamaño en bytes de la paleta de colores, simplemente dividimos este número entre
Ensamblador 8086 Modo 13h
cuatro y obtenemos el número de entradas o colores de la paleta. Paleta de Colores
3. Información de cada pixel de la imagen.
Ensamblador 8086 Modo Gráfico
Usaremos la siguiente imagen y la abriremos con un visualizador de datos en hexadecimal 13h
(GHex) para analizar algunos puntos importantes de su contenido.

Archivo del blog

► 
2019
(7)
► 

► 
2016
(1)
► 

► 
2015
(4)
► 

► 
2014
(7)
► 

► 
2013
(9)
► 

▼ 
2012
(25)
▼ 

► 
diciembre
(2)
► 

Encabezado Fijo ► 
noviembre
(4)
► 

► 
octubre
(1)
► 

► 
septiembre
(1)
► 

► 
agosto
(1)
► 

► 
julio
(4)
► 

► 
mayo
(1)
► 

▼ 
abril
(5)
▼ 

Los valores numéricos están guardados en formato little endian, es decir el byte menos
Ensamblador 8086 Formato
significativo está en la dirección menos significativa. Si tenemos el número 36 9A, lo BMP
leeremos 9A36.
Ensamblador 8086 Modo 13h
Paleta de Colores
42 4D: son los valores ASCII de BM, los archivos en formato BMP empiezan con
estos 2 bytes. Ensamblador 8086 Modo 13h
Memoria para Gráficos
00 00 9A 36: la imagen mide 39,478 bytes.
00 00 04 36: donde empiezan los datos de cada pixel, es decir en el byte 1078 Ensamblador 8086 Modo
del archivo. Gráfico 13h

00 00 00 28: hasta este punto van 14 bytes del encabezado y faltan 40 bytes Ensamblador 8086 itoa
más (28h), que dan los 54 bytes del encabezado fijo.
► 
marzo
(2)
► 

00 00 00 F0: ancho de la imagen (240 pixeles).


► 
enero
(4)
► 

00 00 00 A0: alto de la imagen (160 pixeles).


00 00 96 00: número de bytes de la imagen (38,400 = 240 * 160) ► 
2011
(50)
► 

► 
2010
(67)
► 

Si los datos de cada pixel inician en el byte 1078 y el encabezado fijo mide 54 bytes,
► 
2009
(24)
► 

entonces la paleta de colores mide 1024 bytes; es decir tiene 256 entradas.

Pixeles y Paleta de Colores

Ahora realizaremos un ejercicio para mostrar que leer los colores de la imagen es
prácticamente equivalente a la explicación que vimos para el modo 13h.

1. Tomamos la información de un pixel: el primer pixel inicia en 1078 (436h) y contiene


37h. Esta es la entrada de la paleta de donde tomaremos el color.

2. La paleta de colores inicia en 36h, por lo que la entrada 37h esta en: 36h + (37h * 4)
= 112h.

3. Si ponemos el código de color en un editor de imágenes podemos ver que


corresponde al color del fondo de la imagen.

El valor 37h aparece repetidamente al inicio del archivo ya que es el valor del fondo de la
imagen. Ahora, busquemos el primer valor diferente y veamos su color.

1. El primer valor encontrado es 71h.

2. La entrada de la paleta que buscamos esta en: 36h + (71h * 4) = 1FAh.

3. Nuestra intuición diría que el color debe ser rojo; sin embargo, podemos ver que el
color es verde, y corresponde al cuadro de la parte inferior. Esto se debe a que en el
formato BMP, las líneas se guardan de abajo hacia arriba con respecto a como se
deben mostrar en la pantalla. Es decir, la primer línea de datos del archivo es la línea
inferior de la imagen.

Muy bien, ya tenemos todos los elementos para poder desplegar una imagen BMP en
ensamblador 8086 modo 13h, en el siguiente post veremos el código.

La siguiente página tiene información adicional acerca del modo 13h y del formato BMP.

Publicado por
Mariana
en
4/10/2012

Etiquetas:
ensamblador,
graficos

7 comentarios:

Gara 22 de abril de 2012, 23:57


hola esta muy interesante tu blog mas disculparas mi ignorancia en conde puedo probar los
códigos que programas necesito?

que debo instalar?

Responder

Mariana 23 de abril de 2012, 7:10

Hola Gara,

Muchas gracias por tu interés en el blog. Estoy usando masm y el emulador DOSBox para
ensamblar y ejecutar los programas. El siguiente post describe los pasos.

Saludos.

Responder

Gara 27 de abril de 2012, 0:11

Muchas pero muchas gracias... lo pondré a prueba y te platico.

Me encanta tu blog.

Responder

Gelfre 25 de mayo de 2012, 8:44

uhnmm podrias poner un ejemplo de como poner un bmp como fondo...??

gracias... recien aprende ensamblador en MASM ggg

Responder

Respuestas

Antonio 28 de mayo de 2012, 8:30

Hola Gelfre, el post de "Ensamblador 8086 Desplegar una imagen BMP" te


puede ayudar a desplegar el fondo. Necesitas una imagen del tamaño de la
pantalla en modo gráfico que es 320x200 pixeles. Sólo asegúrate que tenga el
formato que mencionamos en este post. Te recomendamos guardar la imagen
que desees desplegar usando MS Paint. Saludos.

Responder
Jourlez 4 de noviembre de 2015, 16:43

hola, no hay un error cuando se dice?

1.Tomamos la información de un pixel: el primer pixel inicia en 1078 (436h) y contiene 37h.
Esta es la entrada de la paleta de donde tomaremos el color

Todo bien hasta acá, pero cuando se dice:

2. La paleta de colores inicia en 36h, por lo que la entrada 37h esta en: 36h + (37h * 4) =
112h.

esta mal en 2. pues en 1. se dice claramente que inicial en 436h y no en 36h como lo dice
2.

Mi duda es, está bien a como está ahorita, o sí había error?

Gracias de antemano.

Responder

Respuestas

Antonio 4 de noviembre de 2015, 22:08


Hola, la explicación del post está correcta. Son dos localidades de memoria
distintas. La direccion 436h es donde empiezan los pixeles imagen. La dirección
36h es donde empieza la paleta de colores.

Responder

Escribe tu comentario

Entrada más reciente Inicio Entrada antigua

Suscribirse a:
Enviar comentarios (Atom)

Imágenes del tema: gaffera. Con la tecnología de Blogger.

También podría gustarte