Arquitectura de Hardware
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.