Re: Asignacion de memoria estatica
Gianni,
Las variables en alto nivel se traducen a distintas variables en bajo nivel dependiendo del contexto en que aparezcan y su vida util. No es lo mismo una variable local a una rutina que posiblemente la asignes a algún registro disponible en el momento que una variable global.
Para el caso en que definas variables globales a tu programa (como ser el Arbol) simplemente al compilarla a bajo nivel le asignas la región de memoria que consideres apropiada (la letra te pide que la asignes a partir del desplazamiento 0 del segmento ES). Luego en tu programa cada vez que referencies el arbol lo harás a través del segmento ES
Para el resto de las variables globales que tengas en alto nivel basta con que las definas em assembler en el segmento de datos usando etiquetas para darle nombres y las directivas que reservan memoria (db, dw, etc). Esas quedan automáticamente definidas en el segmento de datos DS y el desplazamiento que les corresponde lo determina el propio ensamblador. Luego en tu programa cada vez que referencies estas variables globales lo harás a través del segmento DS. Tener cuidado que no se "choquen" las direcciones de memoria efectivas de las variables en DS respecto al árbol. Esto se puede hacer cargando ES con algun valor más elevado, por ejemplo 0x1000.
Por último, las constantes no son variables (justamente son constantes) por lo que en bajo nivel pueden traducirse a EQUs
Saludos,
Gustavo