Hola, acá les dejo el código de un "Hola Mundo" en NASAM para linux de 32 bits.
Este código lo hice para una tarea y se los dejo acá por que casi no hay información de NASAM y menos en español.
Mas abajo explico como ejecutarlo y la explicación del código. Espero que les sirva.
El código:
section .data
texto: db 'Hola mundo',10
largoTexto: equ $-texto
section .text
global _start
_start:
mov eax, 4
mov ebx, 1
mov ecx, texto
mov edx, largoTexto
int 80h
mov eax, 1
mov ebx, 0
int 80h
Como Ejecutarlo:
Para poder ejecutar nuestro programa debemos de seguir ciertos pasos. Nos vamos a la terminal de Linux y escribimos los siguientes comandos.
1.Primero debemos compilarlo a lenguaje maquina:
nasm -f elf -o holamundo.o holamundo.nasm
Esto va a crear un archivo llamado "holamundo.o".
2.Luego lo Linkeamos:
ld -o holamundo holamundo.o
Esto debe crear un ejecutable.
3. Por ultimo ejecutamos nuestro programa:
./holamundo
Nota: Recordemos que para poder compilar nuestro programa debemos tener instalado el compilador de NASAM en nuestra computadora, si no es asi lo podemos instalar ejecutando el comando "sudo apt-get install nasm".
Nota 2: Para que la terminal de Linux encuentre nuestros archivos la terminal debe de estar trabajando en el directorio donde están los archivos, o bien mover nuestros archivos a la ubicación por defecto donde trabaja la terminal que seria /home.
Explicación del Código:
;En NASAM el codigo se comenta con punto y coma ";"
section .data ;seccion de datos (variables inicialisadas)
texto: db 'Hola mundo',10 ;etiqueta que referencia el texto a imprimir, el 10 es para el salto de linea
largoTexto: equ $-texto ;etiquetaque referencia el lago del texto; $ significa la posición
;actual, es decir la posición actual - la posición inicial de
;texto=largo del texto
section .text ;seccion de codigo
global _start ;variable global para indicar donde comienza el programa
_start: ;el programa iniciara aca
;imprimimos el texto en la terminal:
mov eax, 4 ;4=sys call para imprimir el texto en pantalla
mov ebx, 1 ;1=imprimir en la terminal
mov ecx, texto ;referencia a lo que queremos imprimir
mov edx, largoTexto ; el tamaño de lo que queremos imprimir
int 80h ;interrupción para ejecutar lo anterior
;Cerramos el programa:
mov eax, 1 ;1=sys call para salir
mov ebx, 0
int 80h ;interrupción para ejecutar lo anterior
Espero que les haya servido. =)
Este código lo hice para una tarea y se los dejo acá por que casi no hay información de NASAM y menos en español.
Mas abajo explico como ejecutarlo y la explicación del código. Espero que les sirva.
El código:
section .data
texto: db 'Hola mundo',10
largoTexto: equ $-texto
section .text
global _start
_start:
mov eax, 4
mov ebx, 1
mov ecx, texto
mov edx, largoTexto
int 80h
mov eax, 1
mov ebx, 0
int 80h
Como Ejecutarlo:
Para poder ejecutar nuestro programa debemos de seguir ciertos pasos. Nos vamos a la terminal de Linux y escribimos los siguientes comandos.
1.Primero debemos compilarlo a lenguaje maquina:
nasm -f elf -o holamundo.o holamundo.nasm
Esto va a crear un archivo llamado "holamundo.o".
2.Luego lo Linkeamos:
ld -o holamundo holamundo.o
Esto debe crear un ejecutable.
3. Por ultimo ejecutamos nuestro programa:
./holamundo
Nota: Recordemos que para poder compilar nuestro programa debemos tener instalado el compilador de NASAM en nuestra computadora, si no es asi lo podemos instalar ejecutando el comando "sudo apt-get install nasm".
Nota 2: Para que la terminal de Linux encuentre nuestros archivos la terminal debe de estar trabajando en el directorio donde están los archivos, o bien mover nuestros archivos a la ubicación por defecto donde trabaja la terminal que seria /home.
Explicación del Código:
;En NASAM el codigo se comenta con punto y coma ";"
section .data ;seccion de datos (variables inicialisadas)
texto: db 'Hola mundo',10 ;etiqueta que referencia el texto a imprimir, el 10 es para el salto de linea
largoTexto: equ $-texto ;etiquetaque referencia el lago del texto; $ significa la posición
;actual, es decir la posición actual - la posición inicial de
;texto=largo del texto
section .text ;seccion de codigo
global _start ;variable global para indicar donde comienza el programa
_start: ;el programa iniciara aca
;imprimimos el texto en la terminal:
mov eax, 4 ;4=sys call para imprimir el texto en pantalla
mov ebx, 1 ;1=imprimir en la terminal
mov ecx, texto ;referencia a lo que queremos imprimir
mov edx, largoTexto ; el tamaño de lo que queremos imprimir
int 80h ;interrupción para ejecutar lo anterior
;Cerramos el programa:
mov eax, 1 ;1=sys call para salir
mov ebx, 0
int 80h ;interrupción para ejecutar lo anterior
Espero que les haya servido. =)