Open jrodriguezluna opened 1 month ago
¡Hola @jrodriguezluna!
var
se reemplace por mem[0]
, sino que se reemplaza directamente por 0
. Esto es porque el Assembler interpreta el número como un literal numérico y luego, el hardware, se encarga de utilizarlo como dirección de memoria para acceder al dato almacenado en mem[0]
. CODE:
0 | MOV B, 10
1 | PUSH B // PUSH solo ocupa una dirección de la memoria de instrucciones.
2/3 | POP B
4 | CALL func_1
| [...] // Asumiremos que se ocupan de las direcciones 5 a la 9.
10 | MOV A, B
11/12 | RET
Cabe destacar que estas dos direcciones de memoria se ocupan en la memoria de instrucciones (ROM).
¡Saludos!
muchas gracias!
Buen día, me surgieron dos dudas. ¿Qué espacio en memoria ocupan las variables? y ¿POP y RET ocupan dos "lineas de instrucciones" en la sección "CODE:"?
Ambas dudas me parecen algo obvias pero me gustaría corroborar. Respecto a la primera, me imagino que al crear una variable tal que:
estaríamos guardando el valor 15 en mem[0] (ahora cada vez que salga var en el código se reemplaza con mem[0]). Si usamos más de una variable estas se van guardando en las subsiguientes direcciones de memoria.
es esto cierto?
La segunda duda tiene que ver con las instrucciones POP y RET. Como estas son instrucciones de dos ciclos tenía entendido que cuando "contamos" las lineas por cada instrucción en la rom, estas valen por 2, tipo:
de nuevo, es esto cierto?