Assembler

El lenguaje ensamblador, o assembler (assembly language en inglés), es un lenguaje de programación de bajo nivel para los computadoresmicroprocesadoresmicrocontroladores y otros circuitos integrados programables. Implementa una representación simbólica de los códigos de máquina binarios y otras constantes necesarias para programar una arquitectura dada de CPU y constituye la representación más directa del código máquina específico para cada arquitectura legible por un programador. Esta representación es usualmente definida por el fabricante de hardware, y está basada en los mnemónicos que simbolizan los pasos de procesamiento (las instrucciones), los registros del procesador, las posiciones de memoria y otras características del lenguaje. Un lenguaje ensamblador es por lo tanto específico de cierta arquitectura de computador física (o virtual). Esto está en contraste con la mayoría de los lenguajes de programación de alto nivel, que idealmente son portátiles.
 

Un programa utilitario llamado ensamblador es usado para traducir sentencias del lenguaje ensamblador al código de máquina del computador objetivo. El ensamblador realiza una traducción más o menos isomorfa (un mapeo de uno a uno) desde las sentencias mnemónicas a las instrucciones y datos de máquina. Esto está en contraste con los lenguajes de alto nivel, en los cuales una sola declaración generalmente da lugar a muchas instrucciones de máquina.

Muchos sofisticados ensambladores ofrecen mecanismos adicionales para facilitar el desarrollo del programa, controlar el proceso de ensamblaje, y la ayuda de depuración. Particularmente, la mayoría de los ensambladores modernos incluyen una facilidad de macro (descrita más abajo), y se llaman macro ensambladores.

Fue usado principalmente en los inicios del desarrollo de software, cuando aún no se contaba con potentes lenguajes de alto nivel y los recursos eran limitados. Actualmente se utiliza con frecuencia en ambientes académicos y de investigación, especialmente cuando se requiere la manipulación directa de hardware, alto rendimiento, o un uso de recursos controlado y reducido. También es utilizado en el desarrollo de controladores de dispositivo (en inglés, device drivers) y en el desarrollo de sistemas operativos, debido a la necesidad del acceso directo a las instrucciones de la máquina. Muchos dispositivos programables (como los microcontroladores) aún cuentan con el ensamblador como la única manera de ser manipulados.

 

Ventajas de los Lenguajes Ensambladores

El corazón de la computadora es el microprocesado r, éste maneja las necesidades aritméticas, de lógica y de control de la computadora.

El microprocesado r tiene su origen en la década de los sesenta, cuando se diseño el circuito integrado (IC por sus siglas en ingles) al combinar varios componentes electrónicos en un solo componente sobre un "chip" de silicio.

Los fabricantes colocaron este diminuto chip en un dispositivo parecido a un ciempiés y lo conectaron a un sistema en funcionamiento . A principios de los años setenta Intel introdujo el chip 8008 el cual, instalado en una computadora terminal, acompaño a la primera generación de microprocesado res.

En 1974 el 8008 evoluciono en el 8080, un popular microprocesado r de la segunda generación para propósitos generales. En 1978 Intel produjo la tercera generación de procesadores 8086, para proporcionar alguna compatibilidad con el 8080 y que representan un avance significativo de diseño.

Después, Intel desarrollo una variación del 8086 para ofrecer un diseño sencillo y compatibilidad con los dispositivos de entrada/salida de ese momento. Este nuevo procesador, el 8088, fue seleccionado por IBM para su computadora personal en 1981. Una versión mejorada del 8088 es el 80188, y versiones mejoradas del 8086, son los 80186, 80286, 80386, 80486 y el Pentium, cada uno de ellos permite operaciones adicionales y más procesamiento.

La variedad de microcomputado ras también ocasiono un renovado interés en el lenguaje ensamblado, cuyo uso conlleva a diferentes ventajas:
 

  • Un programa escrito en el lenguaje ensamblador requiere considerableme nte menos memoria y tiempo de ejecución que un programa escrito en los conocidos lenguajes de alto nivel, como Pascal y C.
  • El lenguaje ensamblador da a un programador la capacidad de realizar tareas muy técnicas que serian difíciles, si no es que imposibles de realizar en un lenguaje de alto nivel.
  • El conocimiento del lenguaje ensamblador permite una comprensión de la arquitectura de la maquina que ningún lenguaje de alto nivel puede ofrecer.
  • Aunque la mayoría de los especialistas en Software desarrolla aplicaciones en lenguajes de alto nivel, que son más fáciles de escribir y de dar mantenimiento, una practica común es recodificar en lenguaje ensamblador aquellas rutinas que han causado cuellos de botella en el procesamiento.
  • Los programas residentes y rutinas de servicio de interrupción casi siempre son desarrollados en el lenguaje ensamblador.



Los lenguajes de alto nivel fueron diseñados para eliminar las particularidad es de una computadora especifica, mientras que un lenguaje ensamblador esta diseñado para una computadora especifica, o, de manera más correcta, para una familia especifica de microprocesado res.

A continuación se listan los requisitos para aprender el lenguaje ensamblador de la PC:
 

  • Tener acceso a una computadora personal de IBM (cualquier modelo) o una compatible.
  • Una copia del sistema operativo MS-DOS o PC-DOS y estar familiarizados con su uso.
  • Una copia de un programa ensamblador. Las versiones de Microsoft son conocidas como MASM y QuickAssembler: TASM es de Borland y OPTASM es de System.


Para el aprendizaje de lenguaje ensamblador no es necesario lo siguiente:
 

  • Conocimiento previo de un lenguaje de programación, aunque tenerlo puede ayudarle a comprender algunos conceptos de programación más rápido.
  • Conocimiento previo de electrónica o circuiteria.