Practico 6, ejercicio 1

Practico 6, ejercicio 1

de Diego Furrer Dellepiane -
Número de respuestas: 4

Buenas! Espero se encuentren bien.

Viendo el video de resolución me surgió una duda con respecto al codigo en C.


Estamos asumiendo que el direccionamiento es de a byte, lo primero que quería consultar es que siempre podemos asumir eso?

Asumiendo eso, entiendo que cada palabra esta guardada en dos direcciones de memoria, pero hay algo que no me cierra.

Cuando hacemos "suma= suma + *dir", estamos asumiendo que "*dir" nos trae ambas direcciones de memoria a la vez? Podemos asumir ese comportamiento?

Yo había pensado en hacer algo como "suma = suma + ((*dir)<<8) + *(dir+1)" y luego si hacer "dir = dir + 2", esto es válido?

Muchas gracias!

Saludos,

Diego Furrer.



En respuesta a Diego Furrer Dellepiane

Re: Practico 6, ejercicio 1

de Belen Brandino -
hola
si, pueden asumir que el direccionamiento es de a byte a menos que se diga lo contrario. por lo general es más común tener instrucciones que traigan una palabra entera de memoria, como es el caso de este ejercicio donde la instrucción LOAD carga 16 bits en un registro (el tamaño de palabra de memoria).
para las direcciones de memoria en este caso, siempre tenes que avanzar de a dos (porque cada dirección se corresponde con un byte) para poder acceder a la siguiente palabra
lo que vos haces, estaría bien si asumimos que dir trae solo 1 byte (esto claramente no lo vas a poder hacer con tu set de instrucciones) y si asumis que la parte baja de la palabra está en la dirección de memoria dir+1 y la parte alta en dir. esto se llama Endianness y nos dice cómo se ordena una palabra en memoria. lo vamos a ver cuando veamos 8086
si no queda claro pregunta de nuevo
saludos!
En respuesta a Belen Brandino

Re: Practico 6, ejercicio 1

de Diego Furrer Dellepiane -
Buenas! Gracias por la respuesta.

Consulto otras dudas que me surgieron.

1) Entiendo que podemos asumir que es de a byte a menos que se diga lo contrario, pero podemos asumir que es de a palabra si no se dice lo contrario también? Es decir, tengo libertad de elegir? O siempre supongo de a byte si no dice nada la letra?

2) En ese ejercicio 1, se puede utilizar un while en vez de un do while?

3) En el ejercicio 2, es simplemente dar el formato de las instrucciones e indicar el OPCODE de cada instrucción? Siento que hay algo mas ya que el ejercicio tiene 3 estrellas

4) En el ejercicio 3, estas líneas de código donde inicializo las variables se pueden saltear en assemly? Ya que a todas le asigno un registro pero cuando las defino

5) En el ejercicio 3, cuando escribo el código en assemly, hace falta poner índice a cada línea de código como hicimos en el ejercicio 1? Yo no las puse ya que los saltos son siempre relativos

Muchas gracias!

Saludos, 

Diego Furrer.

En respuesta a Diego Furrer Dellepiane

Re: Practico 6, ejercicio 1

de Belen Brandino -
hola!
1) asumimos que el direccionamiento es de a byte a menos que se diga lo contrario, ya que es lo más común
2) si
3) si, es solo el formato. le vamos a cambiar las estrellas :)
4) si, a nivel de lo que vieron hasta ahora en el curso es lo esperable
5) no, no es necesario. tampoco es obligatorio en el ejercicio 1
saludos!