IIC2343 / Syllabus-2024-2

44 stars 0 forks source link

[Proyecto | Etapa 2] Guardar DATA en RAM #120

Open fgarl opened 3 weeks ago

fgarl commented 3 weeks ago

Hola, para guardar la seccion DATA en la RAM, hay que escribir en la ROM primero las instrucciones respectivas para escribir en la RAM mediante la CPU o hay alguna forma de escribir en la RAM en el mismo assembler mediante el directorio iic2343?

Si hay que escribir en la ROM, no crearia conflictos al hacer por ejemplo JMP 0 si es que hay una variable, ya que saltaría a la seccion de DATA en vez de la de CODE?

giacop002 commented 3 weeks ago

Hola! La idea es que al leer la sección DATA su assembler agregue las instrucciones necesarias para escribir en la RAM cada valor en la RAM.

DATA:
x 6
y 7
CODE:
MOV A, 1 // "primera" instrucción
...
JMP 0

Efectivamente, esto causará un desfase en la numeración de las instrucciones, por lo que deben tomarlo en cuenta para que al leer la instrucción JMP 0 salte a la primera instrucción de la sección CODE. Entonces, el assembler en este caso escribe el opcode correspondiente a la instrucción JMP Ins, pero el literal q escribe no es 0.

fgarl commented 3 weeks ago

Ok, entonces estaria bien que al tener

DATA:
var 1

sea equivalente a tener lo siguiente?

CODE:
MOV A, 1
MOV (0), A
MOV A, 0
giacop002 commented 3 weeks ago

Correcto, son equivalentes. Aunque no se si es tan necesario hacer MOV A, 0 después de guardar cada variable, pero queda a su criterio. Si lo hacen así, deben tomar en cuenta que habrán 3 instrucciones por cada variable en DATA.

fgarl commented 3 weeks ago

Vale, gracias, entonces ese desfase en teoría solo afecta a los JMPs y a CALL ya que son los unicos que usan Ins cierto?

giacop002 commented 3 weeks ago

Claro, en definitiva afecta la numeración "real" de las instrucciones y por lo tanto afecta a los labels que guardarás, los cuales se referencian con JMPs y CALL.