Test Foro de elhacker.net SMF 2.1

Programación => Programación General => 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 (asm) [Seleccionar]
array   rd 3
main:
       mov     [array], str0
       mov     [array+4], str1
       mov     [array+8], str2
       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 (asm) [Seleccionar]
include 'win32ax.inc'

.data
       array   rd 4

       str0    db 'hola',0
       str1    db 'adios',0
       str2    db 'juanito',0
       str3    db 'mamahuevo',0

.code
start:



       mov     [array], str0
       mov     [array+4], str1
       mov     [array+8], str2
       mov     [array+12], str3

       mov eax,dword[array+4]

       push 0
       push 0
       push eax
       push 0
       call [MessageBoxA]

.end start    


Lo unico que veo mal es esto:
Código (asm) [Seleccionar]

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!