Assembler

1.- Qué es el ensamblador:

El sistema alfanumérico para escribir código máquina mediante expresiones abreviadas (mnemotécnicos).
 
La compilación es más complicada porque incluye la conversión de operaciones matemáticas complejas, comandos de lenguaje natural o tipos de comandos complejos.
 
Cada ordenador tiene su propio lenguaje ensamblador, exclusivo de su CPU; un lenguaje de alto nivel (LAN) puede ser compilado en distintas máquinas.
 

2.- Para qué se usa:

Porque hay aplicaciones o programas que deben tratar directamente con los registros de la máquina, la memoria, dispositivos de E/S, etc.
 
Un programa ensamblador "bien hecho" produce un ejecutable más rápido y corto.
 
El proceso de traducción se realiza en dos pasos:
 
* Primero: se recorre el programa fuente; por cada instrucción implementa el contador según el código de la instrucción. Comprueba si tiene o no etiqueta, y si la tiene coloca su símbolo y su dirección en la tabla de símbolos. Después compara el símbolo del código de operación con una tabla de símbolos posibles; si es válido sustituye el código real y si no emite un mensaje real; a continuación comprueba la síntasis.
 
* Segundo: recorre las instrucciones del módulo fuente reemplazando los símbolos por sus direcciones reales tomadas de la tabla.
 

3.- Herramientas de programación:

Editor: programa con el que construímos los módulos fuente.
 
Ensamblador: convierte el código fuente en el código objeto.
 
Módulo LST: código máquina asociado a cada instrucción; la posición en la que se encuentra y una tabla en la que se indica la dirección que corresponde a cada nombre simbólico.
 
Módulo OBJ: módulo objeto.
 
Módulo CRF: listado de referencias cruzadas; contiene información referente a cada símbolo y las sentencias donde se hace referencia al mismo.
 
Montador: realiza dos tareas: combina varios módulos objetos realizando las conexiones necesarias entre ellos, y convierte los módulos objeto en ejecutable.
 

4.- Sintaxis de un módulo fuente ensamblador:

* Instrucciones: son representaciones simbólicas del juego de instrucciones de la CPU.
 
[etiqueta] nombre_instruccion [operando(1)][comentario]
 
La instrucción se especifica en una sola línea y los campos se separan entre sí por blancos o tabuladores.
 
* Etiqueta: identificador simbólico que se da a la instrucción. Puede tener hasta 31 caracteres; el primero no numérico; indiferente usar mayúsculas o minúsculas. El ensamblador interpreta las etiquetas como direcciones de memoria. El último carácter es ":".
 
* Nombre_instrucción: de dos a seis letras y una instrucción se transformará en una única instrucción de código máquina.
 
* Operando(s): especifican los datos que serán tratados por la instrucción. Puede haber 0, 1 ó 2 operando. Si tenemos dos, el primero el "destino" y el segundo "fuente". Se separán por una coma. Existen tres tipos: inmediatos, registro y memoria; y además se pueden modificar los operandos de memoria con los prefijos de segmento.
 
* Comentario: cualquier cosa que comience por ";".
 
* Directivas(pseudoinstrucciones): son partes del fichero fuente que indican al ensamblador cómo interpretar instrucciones o datos; sólo se utilizan en tiempo de ensamblaje; no se traducen a código máquina.
 
[nombre] nombre_directiva [operandos] [comentario]
 
* El nombre no termina en ":" e indica nombres de procedimientos y variables con las directivas apropiadas.