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í.
- 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.
- 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.
Zde je výpočet aritmetické řady napsaný v Assembly a v C pro porovnání.
- Assembly
- C
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
s = 0;
for (i = 1; i <= n; i++) {
s *= i;
}
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
-
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. -
Překlad
Assembler každý příkaz přeloží na odpovídající strojovou instrukci. Například na procesoru AVR může instrukceADD R16, R17být přeložena na 16bitové číslo0000 1101 0001 0000. -
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).
Každá platforma má svůj vlastní assembler, protože každý procesor má jinou sadu instrukcí.