Jazyk symbolických instrukcí (někdy také assembler) je označení pro rodinu nízkoúrovňových programovacích jazyků, které vychází přímo z architektury souboru instrukcí (ISA – Information Set Architecture) dané platformy (např. procesoru). Konkrétních jazyků je velmi mnoho a je prakticky nemožné znát všechny. Existují však určité rysy, které jsou společné.
Jazyky symbolických instrukcí se již zřídkakdy používají k programování aplikací. Lze se s nimi však setkat při nízkoúrovňových optimalizacích, kdy lze pro zrychlení výpočtu využít speciální funkce dané platformy (např. procesoru). Tehdy se spíše než na přehlednost a přenositelnost programu hledí na hrubý výkon (3D engine, vědecké výpočty, real-time aplikace, miniaturní zařízení).
Symbolické instrukce jsou mnemotechnické zkratky pro instrukce platformy. Zkratky zpravidla vychází z anglických názvu instrukcí. Navíc jsou v jazyce k dispozici funkce, které ulehčují psaní delších a složitějších programů – například možnost zapisovat adresy skoků mnemotechnicky (label, goto).
Pro všechny jazyky symbolických instrukcí je společný jejich jednoduchý převod do strojového kódu.
Pro praktické znázornění problematiky bude představen velmi jednoduchý výukový procesor a jeho soubor instrukcí.
Jedno instrukční slovo výukového procesoru je dlouhé 16 bitů. První čtyři bity jsou operační znak instrukce, další čtyři bity obsahují číslo registru a zbývajících 8 bitů obsahuje přímý operand. Všechna čísla jsou pro jednoduchost v přímém kódu bez znaménka.
Paměť obsahuje 32 buněk o velikosti 8 bitů adresovaných 5 bity. Adresa se předává jako přímý operand. Používá-li operace dva registry, je číslo druhého z nich předáno jako přímý operand.
| Operační znak (4) | Číslo registru (4) | Přímý operand (8) |
| Operační znak | Mnemotechnická zkratka | Význam |
|---|---|---|
| 0010 | LW rA,B | načti obsah paměťové buňky č.B do registru č.A |
| 0011 | SW B,rA | ulož obsah registru č.A do paměťové buňky č.B |
| 0100 | ADD rA,rB | sečti registr č.A s registrem č.B a výsledek ulož do registru č.A |
| 0101 | ASR rA | aritmetický posuv registru č.A vpravo |
Ukázkový program načte operandy z paměťových buněk 0×16 a 0×19, vypočte jejich aritmetický průměr a výsledek uloží do paměťové buňky 0×17.
Toto je program zapsaný v jazyce symbolických instrukcí:
kód v jazyce (žádný) - Zobrazit
Toto je celý program ve strojovém kódu, zapsaný přehledně:
kód v jazyce (žádný) - Zobrazit
Toto je celý program ve strojovém kódu, jak by byl uložený v paměti:
kód v jazyce (žádný) - Zobrazit