Muchos estudiantes de ingeniería se quejan de que tienen que aprender lenguaje ensamblador. Pero no hay forma de entender realmente cómo funciona un ordenador, si no has escrito al menos par de scripts sencillos en este lenguaje de programación.
¿Qué es lenguaje de ensamblador?
El lenguaje ensamblador, assembly o simplemente asm, es un lenguaje que permite programar casi directamente el hardware de los ordenadores y otros dispositivos electrónicos.
Digo casi pues, en realidad, el ordenador solo entiende el código binario. Pero programar utilizando 0’s y 1’s resulta extremadamente difícil. De ahí surge la necesidad de “traducir” esos 0’s y 1’s, de modo que los humanos los podamos entender. Y eso es justo lo que hace el lenguaje ensamblador: sustituir secuencias de 0’s y 1’s por etiquetas comprensibles.
Para que lo entiendas mejor, pongamos el siguiente ejemplo de instrucción en código binario y ensamblador:
Binario
10110000 01100001
Ensamblador (x86)
MOV a1, 061h
Esta instrucción lo que hace es asignar el valor hexadecimal 061h (01100001 binario, 97 decimal) al registro ‘A1’ del microprocesador (arquitectura x86). Con este ejemplo, es fácil de comprenderqueel lenguaje de ensamblador consiste, básicamente, en “disfrazar” el código binario con fines de manipulación.
Lenguajes de bajo nivel vs. alto nivel
Por las razones anteriores, el lenguaje ensamblador está clasificado como de bajo nivel. ¿Qué significa esto? En función de su grado de abstracción, es decir por el grado de “omisión” de los detalles, los lenguajes de programación se pueden clasificar en:
- Lenguajes de bajo nivel. Controlan el hardware de forma directa o cas directa mediante instrucciones que dependen del dispositivo, y que en general resultan difícil de entender por los seres humanos. Ejemplos: código binario, lenguaje máquina y ensamblador.
- Lenguajes de alto nivel. Toman elementos del lenguaje natural y matemático, y omiten los detalles del hardware para que el programador no tenga que preocuparse por ellos. Ejemplos: C++, Java, Python, PHP, JavaScript, C#, etc.
Como ves, los lenguajes de alto nivel se abstraen (omiten) del hardware, mientras que los de bajo nivel (de abstracción) trabajan con las instrucciones y registros del dispositivo.
Eso significa que hay algunas diferencias, por ejemplo, entre el lenguaje ensamblador para un microprocesador x84, y el usado para un microcontrolador 16F84, ya que los sets de instrucciones son diferentes. De ahí que el programador deba conocer muy bien el dispositivo que desea programar.
Aplicaciones del lenguaje ensamblador
Aunque hoy día existen numerosas herramientas para programar hardware utilizando lenguajes de alto nivel, a veces se impone la necesidad de hacerlo en lenguaje ensamblador, más que nada por razones de eficiencia.
Por eso, es ampliamente utilizado para:
- programación de microcontroladores
- depuración y optimización de código
- ingeniería inversa
- trabajar con recursos limitados
- acceder a funciones vedadas a los lenguajes de alto nivel
- etc.
Además, el asm es muy recomendable si quieres desarrollar habilidades de programación, debido a su complejidad y al hecho de que te obliga a “pensar como una máquina”.
Llegados hasta aquí, ¿qué piensas del lenguaje ensamblador? ¿Te gustaría aprenderlo? ¿O prefieres compartir este artículo para que tus amigos programadores sepan más del tema?
Deja una respuesta