Ensamblador
Enviado por arthureh • 24 de Mayo de 2012 • 10.108 Palabras (41 Páginas) • 488 Visitas
APUNTES DE CATEDRA
CARRERA: LICENCIATURA EN ANALISIS DE SISTEMAS –
INGENIERIA EN SISTEMAS
Cátedra: Procesamiento De Datos I
Profesor: Lic. Marcelo Martinez
AÑO: 2003
EL NIVEL DEL LENGUAJE ENSAMBLADOR
En los capítulos 4, 5 y 6 estudiamos tres niveles, los cuales están presentes en la
mayoría de las computadoras actuales. Este capítulo trata fundamentalmente de un cuarto
nivel que también está presente en casi todas las computadoras modernas: el nivel del
lenguaje ensamblador. Dicho nivel difiere considerablemente de los niveles de
microprogramación, de máquina convencional y del sistema operativo, debido a que se
implementa por traducción y no por interpretación.
Los programas que convierten un programa escrito de un lenguaje a otro lenguaje
distinto se llaman traductores. El lenguaje en que está escrito el programa original se llama
lenguaje fuente y al que se convierte se llama lenguaje objeto. Ambos lenguajes, el fuente
y el objeto, definen niveles. Si contáramos con un procesador que ejecutara directamente
los programas escritos en el lenguaje fuente, no habría ninguna necesidad de traducirlos al
lenguaje objeto.
La traducción se usa cuando se dispone de un procesador ( lo mismo da que sea físico
o un intérprete) para el lenguaje objeto, y no se cuenta con uno para el fuente. Si la
traducción se hace correctamente, la ejecución del programa traducido dará exactamente
los mismos resultados que daría la ejecución del programa fuente si dispusiéramos de un
procesador para él. Por tanto podemos fabricar un nuevo nivel, en el que no hay
procesador, si traducimos primero los programas escritos para dicho nivel a un nivel objeto
y luego ejecutamos los programas resultantes.
Es importante darse cuenta de la diferencia entre la traducción, por un lado, y la
interpretación por otro. En la traducción, el programa original, escrito en lenguaje fuente,
no se ejecuta directamente. Lo que se hace es convertirlo en un programa equivalente,
llamado programa objeto o módulo objeto, que se ejecuta después de que se ha terminado
la traducción. En la traducción hay dos pasos bien definidos:
1. Generación de un programa equivalente en lenguaje objeto.
2. Ejecución del nuevo programa que se ha generado.
Estos dos pasos no tienen lugar simultáneamente; el segundo no comienza hasta que
el primero ha terminado. En la interpretación, en cambio, hay sólo un paso: la ejecución del
programa fuente original. No se genera primero un programa equivalente. La interpretación
tiene la ventaja de que el programa suele ser más pequeño y de mayor flexibilidad, pero la
traducción suele producir programas más rápidos.
Cuando se está ejecutando el programa objeto, sólo hay tres niveles en acción: el de
microprogramación, el de máquina convencional y el de máquina del sistema operativo. Por
tanto, en tiempo de ejecución, sólo pueden encontrarse en la memoria de la computadora
tres programas: el programa objeto del usuario, el sistema operativo y el microprograma.
Toda traza del programa fuente original se ha desvanecido. Así, el número de niveles
presentes en tiempo de ejecución puede diferir del número de ellos presentes antes de la
traducción. Es importante recalcar que, aunque nosotros definamos un nivel por las
instrucciones y construcciones lingüísticas que tienen a su disposición los programadores (y
no por el método de implementación), otros autores hacen una mayor distinción entre
niveles realizados por intérpretes en tiempo de ejecución y niveles realizados por
traducción.
255
INTRODUCCIÓN AL LENGUAJE ENSAMBLADOR
Los traductores se pueden dividir a grandes rasgos en dos grupos, según la relación
que haya entre el lenguaje fuente y el objeto. Cuando el lenguaje fuente es, en esencia, una
representación simbólica de un lenguaje numérico de máquina, el traductor se llama
ensamblador y el lenguaje fuente se llama lenguaje ensamblador. Cuando el lenguaje
fuente es un lenguaje de alto nivel como el C o Pascal, y el lenguaje objeto es un lenguaje
de máquina numérico o una representación simbólica de uno de ellos, el traductor se llama
compilador.
¿Qué es un lenguaje ensamblador?
Un lenguaje ensamblador puro es aquel en que cada sentencia produce exactamente
una instrucción máquina. En otras palabras, hay una correspondencia biunívoca entre las
instrucciones de máquina y las sentencias del programa en ensamblador. Si cada línea de
un programa en ensamblador contuviera una sentencia ensamblador y si cada palabra de
máquina contuviera una instrucción de máquina, entonces un programa de n líneas escrito
en ensamblador produciría un programa en lenguaje máquina que ocuparía n palabras.
La razón por la que se usa el lenguaje ensamblador en lugar de programar el lenguaje
máquina (octal o hexadecimal) consiste en que es mucho más fácil programar en
ensamblador. Es muy diferente usar nombres y direcciones simbólicas que hacerlo en
binario u octal. La mayoría de la gente puede recordar que las abreviaturas para la adición,
la sustracción, la multiplicación y la división son ADD, SUB, MUL y DIV, pero pocos pueden
recordar que las instrucciones máquina (para la PDP-ll) son 24576..57344,28672 y 29184.
El programador en lenguaje ensamblador sólo tiene que recordar los nombres simbólicos...
ADD, SUB, MUL, DIV, ya que el ensamblador los traduce a las instrucciones máquina. Por el
contrario, el programador en lenguaje máquina debe recordar, o consultar constantemente,
los valores numéricos.
Los mismos comentarios se aplican a las direcciones. El programador en lenguaje
ensamblador puede dar nombres simbólicos a las posiciones de memoria y dejarle al
ensamblador la tarea de suministrar los valores numéricos correctos. El programador en
lenguaje máquina debe trabajar siempre con los valores numéricos de las direcciones. En
consecuencia, nadie programa hoy día en lenguaje máquina, aunque se hacía hace años,
antes de que se inventaran los ensambladores.
Los lenguajes ensambladores tienen otra propiedad, además de la Correspondencia
uno a uno entre las sentencias en ensamblador y las instrucciones máquina, que los
distinguen de los lenguajes de alto nivel. El programador en
...