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.
Instrukce volání podprogramu se umisťuje na místo v hlavním programu, ze kterého je
třeba provést odskok do podprogramu. Instrukce volání podprogramu zajistí:
1. Do zásobníku se uloží návratová adresa, tj. adresa instrukce bezprostředně
následující za instrukcí volání podprogramu.
2. Naplní programový čítač adresou první instrukcí podprogramu. Tím se provede
vlastní skok do podprogramu.
Poslední vykonanou instrukcí podprogramu musí být instrukce návrat z podprogramu,
která vyjme návratovou adresu ze zásobníku a uloží ji do programového čítače. Tím se vlastně
provede skok na adresu instrukce, která následuje bezprostředně za instrukcí volání
podprogramu.
Situace při volání podprogramu bývá obvykle složitější, než bylo výše uvedeno, protože
podprogramům bývají předávány parametry a podprogramy vrací návratovou hodnotu.
Parametry i návratovou hodnotu lze předávat buď pomocí vnitřních registrů procesoru, nebo
pomocí zásobníku. Registry jsou vhodné pro předávání jednoduchých proměnných, zatímco
pro pole a datové struktury je třeba použít zásobník. Použití registrů urychluje celý proces
volání resp. návratu z podprogramu. Proto bývá výhodnější nepoužívat jako parametry či
návratovou hodnotu velké datové struktury, ale pouze ukazatele na ně (jejich adresy).
Existují případy, kdy je třeba skutečně opakovaně vkládat určitou sekvenci instrukcí do
programu a využití podprogramu není vhodné např. z důvodu velké režie potřebné na volání a
návrat z podprogramu. Aby se zkrátil zápis programu v jazyce symbolických adres, nadefinuje
se opakující se sekvence instrukcí jako tzv. makro. V místech programu, kde je třeba příslušnou
sekvenci vložit, uvede se pouze jedna pseudoinstrukce, která při překladu zajistí tzv. rozvoj
makra, tj. vložení skutečné sekvence instrukcí.