Jazyk assembleru je programovací jazyk, který lze použít k přímému zadávání příkazů počítači. Je to tzv. nízkoúrovňový jazyk, který je velmi blízký hardwaru — používá mnemotechnická slova (mnemoniky) místo číselných kódů, které tvoří strojový kód, kterému počítač skutečně rozumí. Počítač program v assembleru přímo nespustí; program, který mnemotechnické instrukce přeloží do strojového kódu, se nazývá assembler. Assembler tedy převádí názvy instrukcí a symbolická jména registrů/adres na konkrétní binární kódy.

Jak assembler funguje

Programy napsané v jazyce assembleru se obvykle skládají z instrukcí — krátkých rozkazů, které procesor vykoná po spuštění programu. Instrukce mohou provádět operace jako přesun dat, aritmetiku, porovnání, skoky nebo volání podprogramů. Část počítače, která tyto instrukce vykonává, je procesor.

Překlad z assembleru do spustitelného kódu probíhá v několika krocích:

  • Assembler nahradí mnemotechniky odpovídajícími číselnými opkódy.
  • Symbolická jména (labely, konstanty) se převedou na konkrétní adresy nebo hodnoty.
  • Direktivy assembleru (např. nastavení sekcí, zarovnání, definice dat) ovlivní uspořádání výsledného binárního souboru.
  • Výsledkem je objektový soubor nebo kompletní spustitelný binární kód.

Základní prvky v assembleru

  • Instrukce – mnemotechnická jména jako MOV, ADD, JMP apod.
  • Registry – malé, rychlé úložiště v procesoru (např. AX, BX, EAX, RAX), kam instrukce operují.
  • Adresování – způsoby, jak navést instrukci na data (bezprostřední, registrové, paměťové, indexované atd.).
  • Labely – symbolická jména pro adresy (skoky, začátky funkcí).
  • Direktivy – příkazy pro assembler, které neprodukují instrukce, ale řídí překlad (např. definice dat, zarovnání).
  • Komentáře – poznámky v kódu, neovlivňují překládání.
  • Makra – šablony kódu, které assembler rozvine během překladu pro snazší opakování vzorů.

Příklad jednoduché instrukce

Typický zápis v assembleru může vypadat například takto (velmi zjednodušeně):

  • MOV AX, 5 – vlož hodnotu 5 do registru AX
  • ADD AX, BX – přičti obsah registru BX k registru AX
  • JMP label – skoč na místo označené label

Výhody a nevýhody

  • Výhody: maximální kontrola nad hardwarem, velmi efektivní a rychlý kód, nezbytný pro psaní startovacích kódů (bootloadery), ovladačů zařízení, firmware a kritických částí systémového softwaru.
  • Nevýhody: kód je dlouhý a obtížně čitelný, náročný na údržbu, platformově závislý (každá architektura má vlastní instrukční sadu), vývoj trvá déle než ve vysokoúrovňových jazycích.

Assembler vs. vysokoúrovňové jazyky

Na rozdíl od vysokoúrovňových jazyků (C, Python, Java) musí v assembleru programátor explicitně rozepsat každý krok, který procesor vykoná. Vysokoúrovňový jazyk často umožní napsat jednu instrukci typu PRINT "Hello, world!", zatímco v assembleru by bylo potřeba zadat mnoho nízkoúrovňových operací, které se pod tímto příkazem skrývají (volání systémového rozhraní, příprava parametrů, práce s pamětí apod.).

Kdy se assembler dnes používá

I když většinu aplikací dnes programujeme ve vysokoúrovňových jazycích, assembler má stále důležitá použití:

  • vývoj operačních systémů a bootloaderů
  • programování embedded zařízení a mikrokontrolérů
  • ovladače zařízení a nízkoúrovňové knihovny
  • kritické části kódu optimalizované pro výkon
  • reverzní inženýrství a analýza škodlivého softwaru

Praktické poznámky pro začátečníky

  • Nejprve si prostudujte instrukční sadu (ISA) cílové architektury (např. x86, ARM, RISC-V).
  • Používejte emulátory a ladící nástroje (debuggery), které umožní sledovat registry a paměť krok za krokem.
  • Učte se strukturovaně: labely, podprogramy, zásobník a konvence volání funkcí výrazně usnadní čitelnost.
  • Doporučuje se kombinovat assembler s vysokoúrovňovým jazykem (např. vložený assembler) jen tam, kde je to skutečně nutné.

Assembler je tedy nástroj pro ty, kdo potřebují maximální kontrolu nad chováním stroje. Umožňuje psát velmi efektivní a přesný kód, ale vyžaduje detailní znalost architektury a pečlivou práci s každým krokem programu.