Ej 2 Práctico 5

Ej 2 Práctico 5

de Arel Sirin Sinanian -
Número de respuestas: 3

Buenas, alguien podría explicar como encarar este ejercicio? Se nos ocurre utilizar el registro DS junto con el SI para ir almacenando datos, pero no estamos seguros si es correcto.
Disculpen la pregunta tan general, simplemente no veo como encararlo con las condiciones que marca el ejercicio.

Gracias!

En respuesta a Arel Sirin Sinanian

Re: Ej 2 Práctico 5

de Federico Rivero -

El ejercicio 2 es el de hacer la función AND. A ese te referís?

En respuesta a Federico Rivero

Re: Ej 2 Práctico 5

de Arel Sirin Sinanian -

Si, finalmente lo encaré utilizando el registro BP de la siguiente forma:

push BP; respaldo BP
mov BP, SP
mov AX, [BP+8]; copiamos parametro X en AX
and AX, [BP+6]; and con parametro Y
and AX, [BP+4]; and con parametro z
pop BP; devuelvo BP a su estado original
ret;

De esta forma usamos BP para ir apuntando a los parámetros que están en el stack, y al final dejamos el stack de la misma forma que lo recibimos al principio y reestablecemos BP. Esto es correcto? Está bien haber usado el registro BP para esto? Podría haber usado otro? DX por ejemplo?

Gracias!

En respuesta a Arel Sirin Sinanian

Re: Ej 2 Práctico 5

de Maria Jose Rabaza Chaves -

Hola! Tengo unas dudas con respecto a este ejercicio. Mi solución es muy parecida a la del compañero.

Mis dudas son:

1. Cuando el ejercicio dice: "Los argumentos de la función (que se puede suponer todos de 16 bits) se envían al stack en el orden en que son declarados en la llamada a la función." ¿Se refiere a cargar en el stack los registros antes de invocar a la función? es decir:

PUSH AX

PUSH BX

PUSH CX

call AND_1

¿O debe incluirse en la función AND_1? Mas allá de la respuesta ¿tendría que hacer un POP de resultado después de hacer la call?

2. El código assembler me quedó:

AND_1 PROC

PUSH BP

MOV BP, SP

MOV AX, word ptr [BP+8]

AND AX, word ptr [BP+4]

AND AX, word ptr [BP+6]

POP BP

RET

AND_1 ENDP

Tengo dudas de si es necesario especificar en los MOV word ptr ya que en la letra ya dice que son palabras y no bytes. Otra duda es si es necesario reemplazar el valor de AX en el stack con el nuevo valor a retornar.

Muchas gracias!

Saludos!