Foro de elhacker.net

Programación => ASM => Mensaje iniciado por: Leyer en 29 Enero 2012, 02:39 am



Título: ASM array
Publicado por: Leyer en 29 Enero 2012, 02:39 am
Hola, tengo una duda esto no debería lanzar un error? quisas sea una pregunta estupida pero no llevo mucho en ASM :xD

Código
  1. array   rd 3
  2. main:
  3.        mov     [array], str0
  4.        mov     [array+4], str1
  5.        mov     [array+8], str2
  6.        mov     [array+12], str3


Título: Re: ASM array
Publicado por: fary en 29 Enero 2012, 12:15 pm
Si pruebas el código vas a ver que funciona.

Código
  1. include 'win32ax.inc'
  2.  
  3. .data
  4.        array   rd 4
  5.  
  6.        str0    db 'hola',0
  7.        str1    db 'adios',0
  8.        str2    db 'juanito',0
  9.        str3    db 'mamahuevo',0
  10.  
  11. .code
  12. start:
  13.  
  14.  
  15.  
  16.        mov     [array], str0
  17.        mov     [array+4], str1
  18.        mov     [array+8], str2
  19.        mov     [array+12], str3
  20.  
  21.        mov eax,dword[array+4]
  22.  
  23.        push 0
  24.        push 0
  25.        push eax
  26.        push 0
  27.        call [MessageBoxA]
  28.  
  29. .end start    

Lo unico que veo mal es esto:
Código
  1. array   rd 3

Tendrías que poner 4, ya que estas usando 4 dword.

saludos.


Título: Re: ASM array
Publicado por: Leyer en 29 Enero 2012, 18:46 pm
yep si que funciona, pero es que si lo pongo en 3 o 2 igual funciona y no se por que  :xD


Título: Re: ASM array
Publicado por: fary en 29 Enero 2012, 19:28 pm
Porque sobreescribes otro dato que viene despues de ese espacio que tu reservaste... como sabras "array" es un puntero, si le sumas 50 y escribes tambien te funcionaría pero vete tu a saber que dato sobreescribas y puede que tu exe pete.

un saludo.


Título: Re: ASM array
Publicado por: MCKSys Argentina en 31 Enero 2012, 00:09 am
Perdonen mi ignorancia, pero... que significa "rd"?

Seria como un dd? dw? db? Que tamaño tiene?


Título: Re: ASM array
Publicado por: fary en 31 Enero 2012, 00:39 am
No me se explicar muy bien  :rolleyes:

variable rd cantidad

variable = nombre de la variable ( obvio xDDDD)
rd = reservamos DWORDs
cantidad = Cantidad de DWORD que queremos reservar.

Tambien se pueden reservar bytes (rb) o word (rw)

nose si me he explicado bien  :-\

un saludo.


Título: Re: ASM array
Publicado por: MCKSys Argentina en 31 Enero 2012, 01:20 am
Perfecto. Gracias!