Procesor 8086 pouziva zasobnik typu LIFO (Last In First Out). V preklade to znamena, ze co sa ulozi ako posledne, to sa ako prve vyberie. Pre zasobnik sa pouziva operacna pamat RAM. Adresa segmentu v ktorom je ulozeny zasobnik sa nachadza v registri SS (Stack Segment). Register SP (Stack Pointer) tvori offset adresy zasobnika a ukazuje na jeho vrchol
. Je to miesto kam bola ulozena posledna hodnota.
SS : SP |
HODNOTA |
64DC:270A |
63A3 |
64DC:2708 |
025E |
64DC:2706 |
64A1 |
64DC:2704 |
0044 <- Toto je vrchol zasobniku (posledna ulozena hodnota) |
Pred ulozenim dalsiej 16-bitovej hodnoty na zasobnik sa hodnota registra SP zmensi o 2, po vybrati hodnoty zo zasobnika sa zase zvacsi o 2. Procesor pouziva zasobnik pre ulozenie navratovej adresy pri volani podprogramu instrukciou CALL a tiez pri preruseni. Programatory pouzivaju zasobnik pre uchovanie obsahu r
egistrov, pre predavanie parametrov pri volani podprogramu (taketo predavanie parametrov vyuzivaju hlavne jazyky ako C, PASCAL a pod.).Pre ulozenie 16-bitovej hodnoty na zasobnik sa pouziva instrukcia PUSH N, kde N je register AX, BX, CX, DX, DI, SI... Naopak pre vybratie tejto hodnoty pouzijeme instrukciu POP N, kde N je zase jeden z registrov.