63.8.4. Práce se zásobníkem

Odkazy:

Architektura PDP-8 nemá žádný hardwarový zásobník nebo instrukce které by při jeho realizaci v programu byly nápomocny. I přesto se ale v programu zásobník realizovat dá. Následující procedury realizují zásobníkové operace programově. V našem případě je zásobník oblast paměti od adresy 0377 směrem k nižším adresám. Zásobník tedy „roste“ směrem od vyšších k nižším adresám. Ukazatel zásobníku je v paměťové buňce označené SP a ukazuje vždy na poslední uloženou hodnotu. Proto se při inicializaci zásobníku nastavuje na adresu u jedničku vyšší než je paměť vyhražená pro zásobník.

Příklad 63.9. Operace se zásobníkem, PUSH a POP, pro PDP-8

    1             / File: db/pdp8.code/stack-push.pal -*- mode:asm; -*-
    2             / From: http://en.wikipedia.org/wiki/PDP-8#Software_stack
    3       0400          *400
    4 00400 0000  PUSH,   0               / Value in AC
    5 00401 3222          DCA DATA        / Temporary save value to push.
    6 00402 7240          CLA CMA         / SP--
    7 00403 1223          TAD SP          /+
    8 00404 3223          DCA SP          /+
    9 00405 1222          TAD DATA        / Load saved value to push
   10 00406 3623          DCA I SP        / Store value to Mem[SP]
   11 00407 5600          JMP I PUSH      /Return
   12
   13 00410 0000  POP,    0
   14 00411 7300          CLA CLL         /
   15 00412 1623          TAD I SP        / Load AC with Mem[SP]
   16 00413 2223          ISZ SP          / SP++
   17 00414 5610          JMP I POP       / Return, value in AC
   18
   19             / Stack initialization procedure
   20 00415 0000  STKINI, 0
   21 00416 7300          CLA CLL         / SP=STKBOT
   22 00417 1224          TAD STKBOT      /+
   23 00420 3223          DCA SP          /+
   24 00421 5615          JMP I STKINI    / Return
   25
   26 00422 0000  DATA,   0       / Temporary place for pushed value
   27 00423 0000  SP,     0       / Stack pointer.  Must be initialized before using stack!
   28 00424 0400  STKBOT, 400     / Bottom of the stack is 377.
   29             $

      No detected errors
Licence Creative Commons
Elektronika a počítače, jejímž autorem je Radek Hnilica, podléhá licenci Creative Commons Uveďte autora-Nevyužívejte dílo komerčně-Zachovejte licenci 3.0 Česká republika .