Anda di halaman 1dari 39

El nivel del Lenguaje ensamblador

Capitulo 7

Lenguaje Ensamblador
En todas las arquitecturas de computadoras se tiene el lenguaje de ensamblador. Este difiere de en un aspecto importante de los niveles de microarquitectura, ya que es traducido y no interpretado.

Lenguaje Ensamblador
Un lenguaje ensamblador podra ser un lenguaje fuente de un programa, al momento de pasar de este al lenguaje de maquina se le llama traduccin o compilacin.

Lenguaje Ensamblador
Un lenguaje ensamblador puro es un lenguaje en el que cada enunciado produce exactamente una instruccin de maquina. En otra palabras, existe una correspondencia uno a uno entre las instrucciones de maquina y los enunciados del programa en ensamblador.

Lenguaje Ensamblador
Si cada lnea de programa de lenguaje ensamblador contiene exactamente un enunciado y cada palabra de maquina contiene exactamente una instruccin de maquina entonces, Un lenguaje ensamblador de n lineas producir un programa en lenguaje de maquina de n palabras.

Lenguaje Ensamblador
La razn por la que se usa un lenguaje ensamblador es que es muy difcil programar con ceros y unos, es mejor trabajar con direcciones simblicas a direcciones hexadecimales o binarias.

Lenguaje Ensamblador
La ventaja principal que tiene un programador en lenguaje ensamblador a uno en lenguaje de alto nivel es que el primero tiene acceso a todas las caractersticas de la maquina el segundo no. La desventaja sera que solo puede ejecutarse en la arquitectura de la cual es el lenguaje ensamblador.

Lenguaje Ensamblador
La razn para programar en ensamblador es que los programas son mejores en dos aspectos desempeo y acceso a la maquina. A menudo se produce cdigo mas pequeo y rpido que en el de alto nivel.

Lenguaje Ensamblador
El formato de un enunciado del lenguaje ensamblador refleja la estructura de la instruccin de maquina, los lenguajes de ensamblador para las diferentes computadores se parecen lo suficiente.

Lenguaje Ensamblador
Los enunciados del lenguaje ensamblador tienen cuatro partes: Un campo de etiqueta Un campo de operacin Un campo de operandos Un campo de comentarios

Lenguaje Ensamblador
Las etiquetas que sirven para asignar nombres simblicos a direcciones de memoria, se necesitan en enunciados ejecutables para poder saltar a esos enunciados. Tambin se necesitan en las palabras de datos para poder accesar con un nombre simblico a los datos ah almacenados

Lenguaje Ensamblador
Seudoinstrucciones: Adems de especificar qu instrucciones de maquina deben ejecutarse, un programa en lenguaje de ensamblador puede contener comandos para el ensamblador mismo a estos se le llaman seudoinstrucciones o a veces direcctrices de ensamblador.

Lenguaje Ensamblador
Definicin, llamada y expansin de una macro: Una definicin de macro es una forma de asignar un nombre a un fragmento de texto. Una vez definida una macro, el programador escribe el nombre de la macro en lugar del fragmento del programa.

Lenguaje Ensamblador
Para definir una macro se debe seguir los siguientes pasos: 1. Una cabecera de macro que da el nombre de la macro que se sta definiendo. 2. El texto que constituye el cuerpo de la macro. 3. Una seudoinstruccin que marca el final de la definicin

Lenguaje Ensamblador
Cuando el ensamblador se topa con la definicin de una macro la guarda en una tabla de macros para posteriormente utilizarla cuando sea necesario. Cuando aparezca el nombre de esta macro el ensamblador la sustituir por el cdigo.

Lenguaje Ensamblador
El uso de un nombre de macro se conoce como cdigo de operacin se denomina llamada de macro y la sustitucin por el cuerpo de la macro se denomina expansin de macro. La expansin de la macro se efecta durante el proceso de ensamblado y no durante la ejecucin del programa.

Lenguaje Ensamblador
Las llamadas a macros no deben confundirse como llamadas a un proceso, ya que las primeras se hacen al ensamblador para que sustituya el cdigo de la macro.

El proceso de ensamblado
Es la traduccin del lenguaje de ensamblado al lenguaje de maquina. Este proceso no es lineal ya que se encontrar con llamadas a otros programas o archivos, si no encontrar un archivo regresara un error.

El proceso de ensamblado conoce como de la A este problema se le


referencia adelantada, estas se pueden manejar de dos maneras. La primera podra el ensamblador leer dos veces el programa, cada lectura del programa fuente es una pasada cualquier traductor o compilador que hace dos pasadas al cdigo fuente se le conoce como traductor de dos pasadas.

El proceso de ensamblado
La segunda manera es que el ensamblador efecte su trabajo en una manera intermedia y almacenarlo en una tabla luego el ensamblador de la segunda leida pero ahora a la tabla.

El proceso de ensamblado

La primera pasada: la principal funcin de la primera pasada es construir una tabla llamada Tabla de Simbolos que contiene los valores de todos los simbolos, Un simbolo es una etiqueta o bien un valor al que se le asigna un nombre simblico mediante una seudoinstruccin.

El proceso de ensamblado
La tabla de simbolos tiene una entrada para cada simbolo, su valor numerico y a veces otra informacin.

El proceso de ensamblado
Adems el ensamblador mantiene una variable llamada contador de posiciones de instrucciones. Casi todos los ensambladores manejan tres tablas, Una de simblos ya mensionada, de seudoinstrucciones y de cdigos de operacin.

El proceso de ensamblado
La tabla de cdigos de operacin tiene al menos una entrada para cada cdigo de operacin simbolico del lenguaje ensamblador. La tabla de seudoinstrucciones es obvio que se encontrarn estas.

El proceso se ensamblado
Segunda pasada: La funcin de la segunda pasada es generar el programa objeto y posiblemente imprimir un listado de ensamblado. Admas genera cierta informacin que el enlazador necesitar.

Enlazado y carga
El enlazado es despus de el ensamblaje y tiene que ejecutarse antes de ejecutar el programa, este sirve para buscar las dependencias hacia otros programas.

Enlazado y carga
Las tareas comunes que se realizan en la creacin de un programa son: 1) Compilacin o ensamblado de los procedimientos fuente. 2) Enlazado de los mdulos objeto.

Enlazado y carga
El ensamblador se encarga del primero, pero el enlazado lo debe hacer el enlazador, por que el lenguaje fuente y el lenguaje objetivo tienen diferentes instrucciones y notacin.

Enlazado y carga
La funcin del enlazador es reunir procedimientos traducidos por separado y enlazados para que se ejecuten como una unidad llamada programa ejecutable.

Enlazador y carga

Las tareas principales del enlazador son: * Obtener los modulos objeto de la memoria principal a fin de formar la imagen de programa binario ejecutable. * Crear una imagen exacta del espacio de direcciones virtual del programa ejecutable. * Si no hay suficiente memoria para formar la imagen, puede usarse un archivo en disco.

Enlazador y carga
El enlazador fusiona los espacios de direcciones de los mdulos objeto en un solo espacio de direcciones lineal siguiendo estos pasos: 1. Construccin de una tabla con todos los mdulos objeto y sus longitudes. 2. Con base a esa tabla, se asigna una direccin de inicio a cada mdulo objeto.

Enlazador y carga
3. Se buscan todas las instrucciones que hacen referencia a la memoria y se suma a cada una de ellas una constante de reubicacin igual a la direccin de inicio de su mdulo. 4. Se buscan todas las instrucciones que hacen referencia a otros procedimientos y se inserta la direccin del procedimiento en cuestin.

Enlazador y carga
Tiempo de ligado: Es el momento en que se determina la direccin real en la memoria principal, se le denomina tiempo de ligado. Hay por lo menos seis posibilidades para el tiempo de ligado.

Enlazador y carga
1. Cuando se escribe el programa 2. Cuando se traduce el programa 3. Cuando se enlaza el programa pero antes de cargarlo. 4. Cuando se carga el programa 5. Cuando se carga un registro base que se usa para direccionamiento. 6. Cuando se ejecuta la instruccin que contiene la direccin.

Enlazador y carga
Una manera de enlazar los procedimientos por separado es enlazar cada procedimiento en el momento en que se invoca por primera vez. A esto se le llama enlace dinamico.

Enlazador y carga
Cuando se est usando enlazado dinmico, las llamadas a procedimientos en el lenguaje fuente se traducen en instrucciones que direccionan indirectamente la primera palabra del bloque de enlace correspondiente.

Anda mungkin juga menyukai