elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  ASM (Moderador: Eternal Idol)
| | | |-+  Mi primer programa en NASM
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Mi primer programa en NASM  (Leído 7,514 veces)
Debci
Wiki

Desconectado Desconectado

Mensajes: 2.021


Actualizate o muere!


Ver Perfil WWW
Mi primer programa en NASM
« en: 2 Abril 2010, 11:51 am »

Hola a a todos, me va gustando esto del asm xD
Mirad he hecho mi primer code, muy sencillo un hi World clasico pero con unas cosillas mas:

Código
  1. section .text
  2.   global _start ;parida para tener al linker contento
  3.  
  4. _start: ;entry point
  5.  
  6. mov edx,len ;colocamos en edx como primer argumento de la llamada a sys_write len
  7. mov ecx,msg ;en ecx el segundo argumento que es una define double word (la cadena)
  8. mov ebx,1 ;el file descriptor, el out standard
  9. mov eax,4 ;llamada a sistema (sys_write)
  10. int 80h ;llamamos al kernel para que ejecute
  11.        jmp segundaLlamada ;salto incondicional a otra seción de codigo
  12.  
  13. segundaLlamada:
  14.  
  15.        mov edx,length2 ;lo mismo de antes
  16. mov ecx,mensaje2 ;lo mismo
  17. mov ebx,1 ;lo mismo
  18. mov eax,4 ;mas de lo mismo
  19. int 80h ;mas todavia
  20.        mov eax,1 ;llamamos a 1 (sys_exit)
  21.        mov ebx,0       ;codigo de salida, o eso he entendido
  22. int 80h ;otra vez mi querido linux
  23.  
  24. section .data
  25.  
  26. msg db 'Hola mundo!',10 ;cadena
  27. mensaje2 db 'Y buenos dias NASM',10
  28. len equ $ - msg ;cadena
  29. length2 equ  $ - mensaje2
  30.  

El problema es que ejecuta 3 veces el syswrite cuando solo deberian ser dos, debuggeo y me fijo en que hace el salto a segundaLlamada y despues de eso la vuelve a ejecutar.
Como es eso?

Otra duda, como es que no puedo poner el valor de salto de linea como ah? si es 0x0a porque no puedo poner ah tengo que poner 10 o 0xa no lo entiendo con 0x80 si me deja pues pongo 80h.

Saludos

Saludos


« Última modificación: 2 Abril 2010, 11:53 am por ..::| D3Bć1 |::. » En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.969


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Mi primer programa en NASM
« Respuesta #1 en: 2 Abril 2010, 12:10 pm »

¿Como que se ejecuta tres veces el sys_write? ¿No sera que al olvidarte de poner el 0 terminador de cadena al escribir msg tambien sale mensaje2?

¿Probaste con 0Ah?


En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
Debci
Wiki

Desconectado Desconectado

Mensajes: 2.021


Actualizate o muere!


Ver Perfil WWW
Re: Mi primer programa en NASM
« Respuesta #2 en: 2 Abril 2010, 12:17 pm »

¿Como que se ejecuta tres veces el sys_write? ¿No sera que al olvidarte de poner el 0 terminador de cadena al escribir msg tambien sale mensaje2?

¿Probaste con 0Ah?
pero se supone que solo lo llamo una vez como es que escribe dos veces la cadena?

Saludos
En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.969


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Mi primer programa en NASM
« Respuesta #3 en: 2 Abril 2010, 12:37 pm »

pero se supone que solo lo llamo una vez como es que escribe dos veces la cadena?

Llamas a sys_write dos veces (lineas 10 y 19). No es cosa del 0 terminador ya que pasas el tamaño exacto de la cadena como parametro pero tal vez eso este mal, fijate que valores tienen ahora y que valores toman si definis las variables asi:

Código
  1. msg db 'Hola mundo!',10 ;cadena
  2. len equ $ - msg ;cadena
  3. mensaje2 db 'Y buenos dias NASM',10
  4. length2 equ  $ - mensaje2
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
Debci
Wiki

Desconectado Desconectado

Mensajes: 2.021


Actualizate o muere!


Ver Perfil WWW
Re: Mi primer programa en NASM
« Respuesta #4 en: 2 Abril 2010, 13:08 pm »

Solved ^^

Saludos
En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.969


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Mi primer programa en NASM
« Respuesta #5 en: 2 Abril 2010, 13:23 pm »

De nada.
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
Debci
Wiki

Desconectado Desconectado

Mensajes: 2.021


Actualizate o muere!


Ver Perfil WWW
Re: Mi primer programa en NASM
« Respuesta #6 en: 2 Abril 2010, 13:23 pm »

De nada.
Gracias ^^

Saludos
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[NASM] String Reverse =P
ASM
Binary_Death 0 3,623 Último mensaje 28 Noviembre 2010, 19:23 pm
por Binary_Death
El primer programa de la historia.
Foro Libre
KarlosVid(ÊÇ) 0 3,858 Último mensaje 3 Mayo 2011, 07:48 am
por KarlosVid(ÊÇ)
[VB6] Una ayuda con mi primer programa... plz :) « 1 2 »
Programación Visual Basic
SuperDraco 15 7,281 Último mensaje 16 Julio 2011, 13:04 pm
por SuperDraco
Mi primer programa en VB6
Programación Visual Basic
NorteaComputer 8 3,397 Último mensaje 5 Agosto 2011, 02:44 am
por Luna71c0
Mi primer Programa y duda!!!
Programación Visual Basic
punkacs 7 3,006 Último mensaje 7 Agosto 2011, 23:14 pm
por Elemental Code
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines