Přeskočit na hlavní obsah

Assembly

Assembly je nízkoúrovňový programovací jazyk. Každá instrukce odpovídá přesně jedné instrukci procesoru. Jedná se o člověku srozumitelný zápis strojových instrukcí.

Proč se Assembly učit
  • Umožňuje pochopit, jak procesor skutečně funguje.
  • Dává úplnou kontrolu nad hardwarem (časování, registry, přerušení…).
  • Používá se při programování mikrokontrolérů, bootloaderů a při ladění nízkoúrovňového kódu.
  • Vhodné jen pro malé a kritické části programu.
Nevýhody Assembly
  • Zdlouhavé a složité psaní kódu.
  • Každý procesor má vlastní sadu instrukcí a tím pádem i rozdílné intrukce v assembly → kód nelze snadno přenést na jiné čipy.
Příklad: Aritmetická řada

Zde je výpočet aritmetické řady napsaný v Assembly a v C pro porovnání.

clr     sH          ; s = 0 (high byte)
clr sL ; s = 0 (low byte)
ldi i, 1 ; i = 1

loop:
add sL, i ; s += i (low byte)
adc sH, r1 ; + carry do high (r1 = 0)
inc i ; i++
cp i, n ; porovnej i a n
brlo loop ; pokud i <= n, opakuj

Assembler

Ačkoliv je assembly velmi nízkoúrovńový programovací jazyk, tak se stále nejedná o strojový kód. Takže potřebuje kompilátor. A tím je Assembler. Ten překládá kód v jazyce Assembly do strojového kódu — tedy do jedniček a nul, které procesor přímo vykonává.

Jak assembler pracuje

  1. Zdrojový kód
    Programátor napíše kód v Assembly pomocí tzv. mnemonik (např. ADD, MOV, JMP). Tyto příkazy jsou pro člověka čitelnější než samotné binární instrukce.

  2. Překlad
    Assembler každý příkaz přeloží na odpovídající strojovou instrukci. Například na procesoru AVR může instrukce ADD R16, R17 být přeložena na 16bitové číslo 0000 1101 0001 0000.

  3. Výstup
    Výsledkem je binární soubor (.hex, .bin), který lze nahrát do paměti mikrokontroléru.

Příklady assemblerů

  • AVR Assembler – pro mikrokontroléry Atmel (Arduino Uno, ATmega).
  • NASM / MASM – pro procesory x86 (PC).
  • ARM GNU Assembler (as) – pro ARM Cortex-M (STM32, ESP32-S3).
Kompatibilita

Každá platforma má svůj vlastní assembler, protože každý procesor má jinou sadu instrukcí.