push MB_OK push offset TitleTxt push offset Message push hWnd call MessageBoxlässt sich mit invoke kürzer schreiben:
invoke MessageBox,hWnd,ADDR Message,ADDR TitleTxt,MB_OKStatt mit invoke kann man die Funktion mittels des Macros fn aufrufen. fn erlaubt es, auch Direktwerte für die Texte zu übergeben:
fn MessageBox,hWnd,"Hi, I am a Message Box","Greetings",MB_OK
Die aufgerufene Funktion (MessageBox) endet mit einem Rückgabewert im Register EAX. Wenn man den Funktionsaufruf jedoch mittels des fast funktionsgleichen MACROS rv aufruft, kann man den Funktionsaufruf so behandeln wie das Register EAX. Gezeigt wird es an einem Beispiel mit mov und an einem Beispiel mit cmp :
mov retval, rv(MessageBox,hWnd,ADDR Message,ADDR TitleTxt,MB_OK) cmp rv(MessageBox,hWnd,ADDR Message,ADDR TitleTxt,MB_OK), IDYES je label
Die beiden Macros fn und rv sind in der beim MASM32-SDK mitgelieferten Datei masm32/macros/macros.asm definiert.
Eine kurze Interpretation zu diesem Programm steht unterhalb des Quellprogrammtextes.
|
start: call main inkey exit