3. 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.
4. 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
5. 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
6. 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.
7. 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”
8. 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
9. 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
10. 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.
11. < 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
=====================================================
12. • 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).
13. 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.
14.
15. 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.
16. 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.