În toate lecțiile anterioare, am vorbit despre compilatorul TASM, deoarece este standard și neexploatat. Dar compilatorul mai popular este MASM, a fost creat special pentru scrierea programelor în asamblare pentru Win32. Are macrocomenzi și directive speciale pentru a simplifica programarea.
Principalul avantaj al MASM este macroul invoke, vă permite să apelați funcțiile API în mod obișnuit, verificând numărul și tipul parametrilor. Acesta este aproape același apel ca în TASM, dar această macrocomandă verifică numărul de parametri și tipurile acestora. Acesta este modul în care se numește funcția:
Pentru a utiliza invocarea pentru a apela o procedură, trebuie să definiți prototipul acesteia:
Această directivă declară o procedură numită testproc, care are 3 parametri în dimensiunea DWORD.
Dacă faci asta.
masm vă va oferi o eroare deoarece procedeul testproc are 3 parametri și nu 4. Masmul are, de asemenea, o verificare de tip, adică verifică dacă parametrii au tipul corect (dimensiunea).
Aceasta creează o procedură numită testproc, cu trei parametri. Prototipul este folosit, invocați. Toți parametrii pot fi utilizați în codul procedurii, fiind extrași automat din stivă. De asemenea, variabilele locale pot fi utilizate în proceduri.
Nu puteți utiliza aceste variabile în afara procedurii. Acestea sunt stocate pe stivă și sunt șterse la revenirea din procedură.
Construcții de comparație și repetare.
Dacă - am vorbit despre acest design în a zecea lecție. Are aceeași sintaxă ca TASM.
Repetați - Această construcție execută un bloc până când condiția este adevărată:
Această construcție repetă codul între repetare și până când eax devine 1.
În timp ce - Construcția în timp este o repetare a constructului. Execută blocul până când condiția este adevărată:
Puteți utiliza directiva .BREAK pentru a anula buclele și pentru a ieși.
Dacă eax = 7, bucla în timp va fi anulată.
Directiva continuă trece la codul care verifică starea de buclă în repetare și în timp ce construiește.
Acum, primul nostru program este modificat după cum urmează:
La compilarea în TASM, calea către bibliotecile statice pe care le-am specificat în timpul compilării, specificăm în calea MASM la bibliotecile statice din textul programului exact aceleași ca și căile spre fișierele incluse folosind directiva includelib.
Prototipurile fiecărei biblioteci sunt în aceleași fișiere incluse în folderul include. Acum, nu trebuie să scrieți singuri prototipurile funcțiilor, ele există deja:
În aceste fișiere sunt incluse funcții fără litere A sau W la sfârșit. Acum nu specificați aceste litere la sfârșit.
Compilation.
asamblarea fără legătură
Practic, veți utiliza această opțiune, deoarece veți folosi un linker extern (de exemplu link.exe) pentru a vă conecta fișierele.
generați un fișier obiect în format COFF
Aceasta generează un format de fișier pentru link-ul microsoft.
nume de fișier obiect
poate fi folosit dacă doriți ca fișierul de ieșire să aibă un nume diferit, nu același cu fișierul sursă.
Utilizează apelurile Pascal, C sau Stdcall
selectați tipul de apeluri pentru procedurile dvs.