2. ¿Qué es un programa ensamblador?

 

    Un programa ensamblador es un programa que traduce un texto escrito en lenguaje ensamblador de un determinado computador al lenguaje máquina de ese mismo computador, y proporciona las facilidades necesarias para simplificar la tarea de desarrollar programas en lenguajes de bajo nivel.

    También, un programa ensamblador proporciona una interfaz adecuada entre el programador y la arquitectura del computador, para las tareas de programación. Si el ordenador que se utiliza para esta tarea es el mismo, o tiene la misma CPU, que el sistema que va a ejecutar el código máquina resultante de la traducción, se dice que el programa ensamblador utilizado es un auto-ensamblador o ensamblador residente, mientras que si utiliza otra CPU diferente es un ensamblador cruzado (cross assembler).

    El ordenador sobre el que corre el programa ensamblador tendrá en su memoria central el programa fuente codificado en caracteres alfanuméricos y el propio programa ensamblador que se está ejecutando, debiendo reservar en memoria, además, un espacio para ir almacenando el código resultante de la traducción. El programa fuente se encuentra almacenado en una zona de memoria, llamada buffer, en forma de caracteres alfanuméricos, ocupando cada carácter un byte. El código resultante del proceso se denomina código objeto, y queda almacenado en otro lugar de la memoria. Además se utiliza otra zona de memoria destinada a almacenar la tabla de símbolos. La tabla de símbolos no es sino un pequeño diccionario que construye el programa ensamblador en el que constan todas las etiquetas utilizadas junto con sus equivalencias numéricas. La tabla de símbolos es temporal y sirve al propio programa ensamblador a la hora de efectuar la traducción. Una vez ensamblado el programa, la tabla no tiene otra utilidad que la de su posible consulta por parte del programador durante el proceso de depuración. El programa ensamblador actúa generalmente en dos pasos: durante el primero lee el código fuente y anota en la tabla de símbolos las etiquetas que se encuentran, calculando, si es necesario su equivalencia; en el segundo paso se apoya en la tabla de símbolos y, mediante otra lectura del programa fuente, va traduciendo, instrucción por instrucción y los códigos nemónicos que encuentra.

    Generalmente, los programas ensambladores están dotados de la posibilidad de detectar errores y dan el aviso correspondiente cuando encuentran un nemónico inexistente, un operando fuera de margen, una etiqueta definida dos veces, etc.