Inicializar registros indices
Enviado por Cynthia Torres • 2 de Mayo de 2017 • Tarea • 377 Palabras (2 Páginas) • 168 Visitas
;Inicializar registros indices
;con la direccion inicial en memoria de la imagen a desplegar (fuente -> imagen -> registro indice fuente -> ESI)
;y del area de memoria reservada para el despliegue (destino -> buffer -> registro indice destino -> EDI)
mov esi, imagen
mov edi, buffer
;Cargar la direccion en memoria de la variable 'dmn' el registro base (EBX). 'dmn' es la estructura con el ANCHO y ALTO.
lea ebx, dmn
;Transferir o copiar 4 bytes en memoria a partir de la direccion en memoria especificada por EBX;
;son 4 bytes porque el operando destino es de 4 bytes en este caso es el registro acumulador (EAX).
;Es decir, EBX es un puntero a 'dmn' donde 'dmn' es de 8 bytes (4Bytes de la variable ANCHO y los siguientes 4Bytes de la variable ALTO),
;entonces EAX = ANCHO
mov eax, [ebx]
;sumar 4 al registro puntero (EBX) para apuntar al siguiente elemento de la estructura DIMENSION el cual es ALTO y vendria siendo el otro factor de la multiplicacion
add ebx, 4
;Especificar el otro factor en la instruccion de multiplicacion que son los siguientes 4Bytes a partir de la direccion especificada por EBX (variable ALTO de DIMENSION)
;Se multplican ANCHO (=EAX) * ALTO (=dword ptr [ebx])
;con 'dword ptr [ebx]' estamos indicando que EBX se comporte como puntero tipo DWORD,
;es decir, se esta especificando que se desean los 4Bytes (4Bytes=1Dword) a partir de la direccion en memoria especificada por el registro EBX
;el cual contiene la direccion inicial de la variable ALTO en la estructura DIMENSION.
mul dword ptr [ebx]
;el resultado de la multiplicacion anterior es del doble del tamano de los factores, en este caso los factores son de 4Bytes por lo que el resultado es de 8Bytes
;y se encuentra en EDX:EAX donde EDX contiene los 4Bytes de mayor peso del producto de la multiplicacion y EAX contiene los 4Bytes de menor peso.
;Como el producto de la multiplicacion sabemos y esperamos que es un valor con un tamano menor a 4Bytes entonces dicho resultado esta en EAX
;y con la siguiente instruccion se lo copiamos al registro contador (ECX)
;para posteriormente hacer el ciclo/bucle de leer cada pixel de la imagen en memoria y pasarlo al buffer (area de mem. reservada para el despliegue)
mov ecx, eax
;poner codigo para el bucle de leer pixel por pixel y transferirlo al buffer.
...