Primeros Pasos para Programar en Assembler en Ubuntu

Introducción

El lenguaje ensamblador (assembler) es un lenguaje de bajo nivel que se utiliza para escribir programas que están estrechamente ligados al hardware de la máquina. Aunque es más complejo que los lenguajes de alto nivel, aprender assembler puede proporcionar una comprensión más profunda de cómo funciona una computadora a nivel interno. En este artículo, se presentan los primeros pasos para programar en assembler en Ubuntu.

Instalación de las Herramientas Necesarias

Antes de comenzar a programar en assembler, necesitamos instalar algunas herramientas esenciales: un editor de texto, el ensamblador NASM (Netwide Assembler), y el enlazador LD.

Instalación de NASM

NASM es un ensamblador popular y ampliamente utilizado en el mundo Linux.

  1. Actualizar los Repositorios:
   sudo apt update
  1. Instalar NASM:
   sudo apt install nasm

Instalación de LD (GNU Linker)

LD es el enlazador que utilizaremos para convertir los archivos objeto generados por NASM en ejecutables.

  1. Instalar Binutils (que incluye LD):
   sudo apt install binutils

Escribiendo tu Primer Programa en Assembler

Ahora que tenemos nuestras herramientas instaladas, podemos escribir nuestro primer programa en assembler. Vamos a crear un sencillo programa que imprime «Hola, Mundo» en la terminal.

Paso 1: Crear el Archivo Fuente en Assembler

  1. Abrir tu editor de texto favorito (por ejemplo, Nano, Vim, o cualquier otro):
   nano hola.asm
  1. Escribir el código en assembler:
   section .data
       hello db 'Hola, Mundo', 0

   section .text

asm
global _start

_start:
; Llamada al sistema write (sys_write)
mov edx, 12 ; Número de bytes a escribir
mov ecx, hello ; Dirección del mensaje a escribir
mov ebx, 1 ; File descriptor (1 = stdout)
mov eax, 4 ; Número de llamada al sistema para sys_write
int 0x80 ; Interrupción para llamar al kernel

; Llamada al sistema exit (sys_exit)
mov eax, 1             ; Número de llamada al sistema para sys_exit
xor ebx, ebx           ; Código de salida 0
int 0x80               ; Interrupción para llamar al kernel
### Paso 2: Compilar el Código Fuente

Una vez que hemos escrito nuestro código en assembler, necesitamos ensamblarlo utilizando NASM.

1. **Ensamblar el archivo fuente:**

bash
nasm -f elf32 -o hola.o hola.asm

### Paso 3: Enlazar el Archivo Objeto

El siguiente paso es enlazar el archivo objeto para crear un ejecutable.

1. **Enlazar el archivo objeto:**

bash
ld -m elf_i386 -s -o hola hola.o

### Paso 4: Ejecutar el Programa

Ahora que tenemos nuestro ejecutable, podemos ejecutarlo para ver el resultado.

1. **Ejecutar el programa:**

bash
./hola
«`

Deberías ver «Hola, Mundo» impreso en la terminal.

Comprensión del Código

Vamos a desglosar el código que escribimos para entender mejor cómo funciona:

  • section .data: Esta sección contiene los datos estáticos que el programa utilizará. Aquí, definimos el mensaje «Hola, Mundo».
  • section .text: Esta sección contiene el código ejecutable.
  • global _start: Define el punto de entrada del programa.
  • _start: Es la etiqueta que marca el inicio del programa.
  • mov edx, 12: Especifica que se van a escribir 12 bytes (la longitud de «Hola, Mundo»).
  • mov ecx, hello: Carga la dirección del mensaje en el registro ECX.
  • mov ebx, 1: Especifica el file descriptor 1, que es stdout.
  • mov eax, 4: Coloca el número de llamada al sistema para sys_write en el registro EAX.
  • int 0x80: Llama al kernel para ejecutar la llamada al sistema.
  • mov eax, 1: Coloca el número de llamada al sistema para sys_exit en el registro EAX.
  • xor ebx, ebx: Pone el código de salida en 0.
  • int 0x80: Llama al kernel para salir del programa.

Conclusión

Hemos cubierto los primeros pasos para programar en assembler en Ubuntu, incluyendo la instalación de las herramientas necesarias, la escritura y compilación de un programa simple. Aunque assembler puede parecer intimidante al principio, con práctica y paciencia puedes aprender a escribir programas eficientes y entender más profundamente el funcionamiento interno de las computadoras.

computer codes
Photo by Pixabay on Pexels.com
error: Content is protected !!

Descubre más desde InfoGonzalez - Blog de formador e informático

Suscríbete ahora para seguir leyendo y obtener acceso al archivo completo.

Seguir leyendo

Este sitio web utiliza cookies, si necesitas más información puedes visitar nuestra política de privacidad    Ver
Privacidad
Creative Commons License
Except where otherwise noted, the content on this site is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.