porque me sale un error al finalizar el programa?

Iniciado por Belial & Grimoire, 31 Mayo 2012, 06:09 AM

0 Miembros y 2 Visitantes están viendo este tema.

Belial & Grimoire

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?

Código (asm) [Seleccionar]
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                               
.                                 

Eternal Idol

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.

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

_Enko

Si usas  las macros extendidas: win32ax.inc
No hace falta que pongas los import a mano.
Código (asm) [Seleccionar]

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.


Belial & Grimoire

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
.                                 

Eternal Idol

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón