fordítóprogram MASM

A fordító MASM

Minden korábbi leckéket, beszéltem a fordítóprogram TASM, mert ez egy szabványos és nenavorochenny. De az egyre népszerűbb fordító MASM, akkor jött létre kifejezetten írásban programok assembler Win32. Ebben vannak a makrók és a speciális irányelvek egyszerűsítése programozás.

Funkciót.
A legfőbb előnye ennek a MASM makró meghívási, ez lehetővé teszi, hogy hívja az API függvények a szokásos ellenőrzése számú és típusú paramétereket. Ez majdnem ugyanaz a hívás, a TASM, de ez a makró ellenőrzi a paraméterek számát és típusát. Így a függvény neve:
Indítsunk <функция>, <параметр1>, <параметр2>, <параметр3>

Ahhoz, hogy a meghívási hívni egy eljárást, meg kell határoznia a prototípus:

PROTO STDCALL testproc: DWORD. DWORD. DWORD

Ez az irányelv kijelenti nevezett eljárás testproc, ami történik 3 paraméter nagyságú DWORD.
Most, ha erre a célra.

hivatkozhat testproc, 1, 2, 3, 4

MASM kapsz egy hibaüzenetet, mert testproc eljárás tart 3 paraméter helyett 4 MASM írjon ellenőrzése, azaz Ellenőrzi, hogy a paraméterek megfelelő típusú (méret).

testproc PROTO STDCALL: DWORD. DWORD. DWORD
.kód
testproc proc param1: DWORD, param2: DWORD, param3: DWORD
..........
áztat
testproc endp

Ez létrehoz egy eljárást, úgynevezett testproc, három paramétert. A prototípus használják, hivatkozhat. Minden paraméter lehet használni az eljárási kódex, akkor automatikusan azt kivonat a verem. Emellett a helyi változókat lehet használni eljárásokat.

testproc proc param1: DWORD, param2: DWORD, param3: DWORD
HELYI var1: DWORD
HELYI var2: BYTE
mov ecx, param1
mov var2, cl
mov EDX param2
mov eax, param3
mov var1, eax
add EDX, eax
mul eax, ecx
mov ebx, var1
.HA bl == var2
xor eax, eax
.ENDIF
áztat
testproc endp

Nem tudja használni ezeket a változókat az eljáráson kívül. Tárolják őket egy halom és eltávolítjuk, amikor visszatér az eljárást.

Tervezés összehasonlítás és ismételje meg.

ha
Ezen építési, beszéltem 10 óra. Ugyanaz a szintaxis a TASM.

ismétlés
Ez a kialakítás magában hordozza a mondat, amíg a feltétel nem igaz:

REPEAT
; kódot itt
.IG eax == 1

Ez a kialakítás következik a kód ismétlése között, és amíg, amíg EAX értéke 1.

míg
A design a inverzió közben ismétlődő design. Lefuttatja a blokk, amíg a feltétel igaz:

MÍG eax == 1
; kódot itt
.ENDW

Használhatja lehetőségre.BREAK irányelv megtörni a ciklust, és kijutni.

MÍG EDX == 1
inc eax
.HA eax == 7
.BREAK
.ENDIF
.ENDW
Ha EAX = 7, miközben a ciklus megszakad.
Irányelv továbbra ugrik a kód ellenőrzi a hurok feltétel a tervek ismétlés és while.Teper első programmal az alábbiak szerint módosul:

486
.modell lakás, stdcall
opció casemap: nincs

includelib. \ MASM32 \ lib \ kernel32.lib
includelib. \ MASM32 \ lib \ user32.lib
MessageBoxA PROTO STDCALL: DWORD. DWORD. DWORD. DWORD
ExitProcess PROTO STDCALL: DWORD

adat
ttl dB '11111', 0
.kód
kezdet:
hivatkozhat MessageBoxA 0, offset ttl, ofszet ttl, 0
invoke ExitProcess, 0
end Start

ML [/ opciók] filelist [/ link linkoptions]

összeszerelni összekapcsolása nélkül
Alapvetően, ha ezt a lehetőséget használja, mint akkor egy külső kapcsoló (pl link.exe) összekapcsolni a fájlokat.

létrehoz egy COFF tárgy fájlformátum
Ez létrehoz egy fájlformátum a linker microsoft.

Az objektum neve fájl
Ezt fel lehet használni, ha szeretné, hogy a kimeneti fájl egy másik nevet, nem olyan, mint az eredeti fájlt.

Használat felhívja Pascal, C, vagy Stdcall
Válassza ki a kívánt hívások típusát, az eljárásokat.

Add szimbolikus debug információk
Állítsa be ezt az opciót, ha szeretné használni a debugger.

Állítsa be az include path
Adja meg az elérési útvonalra

LINK [paraméterek] [fájlok] [@commandfile]

hibakeresés
Ez a hibakeresési információkat. Használja ezt az opciót, ha azt szeretné, hogy használja a debugger.

hibakeresés Típus: codeview / coff
Kiválasztja a kimeneti hibakereső adat formátumban. Attól függ, hogy debugger. Softice és Visual C ++ hibakereső így mind fogantyú CV (codeview)

DEF fájlt
Megadja a fájl (.def). Használt a dll, exportált függvények.

DLL
A kimeneti DLL fájl helyett EXE.

Library path
Meghatározza a könyvtár elérési útját fájlok (* .lib).

Megállapítja az utat inc-fájlok
Ez meghatározza az elérési utat inc-fájlok alapértelmezés szerint.

Out: fájlnév
Lehet változtatni a kimeneti fájl nevét.

alrendszer
Kiválasztja az operációs rendszer, amely a program futtatására: NATIVE | WINDOWS | Konzol | WindowsCE | POSIX

Telepítettem MASM mappában d: \ MASM \ MASM32, a mappában d: \ MASM mind szövegét a programok * .asm. Egy összeállítás Csináltam egy bat fájlt, ami lefordítja current.asm file:
; ====== [CUT ITT] =====
d: \ MASM \ MASM32 \ bin \ ml.exe / c / coff current.asm
d: \ MASM \ MASM32 \ bin \ link.exe / alrendszer: windows current.obj
szünet
; ======= [CUT ITT] ========
Ennek eredményeként, az indulás után egy fájl a mappában d: \ MASM current.exe készen áll lefordítani a programot.

Ez a vége ennek a leckét. Ebben a leckében meséltem neki makrosoftsky fordító MASM. A következő leckében fogjuk írni az első ablak a kérelem szerelő.