Ensambladores

¿Qué es ensamblador y para que sirve?

Cuando se empezaron a utilizar símbolos nmotécnicos, se escribieron programas para traducir automáticamente los programas escritos en lenguaje ensamblador a lenguaje máquina. A estos programas traductores se les llamo ensambladores.

La entrada para un ensamblador es un programa fuente escrito en lenguaje ensamblador. La salida es un programa objeto, escrito en lenguaje de máquina. El programa objeto incluye también la información necesaria para que el cargador pueda preparar el programa objeto para su ejecución.

Para evitar confusiones, de aquí en adelante llamaremos lenguaje ensamblador al conjunto de nemotécnicos y a las reglas para su manejo. Al programa que traduce un programa objeto a partir de un programa escrito en lenguaje ensamblador lo llamaremos ensamblador.

Motivos para utilizarlo

  • Rapidez: Como el programador directamente selecciona las instrucciones que se ejecutan en el programa, el programa final queda mas optimizado que un programa generado por un compilador.
  • Mayor control de la computadora: Un programa puede accesar directamente cualquier componente y periférico de la computadora.
  • Independencia del lenguaje: No depende de librerías o del lenguaje mismo para realizar una tarea especifica. Lenguajes como el Basic limitan al programador a lo que el lenguaje puede hacer.
  • La mayoría de las computadoras pueden ensamblar: Los recursos necesarios para ensamblar un programa son mucho menores que los compiladores o interpretes. El ensamblador generalmente es más rápido ensamblando un programa que un compilador generando un archivo ejecutable.

Motivos para no utilizarlo

Desafortunadamente, también existen motivos para no crear los programas con ensamblador.

  • Dependencia del hardware: El código se hace en extremo dependiente del microprocesador, de los dispositivos, de los controladores, etc. Este punto será analizado con mas detenimiento en dependencias de hardware.
  • Mayor tiempo de codificación: El numero de líneas de un programa hecho en ensamblador es mayor a uno hecho en un lenguaje de alto nivel (por ejemplo: Función en C puede realizar varias decenas o centenas de instrucciones del microprocesador).
  • Comprensión mas profunda de la computadora: Entender un lenguaje de alto nivel es generalmente más sencillo que el ensamblador. Comprender ensamblador requiere conocimientos más exactos sobre el funcionamiento interno de la computadora.
  • Errores mas frecuentes en el programa: El evitar un error o encontrar alguno que ya exista es difícil. Las herramientas para este caso (como el CodeView y el TurboDebbuger) ayudan en gran medida a ver lo que esta ocurriendo en la maquina, pero no localizan los errores.

Entonces, ¿cuando utilizo ensamblador y cuando no?

Depende del programa a desarrollar. Si el programa debe controlar en gran medida los componentes internos de la computadora o debe ser lo suficientemente veloz, entonces es recomendable utilizarlo.

Si se requiere un sistema grande y no se dispone de mucho tiempo para entregarlo, entonces es mejor juntar un lenguaje de alto nivel con ensamblador (las funciones básicas del programa realizarlas en ensamblador, y el programa en general codificarlo con el lenguaje de alto nivel).

Este punto se discute mas adelante en ensamblador y lenguajes de alto nivel.