Obsah    Kapitoly: 12345678,  |  X.1X.2X.3X.4,  |  Y1 Y2 

1) První pohled na Assembler

         V první řadě bych se asi měl zmínit o tom, co assembler vlastně je. Assembler je jako mnoho jiných programovací jazyk. Jako žádný jiný, je assembler jazyk nejnižší úrovně, což znamená, že je to ten nejzákladnější a nejjednodušší programovací jazyk a všechny ostatní programovací jazyky jsou odvozeny od něho. Assembleru samotnému rozumí už samotný hardware vašeho počítače, protože obsahuje jen ty nejzákladnější instrukce. Asi nemá cenu něco moc popisovat, bez nějaké praktické ukázky, takže tady je část kódu assembleru. Typický příklad "Hello World" programu. Po kompilaci tohoto zdrojového kódu vznikne *.com soubor, který prostě vypíše na obrazovku nápis "!!Hello World!!".

A SEGMENT ; Název segmentu ASSUME CS:A,DS:A ; Nastavení registrů na začátek onoho segmentu ORG 100H ; A nakonec, kde budeme začínat .386 ;============================================== Start: Mov Dx, Offset Text Mov Ah,09H ; Číslo fce DOSu pro výpis na obrazovku Int 21H Int 20H ; Konec programu ;============================================== Text DB '!!Hello World!!$' ; Definice proměnných ;============================================== A ENDS ; Konec segmentu END START ; Konec programu

Trochu složitější, zvlášť když si uvědomíte, že například v Pascalu stačí něco ve formě:

Begin
         Writeln('!!Hello World!!');
End.

Má to ale jednu výhodu. Ačkoli je zdrojový kód poměrně dlouhý(vzhledem k tomu co program umí) je velikost *.com souboru pouhopouhých 25 byte. Pochybuji, že v jiném programovacím jazyce zvládnete něco podobného. Pro zajímavost text v *.com souboru vypadá takto:
ş ´ Í!Í !!Hello World!!$


A teď k samotnému programu. Část:

A       SEGMENT
ASSUME CS:A,DS:A
ORG 100H

.386

je klasická hlavička, která je povinná pro soubory, jejichž konečná přípona je *.com. Tyto řádky píšete vlastně jen kvůli překladači. Pro *.exe soubory je hlavička trochu jiná, ale o tom až trochu později. Instrukce .386 říká, jaké instrukce mohou být používány. Pokud používáte instrukce, které umí stroje od 386 a víš na 286ce tak vám to bude asi na nic. Vzhledem k tomu, že touto dobou panují ve světě počítačů procesory Pentium 4 apod. tak se jedná o věc už takřka zbytečnou.

Přejdeme teď k hlavnímu tělu programu:

Start:
	Mov Dx,Offset Text		
	Mov Ah,09H	; Číslo fce DOSu pro výpis na obrazovku
	Int 21H				

	Int 20H		; Konec programu

Z toho co jste viděli byste už mohli odpozorovat následující pravidla psaní v assembleru. Žádné oddělovače mezi instrukcemi neexistují, protože každá instrukce se píše na svůj vlastní řádek. To, co je za středníkem, se nepočítá, slouží jako popisky, abyste se v programu vyznali. (U takto jednoduchého programu popisky nejsou zas tak nutné, ale doporučuji mít okomentovanou každou věc v programu, protože i ten nejjednodušší program má opravdu dlouhý zápis a časem byste se v něm začali ztrácet. Zvláště to oceníte, až se k programu vrátíte po nějakém čase.)

Následuje něco jako datová část, kde inicializujete proměnné. Něco jako Var v Pascalu. (U *.com programů to je v místech, po ukončení programu, u *.exe souborů se data inicializují ve speciální části na začátku )

Text DB  '!!Hello World!!$'

V normálním jazyce tento zápis znamená něco jako vytvoř proměnnou Text, která okazuje na řetězec "!!Hello World!!$."

Poslední je konec, který zase pište všude, jako hlavičku.

A ENDS
END START

To je tak ve stručnosti prozatím vše. Podrobněji si vše probereme až v dalších kapitolách. Jenom pro shrnutí:
  • Každý kód psaný v assembleru musí obsahovat hlavičku, pro překladač, aby věděl jak a co. Hlavička je obvykle vždy stejná.
  • Následuje vlastní tělo programu.
  • Na texty za středníkem se neberou ohledy. Při překladu se vypouští.
  • Každá instrukce se píše na jeden řádek.
  • U *.com je datová část obvykle na konci (nemusí tomu tak vždy být), u *.exe je ve speciální části na začátku.
  • Nakonec je "konec".

    Předchozí kapitola Nahoru Následující kapitola