-;;; GR1のアドレスに格納されたGR2の個数の値の中で、最小値をGR0に格納する
+;;; 複数のWORD値の中から、最小値を返す
+;;; 入力: GR1: WORD値を格納したアドレス GR2: 値の個数
+;;; 出力: GR0: 最小値
MINIM START
- LD GR0,0,GR1
- ST GR0,MIN
- LAD GR3,0
-S1 CPA GR3,GR2
- JZE LRET
- LAD GR1,1,GR1
- LD GR0,0,GR1
- CPA GR0,MIN
- JPL S2
- JZE S2
- ST GR0,MIN
-S2 LAD GR3,1,GR3
- JUMP S1
-LRET LD GR0,MIN
+ RPUSH
+ LD GR0,0,GR1 ; MIN <- GR1アドレスの値
+ ST GR0,MIN ; ↓
+ LAD GR3,0 ; GR3:インデックス 初期化
+S1 CPA GR3,GR2 ; ループ先頭。(GR2 = GR3)の場合、終了
+ JZE RET ; ↓
+ LAD GR1,1,GR1 ; GR1 <- GR1 + 1
+ LD GR0,0,GR1 ;
+ CPA GR0,MIN ;
+ JPL S2 ;
+ JZE S2 ;
+ ST GR0,MIN ;
+S2 LAD GR3,1,GR3 ;
+ JUMP S1 ;
+RET LD GR0,MIN ;
+ RPOP
RET
-MIN DS 1
+MIN DS 1 ; 最小値を格納
END