REI58  START
       LD     GR1,KOSUU    ;データの数を入れる
       LAD    GR2,DATA     ; DATAの番地を入れる
       LAD    GR3,MAX      ; MAXの番地を入れる
       CALL   SAIDAI
       RET
DATA   DC     10,15,8,20,7
KOSUU  DC     5
MAX    DS     1
       END
SAIDAI START
       PUSH   0,GR1        ;サブルーチンで使う
       PUSH   0,GR2        ; レジスタをスタック領域
       PUSH   0,GR4        ; に待避する
       PUSH   0,GR5
       LAD    GR4,0        ;カウンタを0にする
       LAD    GR1,-1,GR1   ;データの数をデクリメント
       LD     GR5,0,GR2    ; DATAの先頭を読み込む
       ST     GR5,0,GR3    ;暫定最大値を保存
LOOP   LAD    GR2,1,GR2    ;アドレスをインクリメント
       LAD    GR4,1,GR4    ;カウンタをインクリメント
       LD     GR5,0,GR2    ; GR5に次の値を読み込む
       CPA    GR5,0,GR3    ; GR5と最大値の比較
       JMI    SKIP         ; GR5が小さいときSKIPへ
       ST     GR5,0,GR3    ; GR5をMAXに保存
SKIP   CPA    GR1,GR4      ;データ数とカウンタの比較
       JPL    LOOP         ;データ数が多いときLOOP
       POP    GR5          ;待避したレジスタの内容を
       POP    GR4          ; 戻す
       POP    GR2
       POP    GR1
       RET
       END