[2015][Febrero][Problema 2]

[2015][Febrero][Problema 2]

de Juan Andres La Cruz Acosta -
Número de respuestas: 2

Hola,

No me queda claro en este ejercicio la parte de la multiplicación, al realizar MUL DX, que pasa con la parte alta del resultado de la multiplicación que es alojado en DX? dá como resultado 0 y por eso se dice que AX contiene el resultado de i*largo?

Desde ya muchas gracias,

Juan Andres


En respuesta a Juan Andres La Cruz Acosta

Re: [Ex Feb 2015][Problema 2]

de Gustavo Brown -

La instrucción MUL DX coloca en DX,AX el resultado de AX*DX

Como la parte alta de esa multiplicación no nos interesa y además sabemos que va a ser 0 (y lo que si nos interesa es mantener el valor previo de DX) se hace un PUSH DX previo al MUL DX y un POP DX para recuperar el valor previo).

La parte alta de la multiplicación sabemos que va a ser 0 porque la matriz no puede exceder un segmento y el cálculo que estamos haciendo es para obtener la ubicacion de una celda de dicha matriz.

Si la matriz pudiese exceder un segmento esto debería haber sido aclarado en la letra dado que el programa sería bastante más complejo. O sea, la entrada "largo" del programa debe ser tal que la matriz no exceda en tamaño a un segmento.

Saludos,
   Gustavo