Programar en lenguaje ensamblador ofrece una comprensión profunda de cómo funciona el hardware y el software a nivel de máquina. Aunque puede parecer desafiante al principio, escribir programas básicos como un «Hola Mundo» y realizar operaciones aritméticas es una excelente manera de comenzar. Este artículo te guiará a través de los pasos para escribir estos programas en ensamblador en un sistema Linux, utilizando NASM (Netwide Assembler) como ensamblador.
Instalación de NASM
NASM es ampliamente utilizado para programar en ensamblador debido a su compatibilidad y facilidad de uso. Para instalar NASM en Linux, abre una terminal y ejecuta el siguiente comando:
sudo apt-get install nasm
Este comando es para distribuciones basadas en Debian. Si usas una distribución basada en RPM, como Fedora, puedes usar dnf
o yum
en lugar de apt-get
.
«Hola Mundo» en Ensamblador
Escribir un «Hola Mundo» en ensamblador implica directamente interactuar con el sistema operativo a través de llamadas al sistema. Aquí tienes un ejemplo básico para Linux x86-64.
- Crea un archivo de texto llamado
hola_mundo.asm
y abrelo en tu editor de texto favorito. - Escribe el siguiente código en
hola_mundo.asm
:
section .data
msg db 'Hola Mundo!',0xA ; Mensaje a ser impreso y nueva línea
len equ $ - msg ; Calcula la longitud del mensaje
section .text
global _start ; Indica el punto de entrada del programa
_start:
mov eax, 4 ; La llamada al sistema para write (sys_write)
mov ebx, 1 ; El descriptor de archivo (stdout)
mov ecx, msg ; El mensaje a imprimir
mov edx, len ; La longitud del mensaje
int 0x80 ; Realiza la llamada al sistema
mov eax, 1 ; La llamada al sistema para exit (sys_exit)
xor ebx, ebx ; Status 0
int 0x80 ; Realiza la llamada al sistema
- Compila el programa utilizando NASM:
nasm -f elf64 hola_mundo.asm -o hola_mundo.o
- Enlaza el objeto compilado para crear el ejecutable:
ld hola_mundo.o -o hola_mundo
- Ejecuta el programa y deberías ver «Hola Mundo!» impreso en la terminal:
./hola_mundo
Operaciones Aritméticas Básicas
Realizar operaciones aritméticas en ensamblador es directo. Aquí tienes un ejemplo que suma dos números.
- Crea un nuevo archivo llamado
suma.asm
. - Escribe el siguiente código que suma dos números y almacena el resultado:
section .data
num1 db 5 ; Primer número
num2 db 10 ; Segundo número
resultado db 0 ; Aquí se almacenará el resultado
section .text
global _start
_start:
mov al, [num1] ; Mueve el primer número a al
add al, [num2] ; Suma el segundo número a al
mov [resultado], al ; Mueve el resultado a la variable 'resultado'
; Salida (para fines de demostración, finaliza el programa)
mov eax, 1 ; sys_exit
xor ebx, ebx ; Status 0
int 0x80 ; Llamada al sistema
- Compila y enlaza el programa como se mostró anteriormente, reemplazando
hola_mundo
consuma
en los comandos.
Estos programas son ejemplos básicos que muestran cómo interactuar con el sistema operativo y realizar operaciones aritméticas simples en ensamblador. A medida que te familiarices más con las llamadas al sistema y la sintaxis del ensamblador, podrás crear programas más complejos y eficientes. El ensamblador ofrece un control sin precedentes sobre el hardware y puede ser increíblemente gratificante una vez que se domina.
Gracias por visitar mi blog de informática, mi nombre es Tomás y soy formador y desarrollador web. Si quiere usted dejarme alguna sugerencia, ayuda o quiere un servicio de formación estoy escuchando ofertas en tomas.gonzalez@infogonzalez.com, en Facebook a https://www.facebook.com/Infogonzalez estoy deseando escucharle. Su duda o sugerencia NO molesta.