Post on 25-Mar-2020
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 gcc3 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
http://learnassembler.com/entorno.html
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
http://www.jmpingenieros.es/articulo.asp?notid=20
Lenguaje ensamblador y programación para IBM PC y compatibles Peter Abel Pearson Educación, 1996 - 594 páginas
BIBLIOGRAFIA
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