La verdad es que aún soy un poco novato en esto de desarrollar en ensamblador, pero ya estoy haciendo mis primeros "pininos" y pues me gustaría compartir lo poco que he aprendido hasta el momento:
Herramientas para desarrollo:
1. Nasm o Gas, los cuales son compiladores para este lenguaje, en mi caso estoy usando Nasm, dado que éste usa sintaxis de intel, a diferencia de Gas que usa sintaxis de AT&T. Lo bueno de todo esto es que ambos están dentro en los repositorios de cualquier distribución.
2. Instalar el "linker" ld y gcc, en muchas distribuciones gcc ya viene instalado, en su defecto, ambos también los podemos encontrar en los repositorios de Linux.
3. Instalar Geany, un Entorno de Desarrollo bonito y eficaz compatible con múltiples lenguajes de programación, con esto me refiero a que identifica la sintaxis del lenguaje y podemos personalizar los comandos de compilación
Programa ejemplo en Terminal:
Comenzando con una impresión de un mensaje:
;MensajeAssembly.asm
;se compila con nasm -f elf MensajeAssembly.asm
;se liga con ld -s MensajeAssembly.o -o MensajeAssemblyEx
;se ejecuta $ ./MensajeAssemblyEx
section .data
mensaje: db "Mi Primer programa en Ensamblador", 0x0A
lng: equ $-mensaje
section .text
global _start ;se define el punto de entrada
_start:
mov edx, lng
mov ecx, mensaje
mov ebx, 1 ;EBX=Manejador de Ficheros (STOUT)
mov eax, 4 ;EAX=Función sys_write() del Kernel
int 0x80 ;Interrupción 80, llamada al Kernel
mov ebx, 0 ;EBX=Código de salida al SO
mov eax, 1 ;EAX=Función sys_exit del Kernel
int 0x80 ;Interrupción 80, llamada al KerneAhora hacemos lo mismo pero esta vez llamando funciones de C:
;asmC.asm
; nasm -f elf asmC.asm -o asmC.o
; gcc -o asmCex asmC.o
extern printf
section .data
message: db "Mensaje Ensamblador llamado a printf()", 0xA
section .text
global main
main:
; colocar los argumentos de la funcion en la pila, de derecha a izq.
;Introducir parametros del printf a la pila
push message
;llamada a la funcion printf de C
call printf
; balancear la pila
add esp, 4*1
ret Bien todo esto lo podemos hacer desde terminal pero cada vez que queramos hacer modificaciones al programa es necesario introducir de nuevo los comandos de compilar, ligar y ejecutar; es aquí donde entra Geany.
Desde él podemos personalizar los comandos de compilar, ligar y ejecutar para que con solo tres clicks podamos hacer todo este proceso:
1.-Ya instalado Geany en el menú "Construir" damos en la opción "Establecer Comandos de Construcción" y aparecerá una ventana como esta:
2.-Esto nos permite compilar ligar y ejecutar nuestro programa en ensamblador desde este IDE, desde el menú "Construir", eligiendo las opciones adecuadas
;)
SALUDOS espero que les sea de utilidad
Read more!


