Hola este es mi primer post!
Acá pongo el codigo de mi hola mundo hecho en NASM para 32bits, x86 en debian squeeze..
explicado linea por linea (como debe ser! )
Bueno ahora contar un poco sobre NASM:El Netwide Assembler o NASM,es un Ensamblador para Intel x86.
Puede ser usado para escribir programas tanto de 16 bits como de 32 bits (IA-32).
Tambien existe un dessamblador, llamado NDISASM
Existen otros como FASM, GAS (el GNU ASM con la sintaxis de AT&T, lo cual lo hace muy interesante ya que la mayoria de los ensambladores le agregan cosas a la sintaxis o usan la de Intel) ,TASM (turbo asm) o incluso el MASM para Micro$oft
Codigo:
-------------------------------------------------------------------------------------------------------------------------
section .data
hola_palabra: db 'Hola TARINGUEROS!!',18
hola_tamanio: equ $-hola_palabra
section .text
global _start
_start:
mov eax,4 ; call system 'write' id 4
mov ebx,1 ; descriptor de archivo 1 = pantalla
mov ecx,hola_palabra ; guardo la cadena en un registro ecx
mov edx,hola_tamanio ; guardo la cadena en un registro edx
int 80h ; interrupcion para invocar al kernel
; Final del programa
mov eax,1 ; llamada del sistema 'exit'
mov ebx,0 ; codigo de error 0
int 80h ; interrupcion para invocar al kernel de linux (en ms-dos es int 21h)
---------------------------------------------------------------------------------------------------------------------------------------
Para ensamblarlo y linkarlo:
nasm -f elf hola_taringa.asm
ld -o hola_taringa hola_taringa.o
Donde:
-f parametro para indicar el formato de la cabecera:
en nuestro caso elf ()
ld es el GNU Linker
-o es output (o sea la salida)
------------------------------------------------------------------------------------------------------------------------------------------
Pdf de la especificacion de el formato ELF:
Saludos!
Acá pongo el codigo de mi hola mundo hecho en NASM para 32bits, x86 en debian squeeze..
explicado linea por linea (como debe ser! )
Bueno ahora contar un poco sobre NASM:El Netwide Assembler o NASM,es un Ensamblador para Intel x86.
Puede ser usado para escribir programas tanto de 16 bits como de 32 bits (IA-32).
Tambien existe un dessamblador, llamado NDISASM
Existen otros como FASM, GAS (el GNU ASM con la sintaxis de AT&T, lo cual lo hace muy interesante ya que la mayoria de los ensambladores le agregan cosas a la sintaxis o usan la de Intel) ,TASM (turbo asm) o incluso el MASM para Micro$oft
Codigo:
-------------------------------------------------------------------------------------------------------------------------
section .data
hola_palabra: db 'Hola TARINGUEROS!!',18
hola_tamanio: equ $-hola_palabra
section .text
global _start
_start:
mov eax,4 ; call system 'write' id 4
mov ebx,1 ; descriptor de archivo 1 = pantalla
mov ecx,hola_palabra ; guardo la cadena en un registro ecx
mov edx,hola_tamanio ; guardo la cadena en un registro edx
int 80h ; interrupcion para invocar al kernel
; Final del programa
mov eax,1 ; llamada del sistema 'exit'
mov ebx,0 ; codigo de error 0
int 80h ; interrupcion para invocar al kernel de linux (en ms-dos es int 21h)
---------------------------------------------------------------------------------------------------------------------------------------
Para ensamblarlo y linkarlo:
nasm -f elf hola_taringa.asm
ld -o hola_taringa hola_taringa.o
Donde:
-f parametro para indicar el formato de la cabecera:
en nuestro caso elf ()
ld es el GNU Linker
-o es output (o sea la salida)
------------------------------------------------------------------------------------------------------------------------------------------
Pdf de la especificacion de el formato ELF:
Saludos!