Mikroprocesory - Skripta
Níže je uveden pouze náhled materiálu. Kliknutím na tlačítko 'Stáhnout soubor' stáhnete kompletní formátovaný materiál ve formátu PDF.
Příklad instrukce nepřímého paměťového adresování:
ADD A, @[100]
Předpokládejme, že na adrese 100 je uložena hodnota 2000. Procesor si na adrese 100
přečte adresu operandu, tj. 2000. Následně uloží do registru A obsah paměťového místa
s adresou 2000. Skutečný operand, který se má uložit do registru A, tedy leží až na adrese 2000.
Na adrese 100 se nachází pouze ukazatel (“zprostředkovatel“), který určuje teprve skutečnou
adresu operandu.
3.1.10 Podprogramy a makra
Ve složitějších programech se často vyskytují části programu, které vykonávají
identickou nebo velmi podobnou činnost. Příkladem může být třeba výpočet funkce
x
e nebo
hledání zadaného podřetězce v řetězci znaků. Několikanásobné vkládání stejné sekvence
instrukcí by však ve většině případů vedlo pouze k prodlužování kódu programu a tedy plýtvání
operační pamětí či diskovou kapacitou. Ještě větší problémy nastanou, když je třeba provést
v opakujících se částech kódu opravu nebo změnu.
Rozumným řešením je vložit do programu sekvenci instrukcí, která se má provést na více
místech programu, pouze jednou. V místech programu, kde je třeba vykonat zmíněnou sekvenci
instrukcí nazývanou podprogram, se provede skok na adresu v operační paměti, kde se nachází
první instrukce sekvence (podprogramu). Po vykonání celé sekvence instrukcí (podprogramu)
Mikroprocesory
21
se provede návrat do místa, odkud se skákalo do podprogramu, a pokračuje se následující
instrukcí za instrukcí skoku do podprogramu (volání podprogramu). Pro skok do podprogramu,
se nepoužívají běžné instrukce skoků, ale mikroprocesory mají pro tento speciální typ instrukcí
označované jako instrukce volání podprogramu. Stejně tak návrat z podprogramu se neprovádí
instrukcí skoku, ale speciální instrukcí návratu z podprogramu (obvykle označované RTS –
ReTurn from Subrutine). Mikroprocesory obsahují dva typy instrukcí pro podporu práce
s podprogramy: volání podprogramu a návrat z podprogramu.