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