viernes, 7 de mayo de 2010

Ensamblador : Hola Mundo en Linux Debian Lenny con NASM


En este post quiero mostrar como realizar un programa simple "hola mundo" en lenguaje ensamblador, en el sistema operativo Linux Debian Lenny, usando el ensamblador NASM

como primer paso es necesario instalar nasm, en Debian esta tarea es trivial, y se reduce a ejecutar como root el comando


apt-get install nasm


una vez completa la instalación de nasm, pasamos al código fuente del ejemplo

section .data
    holaStr:    db 'Hola Mundo!',10
    holaSize:      equ $-holaStr

section .text
    global _start

_start:
    
    mov eax,4            ; llamada del sistema 'write' identificador 4
    mov ebx,1            ; descriptor de archivo 1 = pantalla
    mov ecx,holaStr      ; cadena a mostrar
    mov edx,holaSize     ; longitud de la cadena 
    int 80h              ; invocar al kernel

    ; Terminate program
    mov eax,1            ; llamada del sistema 'exit'
    mov ebx,0            ; codigo de error 0
    int 80h              ; invocar al kernel






solamente se define una cadena y una constante con la longitud de dicha cadena, luego se invoca a la llamada "write" del sistema, y se termina el programa con la llamada a "exit"

asumiendo que el código fuente, se coloca en el archivo hello.asm los comandos para ensamblar y enlazar el código para crear el ejecutable serian los siguientes


nasm -f elf hello.asm


este comando, le pide a nasm que ensamble el archivo hello.asm y genere codigo objeto en formato ELF


ld -o hello hello.o


este comando invoca al linker (enlazador) para que a partir del codigo objeto, almacenado en hello.o producto de invocar a nasm, nos genere un archivo ejecutable con nombre hello

y finalmente para ejecutar


./hello


lo que debe imprimir en la consola el mensaje "hola mundo!"

Código fuente completo