Hola, tengo una duda con respecto a las etiquetas que tiene que ver con el registro PC del Z80 y la variable contador de posiciones $ del ensamblador. En la cartilla del micro aparece PC<--nn para el caso de la instrucción JP nn, sin embargo, en las clase se remarca que no es lo mismo $ que PC ya que la primera es una variable de software y la segunda es un registro de hardware, y por ejemplo, si nn fuera una etiqueta, sería $ el encargado de asignarle un valor númerico. Será que lo que ocurre es que $ se guarda en PC en el tiempo de ensamblado?
Juan Andrés:
en tiempo de ensamblado no tenés acceso al contador de programa (PC) ni a
los registros del procesador.
Lo que estás haciendo en ese momento es traducir un texto (el programa tal
como lo escribiste) y generar la secuencia de bytes que habrá después que
almacenar en la memoria del procesador.
Normalmente se hace utilizando un programa (el programa ensamblador), que
lee un archivo de texto y escribe el resultado en un archivo binario, pero
también podrías hacerlo con papel y lápiz (o en el pizarrón) como lo
hicimos en clase.
Ese proceso de traducción por lo general se hace recorriendo el archivo de
texto con el programa fuente. En ese proceso de traducción en general se
usa una variable "contador de posiciones" en la que se lleva la cuenta de
en qué posición de memoria va a residir el resultado de la traducción de la
próxima línea. Si estoy ensamblando a mano esto se hace simplemente
anotando al comienzo de cada línea el valor de esa dirección de memoria.
Te recuerdo de nuevo que acá no hay ningún procesador z80 ejecutándose. Hay
un humano leyendo cada línea de programa de una hoja de papel (o un
programa ensamblador leyéndolas desde un archivo de texto) y deduciendo el
valor binario correspondiente y en qué dirección de memoria debe cargarse.
El resultado de ese proceso es el código de máquina del programa. Ese
código de máquina debe cargarse por algún mecanismo en la memoria del
procesador.
Recién ahí el procesador va a ejecutar el programa, leyéndolo desde memoria
de a una instrucción por vez.
El contador de posiciones ya no existe, dejó de existir cuando el programa
ensamblador terminó de hacer la traducción para generar el código de
máquina.
Espero haber aclarado algo.
Saludos,
en tiempo de ensamblado no tenés acceso al contador de programa (PC) ni a
los registros del procesador.
Lo que estás haciendo en ese momento es traducir un texto (el programa tal
como lo escribiste) y generar la secuencia de bytes que habrá después que
almacenar en la memoria del procesador.
Normalmente se hace utilizando un programa (el programa ensamblador), que
lee un archivo de texto y escribe el resultado en un archivo binario, pero
también podrías hacerlo con papel y lápiz (o en el pizarrón) como lo
hicimos en clase.
Ese proceso de traducción por lo general se hace recorriendo el archivo de
texto con el programa fuente. En ese proceso de traducción en general se
usa una variable "contador de posiciones" en la que se lleva la cuenta de
en qué posición de memoria va a residir el resultado de la traducción de la
próxima línea. Si estoy ensamblando a mano esto se hace simplemente
anotando al comienzo de cada línea el valor de esa dirección de memoria.
Te recuerdo de nuevo que acá no hay ningún procesador z80 ejecutándose. Hay
un humano leyendo cada línea de programa de una hoja de papel (o un
programa ensamblador leyéndolas desde un archivo de texto) y deduciendo el
valor binario correspondiente y en qué dirección de memoria debe cargarse.
El resultado de ese proceso es el código de máquina del programa. Ese
código de máquina debe cargarse por algún mecanismo en la memoria del
procesador.
Recién ahí el procesador va a ejecutar el programa, leyéndolo desde memoria
de a una instrucción por vez.
El contador de posiciones ya no existe, dejó de existir cuando el programa
ensamblador terminó de hacer la traducción para generar el código de
máquina.
Espero haber aclarado algo.
Saludos,