Organizace a použití zásobníkové paměti mikrořadičů
Zásobník osmibitových mikrořadičů AVR
Nyní si stručně popišme implementaci zásobníku na osmibitových mikrořadičích AVR. Velikost zásobníku není prakticky nijak omezena, protože zásobník může růst až do takové velikosti, která zabere celou operační paměť, resp. maximálně 64 kB (zda je to ovšem korektní chování, již musí zajistit programátor). Ukazatel na vrchol zásobníku je uložen v dvojici osmibitových speciálních funkčních registrů umístěných v I/O prostoru (SPH, SPL), jejichž obsah je možné číst a dokonce i zapisovat – opět závisí jen na programátorovi, jestli přímou změnou ukazatele na vrchol zásobníku způsobí větší škodu než užitek.
Při volání procedury pomocí instrukce CALL (a některých dalších instrukcí využívajících relativní či nepřímé adresování) se na zásobník uloží buď dva bajty návratové adresy nebo bajty tři – některé mikrořadiče AVR totiž mohou mít až 8MB paměti programu, tj. adresní rozsah 0 až 222 (v případě paměti programu se adresují vždy šestnáctibitová slova, nikoli jednotlivé bajty).
U mikrořadičů AVR je nutné zásobník inicializovat. Inicializace spočívá v uložení nejvýše dostupné adresy paměti RAM pro uložení dat do registrů I/O SPL a SPH.
Příklad pro inicializaci zásobníku mikrořadiče AVR:
LDI R16, LOW (RAMEND)
OUT SPL , R16
LDI R16, HIGH (RAMEND)
OUT SPH , R16