Masm32 - Direktivy
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama

Masm32 - DirektivyMasm32 - Direktivy

 

Masm32 - Direktivy

Google       Google       9. 3. 2006       13 574×

"196156 - Bude-li důstojník přistižen, jak očichává sedlo rotopedu v dámské tělocvičně, bude propuštěn bez soudu." Určitě jste poznali, že se jedná o jednu z mnoha direktiv, které lze zaslechnout v serálu Red Dwarf. Ale my se dnes podíváme na jiné direktivy a doufám, že budou zajimavé i přesto, že nejsou tak vtipné jako v již zmíněném seriálu.

Reklama
Reklama
  • Co to jsou direktivy
  • První tři řádky programu
  • Co bude příště
  • Novinky

Co to jsou direktivy

Direktiva je vyhrazené slovo pro assembler (kompilátor). V popisu MSDN (část věnovaná MASM32) zahrnuje do direktiv i tzv. High Level Syntax. Dnes si tedy probereme ty nejzákladnější, které budeme v budoucnu používat, a já je nebudu dále vysvětlovat.

První tři řádky programu

Každý program v MASM32 (.EXE/.DLL) musí začínat třemi řádky, které přikazují kompilátoru, jak má vypadat výsledný kód. Jelikož se v tomto seriálu budeme zabývat programy pro Windows, musí každý program začínat takto:

.586
.model flat,stdcall
option casemap:none
.586

Direktiva se používá na nastavení instrukční sady procesoru 586. Povolené jsou také direktivy .286, .386, .486, .586 a .686. Znamená to tedy, že pokud použijete direktivu .486 a ve zdrojovém kódu se objeví instrukce, která se nachází pouze v instrukční sadě 586, budete na to kompilátorem upozorněni.


.model flat,stdcall

Definuje paměťový model ve zdrojovém kódu. Paměťový model může být jeden z následujících typů: TINY, SMALL, COMPACT, LARGE anebo FLAT. V našem případě přichází v úvahu pouze FLAT, protože jako jediný používá šířku segmentu 32 bitů. Zároveň generuje data a kód do jednoho segmentu. Sdtcall je typ jazyka; opět zde může být několik nastavení, a to C, BASIC, FORTRAN, PASCAL, SYSCALL. My však budeme používat stdcall.


option casemap:none

Tato direktiva kontroluje mapovaní znaků na velká písmena. Parametr za dvojtečkou může být ALL, NONE anebo PUBLIC. Standardní nastavení je NONE. Jen pro zajímavost dodám, že tyto parametry korespondují s volbami příkazového řádku kompilátoru, a to /Cu, /Cp, /Cx.

Co bude příště

Doufám, že vás dnešní díl zaujal, i když není tak mohutný, jako byl ten první, pilotní díl. Příště si popíšeme nejpoužívanější High Level Syntax, a pak se už budeme věnovat jednoduchým ukázkám ve WinAsm.

Novinky

WinAsm Studio - k dispozici je nová verze tohoto IDE rozhraní

The MASMForum - fórum s velkým zdrojem informací kolem programování v MASM. Zařadil jsem ho sem, protože si z tohoto fóra můžete stáhnout novou beta verzi MASM32. Přímý odkaz na thread je zde.

×Odeslání článku na tvůj Kindle

Zadej svůj Kindle e-mail a my ti pošleme článek na tvůj Kindle.
Musíš mít povolený příjem obsahu do svého Kindle z naší e-mailové adresy kindle@programujte.com.

E-mailová adresa (např. novak@kindle.com):

TIP: Pokud chceš dostávat naše články každé ráno do svého Kindle, koukni do sekce Články do Kindle.

4 názory  —  4 nové  
Hlasování bylo ukončeno    
0 hlasů
Google
Autor programuje v Assembleru, resp. v MASM32.

Nové články

Obrázek ke článku DistrCut – optimalizace pomocí distribuované inteligence

DistrCut – optimalizace pomocí distribuované inteligence

Optimalizační systémy, které jsem dosud popisoval, se týkaly vždy optimalizace na jednom zařízení. Optimalizovalo se dělení tyčového materiálu na jedné pile, vypalování plošného materiálu na jednom plazmovém stroji, řídilo se tavení na jedné elektrické obloukové peci.

Ve výrobním procesu je však často nutné optimalizovat činnost celého výrobního úseku, kde je více různých objektů odlišného typu a koordinovat činnost těchto objektů k dosažení společného cíle, zpravidla kvality finálního výrobku. Řešení tohoto problému umožňuje distribuovaná inteligence.

Reklama
Reklama

loadingtransparent (function() { var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true; po.src = 'https://apis.google.com/js/plusone.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s); })();
Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032017 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý