Ex Julio 2019

Ex Julio 2019

de Leonela Ruth Pereira Perez -
Número de respuestas: 1

Buen día,

estaba viendo la solución del problema 2, y no estaría entendiendo una instrucción. Puede ser que no vaya?

(letra https://eva.fing.edu.uy/pluginfile.php/44683/mod_folder/content/0/2019/solExAC201907.pdf?forcedownload=1)

// suma del árbol
MOV BX, [BP + 4]
SHL BX,1
ADD AX, DS:[SI + BX]

En BX( MOV BX, [BP + 4] ) obtengo el indice que tengo en el stack.
Con DS:[SI + BX] accedo a arbol[indice].
En AX guardo el resultado de AX + arbol[indice]. (donde AX valía sumaIzq + sumaDer)
no estaría entendiendo para que necesito SHL BX,1

Desde ya muchas gracias!


En respuesta a Leonela Ruth Pereira Perez

Re: Ex Julio 2019

de Federico Rivero -

Estimada,

El SHL es necesario porque el árbol es de ints. El registro BX guarda un índice dentro del arreglo, pero como cada int en x86 ocupa 2 bytes, desde el inicio del arreglo hasta la posición del índice hay (2 * índice) bytes, y por eso se debe multiplicar por 2, o hacer SHL 1, que es lo mismo.

Saludos,

         Federico