Anfängerfrage: LOOP in ASM32 funktioniert nicht! Warum nicht ?
-
Hi, habe neu mit ASM angefangen únd stehe jetzt schon ganz am Anfang
auf dem Schlauch....Habe eine ganz einfache Schleife in asm gemacht, welche noch zusätzlich
einen Text ausgeben soll!! Aber die Schleife beendet sich nicht ?
Muss der invoke-Befehl noch ergänzt werden ?.386 .model flat,stdcall option casemap:none include \masm32\include\windows.inc include \masm32\include\kernel32.inc includelib \masm32\lib\kernel32.lib include \masm32\include\user32.inc includelib \masm32\lib\user32.lib .data MsgBoxCaption db "FirstProg",0 MsgBoxText db "MessageBOX!",0 .code start: mov ecx, 10 countdown: invoke MessageBox, NULL, addr MsgBoxText, addr MsgBoxCaption, MB_OK loop countdown invoke ExitProcess, NULL end start
Soetwas müsste doch eigentlich klappen, weil wenn ich MessageBox ausserhalb
des Loops mache, dann beendet sich ja das Programm auch, was heisst das
MessageBox auch terminiert! Warum also im Loop nicht ?Ps: Vielen Dank schonmal für eure Hilfe!
Falls sich jemand ganz viel Mühe machen möchte: Wie gebe ich den noch
zusätzlich in der MessageBox den jeweiligen Wert von ecx mit aus ?
-
ecx wird von messagebox anscheinend verändert aber nicht wiederhergestellt. deshalb solltest du den inhalt von ECX auf den stack retten bevor du die prozedur aufrufst und nach dem aufruf wiederherstellen:
countdown: PUSH ECX invoke MessageBox, NULL, addr MsgBoxText, addr MsgBoxCaption, MB_OK POP ECX loop countdown
-
Vielen Dank für schnelle deine Antwort...jetzt verstehe ich es