ZÁSOBNÍK

Procesor 8086 používa zásobník typu LIFO (Last In First Out). V preklade to znamená, že čo sa uloží ako posledné, to sa ako prvé vyberie. Pre zásobník sa používa operačná pamäť RAM. Adresa segmentu v ktorom je uložený zásobník sa nachádza v registri SS (Stack Segment). Register SP (Stack Pointer) tvorí offset adresy zásobníka a ukazuje na jeho vrchol. Je to miesto kam bola uložená posledná hodnota.

SS : SP

HODNOTA

64DC:270A

63A3

64DC:2708

025E

64DC:2706

64A1

64DC:2704

0044 <- Toto je vrchol zásobníku (posledná uložená hodnota)

Pred uložením ďalšiej 16-bitovej hodnoty na zásobník sa hodnota registra SP zmenší o 2, po vybratí hodnoty zo zásobníka sa zase zväčší o 2. Procesor používa zásobník pre uloženie návratovej adresy pri volaní podprogramu inštrukciou CALL a tiež pri prerušení. Programátory používajú zásobník pre uchovanie obsahu registrov, pre predávanie parametrov pri volaní podprogramu (takéto predávanie parametrov využívajú hlavne jazyky ako C, PASCAL a pod.).

Pre uloženie 16-bitovej hodnoty na zásobník sa používa inštrukcia PUSH N, kde N je register AX, BX, CX, DX, DI, SI... Naopak pre vybratie tejto hodnoty použijeme inštrukciu POP N, kde N je zase jeden z registrov.