ZÁSOBNÍK

            Zásobník  je  kus  paměti  sloužící  k odkládání údajů. Hlavní
      použití  bude  asi  pro  uchovávání  návratových  adres při skoku do
      podprogramu.  Jestliže  je  někde  v programu instrukce CALL (volání
      podprogramu) provede procesor následující akce:

      1. Uloží  si  do  zásobníku  návratovou  adresu,  tedy adresu
         instrukce, která následuje po instrukci call.
      2. Skočí do podprogramu, tento provádí, až narazí na instrukci RET
      3. Vytáhne ze zásobníku návratovou adresu a skočí na ni, tedy
         pokračuje ve vykonávání za instrukcí call.

            Zásobník  je  paměť typu LIFO (Last In First Out), to znamená,
      že to, co tam dáte naposledy, vytáhnete jako první. Představte si to
      jako hromadu hliněných destiček. Tu, kterou položíte jako poslední na
      hromadu,  musíte  zvednout  jako  první.  V paměti je to ale tak, že
      destičky  přidáváte  dospodu  stohu. Takto vypadá zjednodušeně Stack
      Segment  (SS), tedy  část  paměti, kde se nachází zásobník. Na vršek
      hromady ukazuje SP (Stack Pointer).

      FFFFh
              X5  nejstarší položka zásobníku
              X4  druhá nejstarší
              X3
              X2
              X1   <---- Sem ukazuje SP
      0000

            Jestliže  něco  do zásobníku přidáte, vrazí se to dospodu a SP
      se SNÍŽÍ. Po vytažení ze zásobníku se SP opět ZVÝŠÍ.

            Pro  uložení  hodnoty na zásobník slouží instrukce PUSH. Jejím
      argumentem  je většinou šestnáctibitový registr. Takže třeba PUSH AX
      uloží  obsah  AX  do  zásobníku.  Opakem  PUSH je POP, která hodnotu
      vyjme,  takže  POP  AX vezme poslední hodnotu, která byla uložena na
      zásobník a uloží ji do AX. Takže finta pro prohození dvou registrů:

        PUSH AX      ;na vrsku zasobniku je AX
        PUSH BX      ;na vrsku zasobniku je BX
        POP  AX      ;BX z vrsku jsem presunul do AX
        POP  BX      ;vyjmutim BX se na vrsek dostalo AX a to dam do BX

            Zásobník  je  svině  a pokud s ním chcete kouzlit, buďte hodně
      opatrní, je to jedna z lehčích cest, jak si resetnout počítač.


            výheň