Febrero 2014 - Problema 1 - Parte a) - Assembler

Febrero 2014 - Problema 1 - Parte a) - Assembler

de Diego Javier Rodriguez Uranga -
Número de respuestas: 2

Buenas, en la solución de este ejercicio cuando compila, al buscar en un lugar del arreglo hace:

mov si, bx

shl si, 1

shl si,1 ; indice * 4 (cada nodo ocupa 4 bytes)

add si, di ; sumo el offset del arbol

xor ah, ah

mov al, es:[si]


Lo que no entiendo de aquí es por qué "arma" la dirección a mano, lo que yo hice fue poner el segment en ES y el offset en BX y luego hacer un MOV con es:[bx], esta mal esto?

En respuesta a Diego Javier Rodriguez Uranga

Re: Febrero 2014 - Problema 1 - Parte a) - Assembler

de Federico Rivero -

Estimado:

Estaría mal hacer un mov con ES:[BX] directamente. La explicación es lo que está entre paréntesis en el segundo SHL. Dado que cada nodo ocupa 4 bytes de memoria, y que en x86 la memoria se direcciona por bytes. Entre el inicio de un nodo y el siguiente hay 4 bytes, y por lo tanto se debe aumentar en 4 la dirección de memoria.

Saludos, 

           Federico