Zásobník procesoru 8086

Zásobník slouží k dočasnému "odkládání" dat, které si do něj uschováme a později vybereme.

Procesor 8086 nám poskytuje zásobník typu LIFO (last in, first out), což znamená, že při vybírání ze zásobníku dostaneme jako první tu položku, kterou jsme tam vložili jako poslední.

Zásobník u 8086 pracuje se slovy - do zásobníku ukládá a vybírá vždy dvoubytové hodnoty.

Zásobník se adresuje pomocí segmentového registru SS. Zvláštností je, že vrchol zásobníku určený pomocí SS:SP roste směrem dolů.

Procesor 8086 nemá žádný prostředek, kterým by hlídal maximální naplnění zásobníku, to si musí ohlídat sám programátor.

Zásobník je také využíván při přerušení (INT) a při volání podprogramu pro uložení návratové adresy.

Práce se zásobníkem

PUSH zdroj - uloží do zásobníku obsah zdroje (registr, paměť)
POP cíl - vybere ze zásobníku a uloží do cíle (registr, paměť)
PUSHF - do zásobníku uloží obsah registru F (příznakový registr)
POPF - hodnotou ze zásobníku obsaď registr F
Další instrukce které zásobník ovlivňují jsou RET, IRET, CALL.


Ukládání na zásobník pomocí instrukce PUSH provede tyto akce:
  1. sníží obsah SP o 2
  2. na adresu SS:SP uloží obsah 16bitového operandu
Vybíraní dat ze zásobníku instrukcí POP provede tyto akce:
  1. naplní 16bitový operand obsahem adresy SS:SP (vrchol zásobníku)
  2. zvýší obsah SP o 2

Ilustrační příklad:

Zásobník procesoru 8086

Na tomto obrázku je vidět zásobník, jenž má dno na adrese SS:0B1C. Na zásobníku je v tuto chvíli uloženo 5 dvoubytových čísel, byly uloženy v tomto pořadí: 12AC, FF27, 16DA, FCE0 a jako poslední bylo uloženo číslo AC17. Vrchol zásobníku, který je určen pomocí SS:SP, ukazuje v tuto chvíli na poslední vložené číslo a tedy na adresu SS:0B12.


coded by Xagatron, powered by XRS engine