Cruz García Karen Ilzette González Mendoza María del Rosario Hernández Castañeda Alan Eliseo Sánchez Quiroz Sheila Mariana Varela García Tania Violeta Un ensamblador es el programa que convierte un listado de código fuente en código objeto, es decir, lenguaje máquina (el que finalmente interpretará el procesador) . El código fuente es un fichero que contiene la secuencia de instrucciones en lenguaje ensamblador que forma el programa, así como ciertas directivas o comandos para el propio ensamblador, que ha sido creado utilizando un editor de texto. El código objeto consta del código en lenguaje máquina y de la información necesaria para enlazarlo con otros módulos objeto. Al construir un programa algunos de sus módulos pueden colocarse en el mismo módulo fuente y ensamblarse juntos, otros pueden estar en módulos diferentes y ser ensamblados separadamente. Si se ensamblan por separado, el módulo principal, que contiene la primera instrucción que se va a ejecutar, debe acabar con una sentencia END que indique el punto de entrada al programa, y cada uno de los otros módulos deben terminar con una sentencia END sin ningún operando. En cualquier caso, los módulos objeto resultantes, algunos de los cuales pueden estar agrupados en librerías, deben ser enlazados para formar el módulo de carga, antes de que se pueda ejecutar el programa. Además de dar como salida el módulo de carga, el linker o enlazador imprime un mapa de memoria que indica donde serán cargados los módulos objeto en la memoria. Después de crearse el módulo de carga, éste es cargado por el cargador en la memoria del ordenador y comienza la ejecución. Independientemente del sistema, la combinación linker/cargador debe crear todos los segmentos y asignaciones de dirección necesarios para permitirle al programa funcionar correctamente. Encontrar los módulos que van a ser enlazados Construir el módulo de carga asignando las posiciones de todos los segmentos de todos los módulos objeto que se están enlazando. Rellenar todos los desplazamientos de segmento que no pudieron ser determinados por el ensamblador. Rellenar todas las direcciones de los segmentos. Cargar el programa para su ejecución. 1.6 ENTORNO DE PROGRAMACIÓN DE LENGUAJE ENSAMBLADOR A partir de los fuentes obtenidos de un editor, los fuentes se envían al Ensamblador el cual, traduce los nemotécnicos del lenguaje ensamblador al código objeto de la maquina. Y crea un fichero especial de listado de variables y procedimientos, el Linker1 toma todos los ficheros objeto y con la información sobre las direcciones de memoria para las variables y procedimientos que contiene el fichero Listado, crea el fichero ejecutable final. El proceso de ensamblado bastan con 2 pasos para determinar todas las direcciones, ejemplo: Jmp2 etiq … etiq: El proceso de traducción de un programa escrito en un lenguaje de alto nivel a un archivo objeto ejecutable consta de varias etapas. A continuación se describen las etapas correspondientes al conjunto de herramientas de compilación gcc 3 que permite traducir programas escritos en el lenguaje de programación C. Usaremos un programa fuente denominado ejemplo escrito en lenguaje de programación C, creado en un editor de texto y guardado como ejemplo.c: #include <stdio.h> int main() { printf("programa de ejemplo\n"); return 0; } La traducción de este programa fuente a un archivo objeto ejecutable se realiza de la siguiente manera: ejemplo.c El compilador lee el archivo ejemplo.c y lo traduce al archivo objeto ejecutable ejemplo. Esto se realiza a través de las cuatro etapas mencionadas. En la primera etapa el pre-procesador (cpp) modifica el programa original de acuerdo a lo indicado por las directivas que comienzan con el caracter #. En este caso la línea #include <stdio.h> le indica al pre-procesador que debe leer el archivo de encabezado stdio.h e insertar su contenido en el texto del programa. La salida de esta etapa es el archivo intermedio ejemplo.i Luego, ejemplo.i entra en la siguiente etapa, el compilador (ccl) el cual traduce el programa a lenguaje ensamblador. La salida de esta etapa es el archivo ejemplo.s En la siguiente etapa, el ensamblador (as) lee el archivo ejemplo.s y lo traduce en instrucciones de lenguaje de máquina generando un archivo objeto relocalizable el cual se guarda como ejemplo.o Luego el enlazador (ld) enlaza ese archivo objeto con otros archivos asociados a él, en este caso ya que el programa llama una biblioteca (la función printf forma parte de la biblioteca estándar de entrada/salida) el enlazador se encarga de enlazar el programa con esta biblioteca en particular. Su salida es un archivo objeto ejecutable llamado ejemplo BIBLIOGRAFIA Lenguaje ensamblador y programación para IBM PC y compatibles Peter Abel Pearson Educación, 1996 - 594 páginas http://learnassembler.com/entorno.html http://www.jmpingenieros.es/articulo.asp?notid=20 http://translate.google.com.mx/translate?hl=es&sl=en&u=http://gcc.gnu.o rg/&ei=fn1 TYD3BYTC0QHEvP3LAw&sa=X&oi=translate&ct=result&resnum=4&ved=0CE EQ7gEwAw&prev=/search%3Fq%3Dgcc%26hl%3Des%26biw%3D1149%26bi h%3D530%26prmd%3Divns 1 linker un programa de computadora que toma uno o más objetos generados por un compilador y los combina en un único archivo ejecutable del programa. 2 JMP Esta instrucción se utiliza para desviar el flujo de un programa sin tomar en cuenta las condiciones actuales de las banderas ni de los datos. 3 GCC compilador SO