hola
estoy estudiando asm, hice un ejemplo de messagebox en fasm, pero no se porque me sale un error al finalizar el programa, alguien sabe que podria ser?
format PE GUI 4.0
include 'C:\fasm\include\win32ax.inc'
push MB_YESNO
push mensaje
push captio
push 0
call [MessageBoxA]
cmp eax, IDYES
jne exit
jmp gracias
gracias:
push MB_OK
push mensaj
push capt
push 0
call [MessageBoxA]
jmp exit
exit:
push 0
push [ExitProcess]
mensaje db 'mensaje', 0
captio db 'exito!!', 0
mensaj db 'mensaje', 0
capt db 'XD', 0
data import
library kernel32, 'KERNEL32.DLL', user32, 'USER32.DLL'
import user32, MessageBoxA, 'MessageBoxA'
import kernel32, ExitProcess, 'ExitProcess'
end data
push [ExitProcess]
en lugar de call.
Te recomiendo depurar con WinDbg, cuando superas unas pocas lineas se ve mas rapido depurando que leyendo el codigo.
Si usas las macros extendidas: win32ax.inc
No hace falta que pongas los import a mano.
format PE GUI 4.0
include 'd:\fasm\include\win32ax.inc'
.code
start:
push MB_YESNO
push mensaje
push captio
push 0
call [MessageBoxA]
cmp eax, IDYES
jne exit
jmp gracias
gracias:
push MB_OK
push mensaj
push capt
push 0
call [MessageBoxA]
jmp exit
exit:
push 0
call [ExitProcess]
.end start
.data
mensaje db 'mensaje', 0
captio db 'exito!!', 0
mensaj db 'mensaje', 0
capt db 'XD', 0
La macro ".end" se encarga de adjuntar todos los imports. Luego fasm al ensamblar solo importa los que tu hayas usado.
a cierto, no me di cuenta de push, gracias
CitarSi usas las macros extendidas: win32ax.inc
No hace falta que pongas los import a mano.
Eso no lo sabia, gracias por decirme
salu2
De nadas.