Dnes si popíšeme zbytek nejpoužívanějších direktiv (docela nevděčné téma), tak abychom se mohli v dalších dílech vrhnout do samotných ukázek přímo v IDE WinAsm a Masm32. Trošku předběhneme a ukážeme si první program v Masm32, jak jinak než klasický MessageBox.
Co mám na srdci
No to sám nevím, ale určitě by něco našel nějaký Mudr. Srdcař, ale zase by nenašel to, co chci teď říct. Především bych chtěl poděkovat týpkovi s nickem MazeGen, který měl věcnou kritiku na minulý díl, za kterou jsem mu vděčný. No a na ostatní se strýček filuta zlobí, protože od vás očekává reakce v podobě komentářů, kde byste měli psát, co chcete vědět, co vám není jasné, jak si představujete, aby seriál pokračoval.
Minulý díl jsem trošku zeslonil, což je mnohem víc jak zkonit. Ale jak psal MazeGen, je málo informací o assembleru v češtině. Existuje však hodně fór a tutoriálů v angličtině. Vědomosti, které v těchto fórech a tutoriálech získáte jsou zase jen vědomosti od samotných lidí, kteří na to přišli metodou pokus/omyl a nebo se to zase někde dočetli. Já ostatně materiály pro tento seriál beru také ze svých vědomostí a praxe. Chci tím říct, že Microsoft sice v MSDN má kapitolu o MASM, ze které jsem čerpal co se týče direktiv, ale je tam svým způsobem skoro nic. To se také odrazilo v kvalitě minulého dílu. Zde si můžete stáhnout část MSDN pojednávající o MASM. Jedná se o HTML Help (.chm) soubor, který jsem našel na MasmForum. Sami uvidíte, že popis od samotného Microsoft nic moc.
A jedeme dál
Za těmi prvními třemi řádky z minulého dílu si stojím, protože je bez problému využijete ve výsledných kompilacích jako například .exe, .dll, .sys, .lib. Další direktivy jsou následující a budu se je tedy snažit popsat trošku líp než minule.
INCLUDE soubor
- říká kompilátoru, kde se nachází knihovna, která je textového formátu a v níž jsou potřebné definice či dokonce vlastní podprogramy, procedury.
INCLUDELIB soubor
- název souboru, který se přilinkuje k našemu programu a nebo se z něj bude čerpat informace pro sekci importů v PE souboru. Tento soubor má binární formát.
Abyste to pochopili, tak hned jdeme do praxe. Spusťte WinAsm Studio a pokud máte defaulní nastavení, objeví se před vámi následující okno.
V tomto okně Recent Project klikněte na tlačítko New Project. V záložce Empty Project klikněte na Standard EXE a potom na OK.
Náš první program
Hodně jsem předběhl, ale nedá se nic dělat. Po kliknutí na OK v New Project je před vámi již samotné IDE s otevřeným prázdným souborem, kam přepíšete následující zdrojový kód:
;
; Ukázkový program pro www.programujte.com
;
.586
.model flat, stdcall
option casemap :none
; Knihovny,
;~~~~~~~~~~~
include \masm32\include\windows.inc
include \masm32\include\user32.inc
include \masm32\include\kernel32.inc
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib
.data
Popis db 'Můj první program',0 ; text messagebox,
Zprava db 'Ahoj....',0 ; titulek messagebox,
.code
Start:
invoke MessageBox,NULL,offset Zprava,offset Popis,MB_OK
invoke ExitProcess,NULL
end Start
Určitě se mezi vámi najdou podvodníci, kteří za pomoci Crtl+C a Ctrl+V rychle uvedený kód přepíší. Ale byl bych rád, abyste alespoň ty dva řádky s invoke napsali. Jde o to, abyste poznali jednu vychytávku, která sice není nic nového pod sluncem, ale ulehčí hodně práci. Ta vychytávka se jmenuje Intellisense.
Pokud máte kód přepsaný, tak ještě v cestě C:\Masm32\!Programy\ vytvořte adresář MyFirstProg. Proč, to popíšu později. Prostě v této cestě vytvořte uvedený adresář. Potom klikněte ve WinAsm Studiu v ToolBar na ikonu s modrými disketami alias Save Project. A nebo jděte přes menu File > Save Project. Objeví se okno Save Files, kde budou zvýrazněné v seznamu dva soubory. Pokud bude projekt obsahovat více souborů, budou v seznamu uvedené pouze ty, co byly změněny. Samozřejmě že můžete určit, které soubory se mají uložit výběrem jako například v průzkumníkovi. My v našem případě musíme uložit oba dva soubory, takže je necháme zvýrazněné a klikneme na YES.
Poté se začnou objevovat postupně dialogy pro uložení souboru s automaticky zvolenou příponou dle pořadí, v jakém byly zobrazeny v seznamu předchozího dialogu. Zvolte pro uložení náš vytvořený adresář a jméno MyFirstProg pro oba soubory (.asm, .wap). Teď se můžeme pustit do kompilace zdrojového kódu na výsledný .exe soubor. A to tak, že v ToolBar kliknete na ikonu Go All a nebo v menu zvolíte Make > Go All.
Pokud je vše v pořádku, tak se po provedení kompilace spustí náš program. Pokud se nespustí a nevznikla žádná chyba při kompilaci, tak zkuste kliknout v ToolBar na ikonu „zeleného trojúhelníku“ hned vedle Go All.
A to je dnes vše
Pro dnešek to stačí a doufám, že nebudete naštvaní, ale abych vše nenapsal do jednoho dílu, tak rozbor toho ukázkového programu si nechám na příště. Budu se moc divit, když se všem podaří zkompilovat tento ukázkový program. Proto očekávám případné dotazy. Hlavně na to, co jsem zde „záměrně“ neuvedl a možná uvedu někdy v budoucnu. Pro vás mám úkol v podobě nastudování si IDE WinAsm Studia. Buď metodou pokus/omyl, nebo si stáhněte manuál z WinAsm Homepage. Když nebudete něčemu v IDE WinAsm rozumět, tak pište do diskuze sem k tomuto dílu a já pak buď rovnou odpovím, nebo udělám speciální díl jen o WinAsm Studiu. Chci, abyste se naučili IDE WinAsm ovládat částečně sami, protože kvůli screenshotům mi pak nezbývá na text a nerad bych zde vytvářel kilometrové nudle.
Zde si můžete stáhnout dnešní ukázkový program.