メモリ管理の改善
[YACASL2.git] / as / casl2lib / max.casl
1 ;;; 連続した複数のWORD値の中から、最大値を返す
2 ;;; 入力: GR1: WORD値を格納したアドレス GR2: 値の個数
3 ;;; 出力: GR0: 最大値
4 MAX     START
5         RPUSH
6         LD      GR0,0,GR1       ; MAX <- GR1アドレスの値
7         ST      GR0,MAX         ; ↓
8         LAD     GR3,0           ; GR3:インデックス 初期化
9 S1      CPA     GR3,GR2         ; ループ先頭。(GR2 = GR3)の場合、終了
10         JZE     RET             ; ↓
11         LAD     GR1,1,GR1       ; GR1 <- GR1 + 1
12         LD      GR0,0,GR1       ;
13         CPA     GR0,MAX         ;
14         JMI     S2              ;
15         JZE     S2              ;
16         ST      GR0,MAX         ;
17 S2      LAD     GR3,1,GR3       ;
18         JUMP    S1              ;
19 RET     LD      GR0,MAX         ;
20         RPOP
21         RET
22 MAX     DS      1               ; 最小値を格納
23         END