| Artículos | 01 ENE 1997

Lenguajes ensambladores

Tags: Histórico
Borland Turbo Assembler 5 y Microsoft Macro Assembler 6.11
Eugenio Barahona.

Algunas tareas, como la creación de controladores de dispositivo, necesitan directamente utilizar un lenguaje ensamblador e ir más allá del habitual lenguaje C. En este artículo analizamos los dos Ensambladores para PC más conocidos.

Si bien el lenguaje Ensamblador cada vez recibe menos cobertura, tanto por la prensa informática como por las editoriales de libros técnicos y las empresas productoras de software, no cabe duda de que, en determinadas situaciones, su uso es obligado. Actualmente nos encontramos en un momento en el que la tendencia que está siguiendo el mercado de los sistemas operativos, y de las herramientas de desarrollo de software, es hacia una cada vez mayor independencia del hardware sobre el que se ejecutan tanto las aplicaciones como el propio sistema operativo.

En este escenario los lenguajes de programación orientados a objetos, como C++, dominan el mercado de desarrollo profesional de aplicaciones. Además, mediante la utilización de herramientas de programación visual (como Visual Basic o Delphi), incluso usuarios con pocos, o incluso nulos, conocimientos de informática pueden desarrollar programas con cierta facilidad.

Si bien esta tendencia tiene indudables beneficios, como un menor tiempo de desarrollo de los programas, mayor portabilidad del software, etc. también tiene algunas pegas, entre las que destacan la producción, en muchos casos, de ficheros ejecutables de considerable tamaño y una menor velocidad de ejecución.

Es común que los programadores mantengan encendidas discusiones sobre si, por ejemplo, un determinado compilador de C es capaz de generar un código de igual calidad al que un programador experto en lenguaje Ensamblador es capaz de crear y, sobre todo, acerca del tiempo que es necesario para desarrollar una misma rutina en un lenguaje y en otro. De lo que no cabe duda es que, hoy en día, ningún compilador es capaz de generar un código ejecutable tan optimizado como el que un programador habituado a la programación en Ensamblador es capaz de producir.

Lenguajes de bajo, medio y alto nivel

Formalmente los lenguajes de programación se dividen en estos tres tipos. Esta división atiende a la cercanía del lenguaje respecto al código máquina del procesador, el cual es el único lenguaje que cualquier ordenador es capaz de entender directamente.

Dentro de los lenguajes de bajo nivel encontramos, exclusivamente, al lenguaje Ensamblador. Este lenguaje es específico de cada modelo de microprocesador, de forma que el Ensamblador de la familia x86 de Intel no es compatible con el de los procesadores 68000 de Motorola o con la familia PowerPC. Mediante este lenguaje los códigos binarios del código máquina se describen mediante nemotécnicos que recuerdan, ligeramente, el funcionamiento de la instrucción a la que representan.

Otra característica importante del Ensamblador es que cada instrucción del código fuente en Ensamblador genera una única instrucción ejecutable tras realizar la compilación. Esto no ocurre con el resto de los lenguajes de programación (de medio y alto nivel), en los que una línea de código fuente puede generar más de una instrucción.

Los lenguajes de medio nivel se posicionan un paso más cerca del programador que del ordenador, representando las instrucciones mediante palabras procedentes del idioma Inglés. Un ejemplo de este tipo de lenguajes puede ser el C, el cual dispone en su librería de funciones algunas instrucciones que recuerdan a palabras inglesas, como por ejemplo la función printf encargada de imprimir.

Los lenguajes de más alto nivel suelen estar dotados de entornos de programación visual, los cuales evitan que el programador deba desarrollar código para gestionar la interfaz de usuario del programa. Este tipo de entornos suele aplicarse al desarrollo de software que funciona sobre sistemas operativos con interfaces gráficas de usuario, como Windows (en todas sus versiones), OS/2, etc.

Lenguajes compilados e interpretados

Otra clasificación formal de los lenguajes de programación se realiza dependiendo del sistema utilizado para traducir el código fuente a código máquina, el cual ya es ejecutable por el procesador del ordenador.

Cuando se dice que un lenguaje es compilado, se quiere decir que mediante un programa, denominado compilador, se traduce el código fuente a código objeto, es decir, código máquina, el cual una vez enlazado con las librerías que usemos produce un fichero ejecutable. Cada vez que se realice una modificación del código fuente es necesario realizar de nuevo el proceso de compilación y enlazado para generar un nuevo ejecutable.

El lenguaje Ensamblador es un lenguaje compilado, ya que el programa fuente debe ser traducido mediante un programa, generalmente denominado ensamblador, que traduce cada uno de los nemotécnicos del fuente a una instrucción de código máquina.

Los lenguajes interpretados, por el contrario, utilizan un interprete que traduce a código máquina cada instrucción del programa fuente cada vez que lo ejecutamos. Como consecuencia de esta característica, los lenguajes interpretados producen programas mucho más lentos que los compilados. Un ejemplo de lenguaje interpretado es el GW-BASIC que acompañaba a varias versiones del MS-DOS de Microsoft.

Entorno de desarrollo

A pesar de que las empresas que crean productos de programación invierten considerables cantidades de dinero para la creación de cómodos entornos de desarrollo para sus compiladores de C/C++ y para sus herramientas de programación visual, esto no ocurre, ni por asomo, con las herramientas para programar en lenguaje Ensamblador.

Aunque es de sobra conocida la dureza de la programación en Ensamblador (algo que es más que discutible), eso no quiere decir que los programadores que trabajamos con este lenguaje tengamos que conformarnos con entornos de desarrollo que aún se basan en herramientas que debemos ejecutar desde el prompt del DOS o, para trabajar algo más cómodamente, ejecutar desde editores de texto especiales para programadores.

Actualmente no conozco ninguna empresa que comercialice una herramienta para programar en lenguaje Ensamblador sobre PC que disponga de un entorno de desarrollo integrado.

¿Cuándo se decidirán los fabricantes de herramientas de desarrollo a crear productos que hagan posible la programación en Ensamblador con la misma comodidad que ofrecen al usuario los entornos integrados de que disponen, por ejemplo, los compiladores de C?

Windows y el lenguaje Ensamblador

Si bien el lenguaje de programación nativo de Windows es C, es posible desarrollar aplicaciones Windows en lenguaje Ensamblador. Para realizar esta tarea necesitamos disponer de una versión en Ensamblador de los ficheros de cabecera que se utilizan en la programación en C para este sistema operativo (principalmente del archivo WINDOWS.H).

Los dos productos que analizamos en esta comparativa disponen de sendas utilidades para DOS encargadas de convertir un fichero de cabecera de C a un archivo que pueda ser utilizado en lenguaje Ensamblador.

Hay que reseñar que, desafortunadamente, Microsoft no ha documentado excesivamente el desarrollo de aplicaciones para Windows en lenguaje Ensamblador, si bien un programador experimentado en este lenguaje que, además, domine la programación para Windows en C, no tendrá excesivos problemas en crear programas en Ensamblador para este sistema operativo.

En el caso de Turbo Assembler se incluye una pequeña aplicación para Windows que nos puede servir de guía a la hora de iniciar la programación de una aplicación Windows en Ensamblador.

Una de las principales utilidades del lenguaje Ensamblador bajo Windows es para el desarrollo de controladores virtuales de dispositivo. Mediante este software se aisla a las aplicaciones, y al

Contenidos recomendados...

Comentar
Para comentar, es necesario iniciar sesión
Se muestran 0 comentarios
X

Uso de cookies

Esta web utiliza cookies técnicas, de personalización y análisis, propias y de terceros, para facilitarle la navegación de forma anónima y analizar estadísticas del uso de la web. Consideramos que si continúa navegando, acepta su uso. Obtener más información