X-Git-Url: http://j8takagi.net/cgi-bin/gitweb.cgi?p=YACASL2.git;a=blobdiff_plain;f=as%2Fcasl2lib%2Fsrc%2Fminim.casl;fp=as%2Fcasl2lib%2Fsrc%2Fminim.casl;h=83d973f9d58b6449161b53a8a4c576aea3c156f7;hp=0000000000000000000000000000000000000000;hb=0b153de269505fe25552d3f1ee2a21dc049239c3;hpb=ae04e48ee62a95f6f77794d5611db189a19e70de diff --git a/as/casl2lib/src/minim.casl b/as/casl2lib/src/minim.casl new file mode 100644 index 0000000..83d973f --- /dev/null +++ b/as/casl2lib/src/minim.casl @@ -0,0 +1,23 @@ +;;; 複数のWORD値の中から、最小値を返す +;;; 入力: GR1: WORD値を格納したアドレス GR2: 値の個数 +;;; 出力: GR0: 最小値 +MINIM START + 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 ; 最小値を格納 + END