MAIN   START
       LAD    GR1,DATA
       CALL   BUS          ;副プログラムの呼び出し
       RET
DATA   DC     MONEY        ;+0
       DC     3            ;+1 乗車停留所番号
       DC     1            ;+2 下車停留所番号
TOTAL  DS     1            ;+3 料金の合計
MONEY  DC     100,120,150,130,100,0
       END
BUS    START               ;バスの料金 [b06.cas]
       RPUSH               ;汎用レジスタの保存
       LAD    GR0,0        ;合計料金
       LD     GR2,0,GR1    ;料金のアドレス
       LD     GR3,1,GR1    ;乗車停留所番号 [  a  ]
       LD     GR4,2,GR1    ;下車停留所番号
       ADDL   GR2,GR3      ;乗車位置のアドレス
LB1    LD     GR5,0,GR2    ;料金の取り出し
       ADDA   GR0,GR5      ;金額の合計
       LAD    GR2,1,GR2    ;料金のアドレスのアップ
       LAD    GR3,1,GR3    ;位置の加算
       LD     GR5,0,GR2    ;次の位置の料金
       JZE    LAST         ;最後の料金? [  b  ]
LB2    CPA    GR3,GR4      ;下車停留所番号と比較
       JZE    FIN
       JUMP   LB1
LAST   LD     GR2,0,GR1    ;最初の料金 [  c  ]
       LAD    GR3,0        ;位置の更新
       JUMP   LB2
FIN    ST     GR0,3,GR1    ;合計料金の格納
       RPOP                ;汎用レジスタの復元
       RET
       END