63.8.1. Podprogramy

Strojový kód PDP-8 má k dispozici instrukci JMS pro volání podprogramu, ale nemá instrukci pro návrat. Instrukce JMS funguje tak, že návratovou adresu ukládá do prostoru rutiny která je volána. Návrat z rutiny lze uskutečnit pomocí instrukce skoku JMP.

        …
        JMS ALFA
        …

/ Podprogram (subroutine) ALFA
ALFA,   0000    / ← zde se ukládá návratová adresa
        / …  tělo podprogramu
        JMP I ALFA / návrat z podprogramu skokem na návratovou adresu

Příklad 63.4. Příklad podprogramu pro PDP-8

    1             / File db/pdp8.code/subroutine.pal -*- mode:asm; -*-
    2
    3       0400          *0400
    4 00400 7000  START,  NOP /...
    5 00401 4206          JMS ALFA
    6 00402 7000          NOP /...
    7 00403 4206          JMS ALFA
    8 00404 7000          NOP /...
    9 00405 7402          HLT
   10
   11             / Podprogram (subroutine) ALFS
   12 00406 0000  ALFA,   0000            / místo pro uložení návratové adresy
   13 00407 7000          NOP             /... kód podprogramu
   14 00410 5606          JMP I ALFA      / návrat skokem na uloženou návratovou adresu
   15                     $

      No detected errors

Tento způsob realizace podprogramů neumožňuje rekurzi. Pokud bychom rekurzi potřebovali, musíme si zásobník návratových adres sami vytvořit a udržovat.

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 .