[2021][Marzo][Problema 2]

[2021][Marzo][Problema 2]

de Ignacio Lambert Guimarey -
Número de respuestas: 1

Buenas tardes. Me podrían explicar porque en la parte donde se carga el valor de pixeles [i] [j] , lo hace con la siguiente cuenta como puntero: i * ancho + j  ?  Es decir, porque para acceder a memoria a través de ES_[Bx], debo poner en BX el resultado anterior?

Muchas gracias


En respuesta a Ignacio Lambert Guimarey

Re: [Marzo 2021][Ejercicio 2]

de Federico Rivero -

Estimado,

La razón es porque la matriz se encuentra dispuesta por filas en la memoria. Esto quiere decir que si la dirección inicial de la matriz es la dirección ES:[0], ahí se encuentra matriz[0][0], en el byte siguiente se encuentra matriz[0][1] y así hasta matriz[0][ANCHO], luego del cual viene matriz[1][0], y así sucesivamente. Como cada elemento de la matriz ocupa 1 byte, el desplazamiento total desde el inicio de la matriz es i * ancho + j 

Saludos,

       Federico