Hola, tengo una duda esto no debería lanzar un error? quisas sea una pregunta estupida pero no llevo mucho en ASM :xD
array rd 3
main:
mov [array], str0
mov [array+4], str1
mov [array+8], str2
mov [array+12], str3
Si pruebas el código vas a ver que funciona.
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:
array rd 3
Tendrías que poner 4, ya que estas usando 4 dword.
saludos.
yep si que funciona, pero es que si lo pongo en 3 o 2 igual funciona y no se por que :xD
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.
Perdonen mi ignorancia, pero... que significa "rd"?
Seria como un dd? dw? db? Que tamaño tiene?
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.
Perfecto. Gracias!