unidad 3 ensambladores

16
Gustavo Dávila 2012

Upload: gustavo-davila

Post on 17-Feb-2017

168 views

Category:

Education


0 download

TRANSCRIPT

Page 1: Unidad 3 ensambladores

Gustavo Dávila 2012

Page 2: Unidad 3 ensambladores
Page 3: Unidad 3 ensambladores

El lenguaje Assembly: Es un tipo de lenguaje de bajo nivel utilizado para escribir programas informáticos, y constituye la representación más directa del código máquina específico para cada arquitectura de computadoras legible por un programador.

Page 4: Unidad 3 ensambladores

org 100h

; set video mode mov ax, 3 ; text mode 80x25, 16 colors, 8 pages (ah=0, al=3) int 10h ; do it!

; cancel blinking and enable all 16 colors: mov ax, 1003h mov bx, 0 int 10h ; set segment register: mov ax, 0b800h mov ds, ax

Page 5: Unidad 3 ensambladores

El término ensamblador se refiere a un tipo de programa informático que se encarga de traducir un archivo fuente escrito en un lenguaje Assembly, a un archivo objeto que contiene código máquina, ejecutable directamente por la máquina para la que se ha generado.

Ejemplos: MASM

TASM

Page 6: Unidad 3 ensambladores

Lenguaje Assembly (archivo fuente)

Código Maquina (archivo objeto)

La tarea fundamental de un ensamblador es traducir un programa en lenguaje de assembly al código correspondiente en lenguaje de máquina.

Page 7: Unidad 3 ensambladores

El programa ensamblador lee el archivo escrito en lenguaje Assembly y sustituye cada uno de los códigos nemotécnicos que aparecen por su código de operación correspondiente en sistema binario para la plataforma que se eligió como destino en las opciones específicas del ensamblador.

Para realizar la tarea de traducción se apoya en unas tablas “equivalencia” y “Símbolos”

Page 8: Unidad 3 ensambladores

Convert assembly language file (.asm)

into an executable file (.obj).

First Pass:

• scan program file

• find all labels and calculate the corresponding addresses;

this is called the symbol table

Second Pass:

• convert instructions to machine language,

using information from symbol table

Page 9: Unidad 3 ensambladores

Es una estructura en la cual se realizan varias operaciones tales como: insertar, borrar y buscar la información sobre los símbolos (aquellos elementos que no están presentes en la tabla de equivalencia) que van apareciendo a lo largo del programa, Por ejemplo: los identificadores (variables y funciones), etiquetas, definidos por el usuario.

Alguno de los campos presente en la tabla de símbolos tenemos:

Tipo de dato

Dirección de memoria

Segmento al que pertenece

Page 10: Unidad 3 ensambladores

A cada una de las partes de una linea de código en ensamblador se le conoce como token, por ejemplo en la linea de código

MOV AX,Var

tenemos tres tokens, la instrucción MOV, el operando AX, y el operando VAR. El ensamblador lo que hace para generar el código OBJ es leer cada uno de los tokens y buscarlo en una tabla interna de "equivalencias" conocida como tabla de palabras reservadas, que es donde se encuentran todos los significados de los mnemónicos que utilizamos como instrucciones.

Siguiendo este proceso, el ensamblador lee MOV, lo busca en su tabla y al encontrarlo lo identifica como una instrucción del procesador, así mismo lee AX y lo reconoce como un registro del procesador, pero al momento de buscar el token Var en la tabla de palabras reservadas no lo encuentra y entonces lo busca en la tabla de símbolos que es una tabla donde se encuentran los nombres de las variables, constantes y etiquetas utilizadas en el programa donde se incluye su dirección en memoria y el tipo de datos que contiene.

Page 11: Unidad 3 ensambladores

< THE SYMBOL TABLE > trigonometrico.exe --

======================================================

Name Offset Size Type Segment

======================================================

MENUT 00000 1 VAR data

CADENA42 0050A 1 VAR data

CADENA43 0052C 1 VAR data

PDESF2 00778 2 VAR data

CODE 00088 -5 SEGMENT (ITSELF)

INICIO 00000 -1 LABEL code

MENU 00005 -1 LABEL code

TRIANGULO 00055 -1 LABEL code

ESFERA 007C1 -1 LABEL code

SALIRPROGRAMA 0091E -1 LABEL code

=====================================================

Page 12: Unidad 3 ensambladores

• Cuando el programador invoca al ensamblador, dicho programa detecta e informa si encontró o no errores en la fase traducción. Por otra parte, en caso encontrar errores, el ensamblador, debe generar mensajes significativos para orientar al programado donde esta dicho error y así pueda ser solventado:

Parte de las actividades del gestor son: • Detectar errores léxicos (ortográficos)

• Detectar errores sintácticos (construcciones incorrectas)

• Detectar errores semánticos (p. ej. uso de variables no declaradas, errores de tipo, etc).

Page 13: Unidad 3 ensambladores

ENSAMBLADORES DE UNA FASE: leen una línea y la traducen directamente para producir una instrucción de lenguaje maquina o la ejecuta si se trata de una pseudo instrucción. Se construye la tabla de símbolos a medida que aparecen las definiciones de variables, etiquetas, etc.

ENSAMBLADORES DE DOS FASES: Realiza la traducción en dos etapas: 1° fase leen el programa fuente y construyen la tabla de símbolos, 2° fase vuelve a leer el programa fuente y pueden ir traduciendo totalmente pues reconocen la totalidad de los símbolos.

Page 14: Unidad 3 ensambladores
Page 15: Unidad 3 ensambladores

La diferencia entre los ensambladores radica en la forma de generar el código y en las directivas con que cuente, aunque estas diferencias son mínimas. El código Assembly no cambia puesto que los microprocesadores con los que se va a trabajar son comunes. Así, todos los programas que se creen con un ensamblador en particular podrán ser ensamblados en otro, cambiando las pseudo-operaciones no reconocidas por el equivalente indicado en el manual de referencia del paquete empleado.

Page 16: Unidad 3 ensambladores

El propósito para el que se crearon este tipo de aplicaciones es la de facilitar la escritura de programas, ya que escribir directamente en código binario, que es el único código entendible por la computadora, es en la práctica imposible.

La evolución de los lenguajes de programación a partir del lenguaje Assembly originó también la evolución de este programa ensamblador hacia lo que se conoce como programa compilador.