Lenguaje

You might also like

You are on page 1of 4
ENSAMBLADOR DE DOS PASADAS ‘Muchos ensambladores dan dos pasadas al programa fuente a fin de resolver referencias hacia adelante (0 posteriores) a direcciones que aun no se encuentran en el programa. Durante |a pasada |, ¢l ensamblador lee todo el codigo fuente y construye una tabla de simboios de nombres y etique- ‘Jas usadas en el programa, esto ¢s, nombres de campos de datos y etiquetas de! programa y sus localidades relativas (desplazamicato) dentro del segmento. Usted puede ver ta tabla de simbolos ‘® continuacién del programa casambiado cn la figura 5-3, en donde los desplazamientos de FLDA, FLDB y FLDC son 0000, 0002 y 0004 bytes, respectivasmente. Aunque cl programa no define ¢t- uetas de instruceiones, ellas aparecerfan en el segmento de céxigo con sus propios desplazamicn- tos, La pasada | determina la cantidad de cédigo que es geaerado por cada instrucciéa. MASM inicia la generacién del cédigo objeto en la pasada 1, mientras que TASM lo hace en la pasada 2 Durante la pasada 2, e! ensamblador usa la tabla de simbolos que construyé en ta pasada | Ahora que “conoce” la longitud y posiciones relativas de cada campo de datos © instruceiéa, puede completar el eddige objeto para cada instruccién, Después produce, si se solicita, } diferentes archivos objeto (.OBJ), de listado (.LST) y de referencias cruzadas (. REF), Un problema potencial en la pasada | s una referencia hacia adelante; Una instrucciin salto en el segmento de codigo puede referenciar a una etiqueta, pero el ensamblador atin no | encontrado su definicidn. MASM construye ¢l cddigo objeto con base en lo que supone : Ja longitud de cada instruccién generada en lenguaje de mAquina. Si existen diferencias entre pasada | y la pasadla 2, co respecto a la longitud de una instruccién, MASM envia un mensaje © eolazar un programa objeto at ‘error “Phase error between passes”, Tales errores son relativamente taros, y si aparecen usted debe buscar su causa y corregiria. Desde la versién 6.0, MASM hace un mancjo mis eficaz de la longitad de las instrucciones, dando tantas pasadas al archivo como sean necesarias MO ENLAZAR UN PROGRAMA OBJETO Una vex que su programa queda sin mensajes de error, el siguiente paso es enlazar ¢! modulo ‘objeto, POSASMI.OBJ. que fue producido por el ensamblador y que contiene silo cédigo de ‘miquina, El enlazador realiza las funciones siguientes: * Si se pide, combina mas de un médulo ensamblado de forma separada en un programa ejecutable, como dos o mis programas en ensambladar 0 un programa en cnsamblador con ‘un programa en C. + Genera un médulo .EXE y lo inicializa con instrucciones especiales para facilitar s subsecuente carga para ejecvcion. ‘Una ver que ha enlazado uno 0 més médulos .OBJ en un médulo .EXE, puede ejecutar et ‘médulo .EXE cualquier mimero de veces. Pero siempre que necesite realizar un cambio al progra- ‘ma, debe corregir el programa fuente, ensamblarto en otro médulo .OBJ y enlazar el méxtulo ‘OBJ en un médulo .EXE. Aunque al principio estos pasos no sean por completo claros, encon- ‘ard que con un poco de experiencia se vuelven autométicos. Puede convertir muchos programas .EXE a programas .COM. Pata detalles, véase el capi- tulo 7. La versién del enlazador de Microsofi es LINK, mientras que la de Borland es TLINK Puede teclear LINK o TLINK en una linea de comando 0 por medio de peticiones (a partir de MASM 6.0, el comando ML proporciona tanto e! ensamble como el enlace). Esta secciin muestra ‘como enlazar usando la linea de comando; para cl uso de peticiones véase el apéndice D. La linea de comando para enlazar es ‘+ Archobj identifica al archivo objeto generado por cl ensamblador. El enlazador supone Ia ‘extensiéa OBJ, de modo que no tiene que introducirla, Unidad, subdirectorio y nombre de archivo pueden ser iguales o diferentes del archivo fuente. + Archeje estipala que se genere un archivo EXE. Unidad, subdirectorio y nombre de archivo pueden ser iguales o diferentes del archivo fuente. + Archmapa estipula que se genere un archivo con extensién MAP que indica la ubicaciéa relativa y el tamafio de cada segmento y cualquier error que LINK haya encontrado. Un error comin es el fallo al definir un segmento de pila. Introducir CON (por consola) te indica al enlazador que muestre ef mapa en la pantalla (en lugar de escribirlo en un disco) de forma que se pueda ver el mapa inmediatamente para los errores. + Archbibl cstipula la opcidn de bibliotecas, que no necesita en estos primeros pasos de Programacion en lenguaje ensamblador. Ente ejemplo enlaza ci archive objeto POSASM.OBJ que fue generado por un ensamble amerior Al enlasador te le pide escribir

You might also like