[Práctico 6] [ejercicio 4]

[Práctico 6] [ejercicio 4]

de Maria Agustina Simoncelli Maneiro -
Número de respuestas: 3

Hola! Tengo dos dudas acerca de este ejercicio:

1) el CARGARI no le falta que reciba un INM?, sino no tengo forma de cargar un registro con un inmediato.

2) como debería hacer para poner por ejemplo “R2=mem[R1]”? Y si es que se hace con CARGARM, como hago para hacer R2=R1? Con la misma instrucción? 

Gracias! 

En respuesta a Maria Agustina Simoncelli Maneiro

Re: [Práctico 6] [ejercicio 4]

de Lucia Thais De Oliveira Gude -
Por la primer pregunta contestaron esto en un foro:

Lo que pasa es que en la letra falta el argumento inmediato a CARGARI.

O sea, CARGARI Reg, Inmediato

Luego Inmediato tendrá la cantidad de bits que entren (a priori serían 24 bits) y dado que no hay más información suponés que va a cargar la constante en los bits menos significativos del registro indicado.

Saludos,
Gustavo
En respuesta a Maria Agustina Simoncelli Maneiro

Re: [Práctico 6] [ejercicio 4]

de Gustavo Brown -
Maria,
  A la instrucción CARGARI efectivamente le falta el parámetro INM que cargue los X bits menos significativos del registro con el inmediato y por ejemplo deje los 32-X bits más significativos en 0. "X" a determinar por el estudiante.

Para hacer R2=mem[R1] deberías:
- cargar en R1 la dirección que quieras leer.
  Suponiendo que sea una dirección constante:
    Si es una dirección de X bits (o menor) entonces basta con usar 
         CARGARI R1, direccion
    Si es una dirección de más de X bits vas a tener que armar la dirección de a partes, por ejemplo supongamos que queres cargar la dirección 0x12345678 harías
    CARGARI R1, 0x1234
    CARGARI R2, 16
    SHIFTL R1, R2
    CARGARI R2, 0x5678
    OR R1, R2
  Una vez que tenes cargada la dirección en R1 haces
    CARGARM R2, R1

Para copiar el contenido de un registro a otro (ej R2=R1) tenes varias opciones, por ejemplo:
  CARGARI R2,0
  OR R2, R1

Saludos,
   Gustavo