A | B | C | D | E | F | G | H | CH | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
Paradigma | imperativní |
---|---|
Vznik | 1949 |
Jazyk symbolických adres (zkratka JSA, anglicky assembly language), jazyk symbolických instrukcí nebo slangově assembler je v informatice nízkoúrovňový programovací jazyk, jehož základem jsou symbolické reprezentace jednotlivých strojových instrukcí a konstant potřebných pro vytvoření strojového kódu pro určitý procesor. Jazyk zpravidla vytváří výrobce pro konkrétní typ procesoru a jeho soubor instrukcí. Nejedná se tedy o jeden konkrétní jazyk, ale spíše o druh jazyka.
Jazyk je založen na náhradě kódů instrukcí mnemotechnickými zkratkami anglických slov, které vyjadřují, co daná strojová instrukce dělá. Dále jazyk umožňuje místo konkrétní číselné paměťové adresy používat symbolické adresy v podobě návěstí. Pro převod programu v JSA do strojového kódu se používá překladač, který se nazývá assembler. Tento název se v češtině přeneseně používá i pro samotný jazyk.
JSA umožňuje psát extrémně rychlé a paměťově úsporné programy. Jeho nevýhody jsou především závislost na konkrétním procesoru, tedy neumožňuje snadnou přenositelnost na jinou platformu, jeho kód je dlouhý a obtížně se hledají chyby. Proto se používá jen pro určité úlohy a ostatní části softwaru se vytvářejí ve vyšších programovacích jazycích.
Historie
JSA se poprvé objevily v 50. letech 20. století, kdy byly označovány jako druhá generace programovacích jazyků. Eliminovaly většinu chyb vznikajících při programování a časovou náročnost první generace programovacích jazyků tím, že odstranily nutnost pamatovat si číselné kódy jednotlivých strojových instrukcí, nutnost vypočítávat adresy skoků a umístění dat a zjednodušením (zkrácením) zápisu programu. Ve své době byly široce využívány pro všechny typy programování. Avšak v 80. letech (u mikropočítačů v 90. letech) byly nahrazeny programovacími jazyky s vyšší úrovní abstrakce, které přinášely vyšší produktivitu programování.
V současné době jsou JSA používány zejména pro přímé ovládání hardware, přístup ke specializovaným instrukcím procesoru nebo pro kritické úseky, kde je nutný vysoký výkon. Typicky se jedná o ovladače zařízení, nízkoúrovňové embedded systémy a operační systémy.
Pokročilé překladače JSA poskytují doplňující nástroje pro správu a vývoj kódu, řízení překladu programu, a podporu ladění. Mezi hlavní prvky patří také podpora maker, pak nazýváme takový překladač makro assembler.
Terminologie
Anglické slovo assembler znamená sestavovatel a označuje pouze překladač, tj. program, který sestavuje strojový kód. Programovací jazyk zpracovávaný takovým překladačem se označuje JSA, v angličtině se jmenuje assembly language.
Exaktní česká terminologie vychází z toho, že assembler označuje pouze překladač, zatímco programovací jazyk označuje výhradně jako jazyk symbolických adres (JSA), kterýžto výraz popisuje základní nabízenou výhodu – odstranění nutnosti ručně propočítávat veškeré adresy při překladu programu.
V praxi se ovšem velmi často pro označení JSA používá termín assembler (původem z anglického jazyka).
Charakteristika
JSA je programovací jazyk nejnižší úrovně a je závislý na strojovém kódu procesoru. Každá rodina procesorů má svůj vlastní odlišný JSA, protože ve strojových instrukcích různých rodin procesorů a možnosti rozdělování a adresování paměti bývají zásadní rozdíly. Každá firma vyrábějící procesory si definuje vlastní pravidla pro JSA svých procesorů, z kterých mohou (ale také nemusejí) vycházet nezávislí autoři a firmy.
Společným rysem drtivé většiny JSA je, že kódovou jednotkou je zde jeden řádek.
Program v JSA se skládá z
- překladových direktiv
- tyto direktivy ovlivňují způsob překladu (například pro jakou verzi procesoru se překládá, zda se ignorují velká a malá písmena, zda se generuje výpis a s jakým stránkováním, atp.). Rovněž označují začátek a konec kódových sekcí.
- strojových instrukcí
- symbolicky zapsané strojové instrukce jsou při překladu nahrazeny odpovídajícím strojovým kódem
- definic obsahu paměti
- můžeme inicializovat obsah paměti, nebo vyhradit v paměti místo pro proměnné
- návěstí
- návěstí umožňují pojmenovat místa v paměti počítače. Návěstí umístěné před instrukcí se používá jako pro definici bodu v programu, na který můžeme skočit, návěstí umístěné před definicí obsahu paměti se používá při odkazování na tuto paměť
- maker
- makra slouží pro nahrazení často používaných sekvencí instrukcí, umožňují zpřehlednit a zjednodušit kód vytvořením pseudoinstrukcí a formalizací často používaných konstrukcí
- podmínkových bloků
- podmínkové bloky dovolují generovat odlišný kód v závislosti na nastavení překladových symbolů, což může být užitečné například při ladění, nebo u kódu určeného pro více platforem
- definic překladových symbolů
- překladové symboly pomáhají při vytváření dobře strukturovaného kódu programu
Assembler zpravidla překládá zdrojový kód na několik průchodů. To je dané tím, že při prvním průchodu nejsou známé adresy a hodnoty definované za překládaným řádkem, ovšem i při dalších průchodech se mohou adresy posunout, protože délka strojové instrukce může záviset na hodnotách adres a konstant, které byly v prvním průchodu neznámé, přičemž změnou původně předpokládané délky instrukce se mohou adresy opět posunout…
Příklad instrukce
Příkladem jednoho řádku – jedné instrukce jazyka symbolických adres procesoru x86/i386 (např. Intel 80386), s komentářem:
; Do akumulátoru (l=low: dolní část) načti hodnotu 61 v hexadecimální soustavě
mov al, 61h
stejná instrukce ve strojovém kódu o délce 2 bajtů:
10110000 01100001
Instrukce říká: do registru „al“ vlož číslo 61 šestnáctkové soustavy (číslo 97 v desítkové soustavě). Za středníkem je komentář, který není součástí výsledného programu. Instrukce „mov“ (zkratka anglického move, „přesun“) znamená přiřazení hodnoty, „al“ je označení dolního bajtu („l“=low) registru pojmenovanáho akumulátor („a“), následuje čárkou oddělený parametr – zde vkládaná hodnota.
Ve strojovém kódu je první bajt (10110000) kódem instrukce mov al, druhý bajt (01100001) je parametr – číslo 61h.
Program „Ahoj světe!“
Hello world v MASM pro Windows:
.model flat, stdcall
option casemap :none
include windows.inc
include kernel32.inc
.data
message db "Ahoj svete!",13,10
.code
main proc
invoke GetStdHandle, STD_OUTPUT_HANDLE
invoke WriteConsoleA, eax, addr message, sizeof message, 0, 0
ret
main endp
end main
Hello world v NASM pro DOS:
jmp START
; Nastavit pozici kurzoru
; IN: dl = x, dh = y
curto:
xor bh,bh
mov ah,2
int 10h
ret
; Napsat barevne znaky, ale neposouvat kurzor
; IN: al = char, bl = color, cx = count
putchar:
xor bh,bh
mov ah,9
int 10h
ret
; Napsat znak a posunout kurzor
; IN: al = char
wrchar:
xor bh,bh
mov ah,0Eh
int 10h
ret
; Cist klavesu s cekanim
; OUT: al = ASCII code || 0, ah = scan code
inkey:
mov ah,0
int 16h
ret
; Napsat textovy retezec ukonceny binarni nulou
; IN: ds:si -> null_terminated_string
writez:
l_writez1:
lodsb
or al,al
jz l_writez9
xor bh,bh
mov ah,0Eh
int 10h
jmp l_writez1
l_writez9:
ret
msg1: db "Ahoj svete!", 13,10, 0
START:
push cs
pop ds
mov si,msg1
call writez
END:
mov ax,4C00h
int 21h
Související články
Externí odkazy
- Obrázky, zvuky či videa k tématu jazyk symbolických adres na Wikimedia Commons
- Bity do bytu - krásná učebnice assembleru procesoru Z80 od spisovatele, novináře, popularizátora počítačů Ladislava Zajíčka
- Učebnice assembleru x86 Archivováno 11. 8. 2009 na Wayback Machine.
- Naučte se assembler 8080, Z80, 6502 - učebnice assembleru osmibitových procesorů
Text je dostupný za podmienok Creative Commons Attribution/Share-Alike License 3.0 Unported; prípadne za ďalších podmienok. Podrobnejšie informácie nájdete na stránke Podmienky použitia.
Antény
Chemické zdroje elektriny
Chladenie v elektrotechnike
Elektrická sústava automobilu
Elektrická trakcia
Elektrické prístroje
Elektrické súčiastky
Elektrické spotrebiče
Elektrické stroje
Čítanie (elektrotechnika)
Činný výkon
Štatistická dynamika
Živý vodič
Admitancia
Antiparalelné zapojenie
Asynchrónny motor
Blúdivý prúd
Bočník (elektrotechnika)
Diak (polovodičový prvok)
Displej s kvapalnými kryštálmi
Elektrická inštalácia
Elektrická rezonancia
Elektrická sila
Elektrická vodivosť
Elektrické zariadenie
Elektrický obvod
Elektrický zvonec
Elektroenergetika
Elektromer
Elektrometer
Elektromobil
Elektromotor
Elektromotorické napätie
Elektrotechnický náučný slovník
Elektrotechnika
Elektrotechnológia
Fázor
Faradayova klietka
Frekvencia (fyzika)
Graetzov mostík
Impedancia
Indukčnosť
Induktancia
Istič
Izolácia (elektrotechnika)
Izolant
Jadro vodiča
Jednobran
Jednosmerný prúd
Joulovo teplo
Katóda
Koaxiálny kábel
Kompenzácia účinníka
Konduktometria
Konektor (elektrotechnika)
Korónový výboj
Lanko (elektrotechnika)
Leptanie
Logické hradlo
Magnetická susceptibilita
Magnetizácia (veličina)
Merný elektrický odpor
Mobilné zariadenie
Napájací zdroj
Napäťový chránič
Napäťový násobič
Nortonova veta
Odpínač
Odpojovač
OLED
Olovený akumulátor
Paralelné zapojenie
Peltierov článok
Plošná hustota elektrického prúdu
Poistka (elektrotechnika)
Posuvný prúd
Prúdový chránič
Prenosové médium
Prieletový klystrón
Primárny elektrochemický článok
Reaktancia
Rekuperácia (dopravný prostriedok)
Relé
Reproduktorová výhybka
Rezistancia
Rozhranie (interface)
Sériové zapojenie
Seebeckov jav
Sekundárny elektrochemický článok
Settopbox
Skrat
Sonar
Spínač
Spínaný zdroj
Straty v mikropásikových vedeniach
Striedavý prúd
Stupeň ochrany krytom
Svetelná výbojka
Symetrizačný člen
Technická normalizácia
Tepelné relé
Tepelne vodivostný detektor
Termočlánok
Théveninova veta
Transformátor
Transformátor s fázovou reguláciou
Trojfázová sústava
Tuhá fáza (elektronika)
Tyratrón
Usmerňovač (elektrotechnika)
Uzemnenie
Uzol (vodiče)
Vírivý prúd
Výbojka
Varistor
Ventilátor
Vodič (elektrotechnika)
Voltov stĺp
Vstavaný systém
Zásuvka (elektrotechnika)
Zdroj (elektrotechnika)
Zisk antény
Text je dostupný za podmienok Creative
Commons Attribution/Share-Alike License 3.0 Unported; prípadne za ďalších
podmienok.
Podrobnejšie informácie nájdete na stránke Podmienky
použitia.
www.astronomia.sk | www.biologia.sk | www.botanika.sk | www.dejiny.sk | www.economy.sk | www.elektrotechnika.sk | www.estetika.sk | www.farmakologia.sk | www.filozofia.sk | Fyzika | www.futurologia.sk | www.genetika.sk | www.chemia.sk | www.lingvistika.sk | www.politologia.sk | www.psychologia.sk | www.sexuologia.sk | www.sociologia.sk | www.veda.sk I www.zoologia.sk