2011-03-08 4 views
0

Je commence à apprendre asm en utilisant fasm, malheureusement après compiler le code ci-dessous je reçois erreur: "l'application a cessé de fonctionner", je utilise Win7 64bit. Quelqu'un a-t-il une idée de la raison pour laquelle cela ne fonctionne pas?Code simple, l'application a cessé de fonctionner

format PE Console 4.0 
include 'win32a.inc' 

push MB_OK 
push _tresc 
push _tytul 
push 0 
call [MessageBoxA] 

push 0 
call [ExitProcess] 

mov eax,0 
ret 

_tytul db "Tytul",0 
_tresc db "Hello world :)",0 

data import 
    library user32,'USER32.DLL' 
    library kernel32,'KERNEL32.DLL' 
    import user32,\ 
     MessageBoxA,'MessageBoxA' 
    import kernel32,\ 
     ExitProcess,'ExitProcess' 
end data 
+0

Ce n'est pas l'erreur, mais si '_tytul' est le titre de votre fenêtre, vous avez à échanger' 'pousser _tytul' et pousser _tresc'. – schnaader

Répondre

4

Il ne peut y avoir qu'une seule bibliothèque d'invocation macro. Votre ExitProcess n'est pas importé et appelle la mauvaise adresse. Mettre le tout dans une bibliothèque invocation:

data import 
    library user32,'USER32.DLL',kernel32,'KERNEL32.DLL' 
    import user32,MessageBoxA,'MessageBoxA' 
    import kernel32,ExitProcess,'ExitProcess' 
end data 
Questions connexes