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