BPC-MIC04 - Adresovací módy, podprogramy
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.
1. Uloží do zásobníku návratovou adresu, tj. adresu
instrukce bezprostředně následující za instrukcí
volání podprogramu.
2. Naplní programový čítač adresou první instrukce
podprogramu.
Instrukce návrat z podprogramu
• Poslední instrukcí, kterou podprogram vykoná,
musí být instrukce návrat z podprogramu (RTS,
RET), která:
1. Vyzvedne z vrcholu zásobníku návratovou adresu
a dočasně ji umístí do pomocného registru.
2. Zvýší se hodnota SP o počet bytů návratové
adresy.
• „Odstraní“ se návratová adresa ze zásobníku.
3. Vloží vyzvednutou návratovou adresu do
programového čítače.
Příklad podprogramu
pole:
DS.B
10
max:
DS.B
1
LDHX #pole
; Ulozeni parametru pro podprog. do HX
JSR
FindMax
; Volani podprogramu
STA
max
….
FindMax:
LDA
,X
; Zacatek pdprogramu
….
; Nejvetsi prvek ulozen v A
RTS
Funkce jazyka C
int f1(int x, int y) // x, y předávané parametry
{
int z;
// Lokální proměnná
……
return(z);
// Návratová hodnota
}
Předávání parametrů
podprogramům
• Prostřednictvím registrů.
– Před voláním jsou naplněny příslušné registry
procesoru hodnotami parametrů.
– Rychlejší než přes zásobník.
– Do registrů se však nevejde datová struktura nebo
pole.
Předávání parametrů
podprogramům
• Přes zásobník
– Před voláním se uloží hodnoty parametrů do
zásobníku.
– Ukládání dat na zásobník je pomalé.
– Lze však uložit např. datovou strukturu, pole …
Předávání parametrů
podprogramům
• Kombinace obou způsobů.
• Co se vejde do registrů je předáno přes
registry.
• Zbytek přes zásobník.
Předávání návratové hodnoty
• Prostřednictvím registru.
• Přes zásobník.
• Výhody a nevýhody stejné jako u předávání
parametrů.
Použití zásobníku pro uložení
dočasných proměnných
a:
ds.w
1
b:
ds.w
1
y:
ds.w
1
lda
b+1
add
a+1
psha
lda
b
adc
a
psha
pulh
pulx
sthx
y
Makra
• Existují speciální případy, kdy je třeba
opakovaně vkládat určitou sekvenci instrukcí
do programu, ale použití podprogramu není
vhodné.
– Krátká sekvence instrukcí.
– Velké režie potřebné na volání a návrat