consulta de practica 1 de laboratorio

Re: consulta de practica 1 de laboratorio

de Julio Perez -
Número de respuestas: 0

Aclaro un poco más.

Las directivas .text y .data definen lo que se llaman "secciones" o "segmentos" de código, para identificar bloques de memoria usados para diferentes cosas. Hay variantes entre los diferentes ensambladores, pero habitualmente .text se utiliza para poner ahí el código de programa y .data para almacenar variables. Secciones similares definen la mayoría de los compiladores para lenguajes de alto nivel como C o Pascal.

En el ensamblador que utilizamos en el curso la traducción de texto a código de máquina se hace en dos grandes etapas: el ensamblador traduce todo lo que puede pero no sabe todavía donde va a estar ubicada en memoria cada sección.  El linker define dónde va cada sección y completa lo que no pudo traducir el ensamblador.

En las herramientas usadas en el curso la directiva .org no define direcciones absolutas en el espacio de direcciones del Z80 sino direcciones relativas al comienzo de la sección. Por ejemplo, si en mi programa pongo:

---

.text
.org 0x0100
mi_etiqueta:
    ... siguen instrucciones

---

la etiqueta mi_etiqueta tomará un valor 0x0100 mayor que la dirección de comienzo de la sección .text

Cuando dentro de notepad++ eligen Macro->Compilar se invoca en forma sucesiva al ensamblador y al linker, indicándole al linker que ponga a la sección .text en la dirección 0xB000, y a la sección .data (si existiera) a partir del primer comienzo de página de 256 bytes (primera dirección terminada en 00) después del fin de la sección .text

En este caso la etiqueta mi_etiqueta valdrá 0xB100 y no 0x0100.

Saludos,

julio