ASM array

Iniciado por Leyer, 29 Enero 2012, 02:39 AM

0 Miembros y 1 Visitante están viendo este tema.

Leyer

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

fary

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.
Un byte a la izquierda.

Leyer

yep si que funciona, pero es que si lo pongo en 3 o 2 igual funciona y no se por que  :xD

fary

#3
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.
Un byte a la izquierda.

MCKSys Argentina

Perdonen mi ignorancia, pero... que significa "rd"?

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

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


fary

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.
Un byte a la izquierda.

MCKSys Argentina

Perfecto. Gracias!
MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."