Practico 10 - Ejercicio 9

Practico 10 - Ejercicio 9

de Maria Gimena Bernadet Sebben -
Número de respuestas: 1
El ejercicio pide compilar una función que haga AND de tres palabras de 16 bits, que se encuentran en el stack. Lo resolvimos de la siguiente forma:

And3 proc
var1 dw ?
var2 dw ?
var3 dw ?
ADD SP 2
POP var1
POP var2
POP var3
MOV AX [var1]
AND AX [var2]
AND AX [var3]
PUSH [var3]
PUSH [var2}
PUSH [var1]
SUB SP 2
RET
And3 ENDP

Nos surgieron las siguientes dudas:

1- no sabemos si la sintaxis de la directiva dw es correcta, y si es correcto hacer '' var1 dw ?'' cuando la variable que se declara no se inicializa(es decir es correcto poner ? )

2-Nosotros decrementamos SP porque en el tope de la pila se guarda la direccion a la que teno que retornar, es decir al programa que llamo al procedimiento, como no lo queremos alterar decrementamos SP y luego hacemos POP, es correcto esto?
 
3-Es correcto el manejo de []? lo usamos cuando queremos manejar el contenido de la dirección de memoria, cuya dirección es el contenido del registro

En respuesta a Maria Gimena Bernadet Sebben

Re: Practico 10 - Ejercicio 9

de Gonzalo Tejera -
Si ponés los DW luego del proc cuando se haga el call arranca a ejecutar el contenido de las variables.

Es una forma muy complicada de implementarlo, además que es muy arriesgado pero correcto el manejo de la dirección de retorno.

1. depende del ensamblador. En lugar de ponerle ? las llevaría a cero, pero es un tema de gusto. En algunos casos la manera de poner indeterminado es no poner nada después del DW.

2. Sí.

3. Sí, pero que quiere decir "cuya dirección es el contenido del registro".

Saludos.