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 r
egistrov, 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.