X-Git-Url: http://j8takagi.net/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=as%2Fcasl2lib%2Fminim.casl;h=83d973f9d58b6449161b53a8a4c576aea3c156f7;hb=9110bf71c8d4f1d1da5327f3afc0d0b1bdab8c02;hp=f1198da3d66e2a145e2222449f3cd54c2527e3ff;hpb=58ee37be62a5e359d0f6eb603cc86b5692f74b90;p=YACASL2.git diff --git a/as/casl2lib/minim.casl b/as/casl2lib/minim.casl index f1198da..83d973f 100644 --- a/as/casl2lib/minim.casl +++ b/as/casl2lib/minim.casl @@ -1,19 +1,23 @@ -;;; 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