X-Git-Url: http://j8takagi.net/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=as%2FFUNC%2Frev.casl;fp=as%2FFUNC%2Frev.casl;h=86743816878108adc21edd4dbfb4bad9e592b4e8;hb=fb893cf9b40d141a0d66f131dba3e0fef28549ab;hp=09d81d154bdcbc36e49d36d51ae5a215eb05b54a;hpb=3daa13d36f562d9c2ff93b4b68643fc88a446335;p=YACASL2.git diff --git a/as/FUNC/rev.casl b/as/FUNC/rev.casl index 09d81d1..8674381 100644 --- a/as/FUNC/rev.casl +++ b/as/FUNC/rev.casl @@ -1,25 +1,25 @@ ;; アドレスがGR1、長さがGR2の文字列を逆順に並べ替える -;; 例: 12345 => 54321、54321- => -12345 +;; 例: 12345 -> 54321、54321- -> -12345 REV START RPUSH LAD GR3,0 ; GR3の初期化 -RPU CPL GR3,GR2 ; ループ開始。(GR3 = GR2)の場合、ループ脱出 - JZE RNEXT ; ↓ +PU CPL GR3,GR2 ; ループ先頭。(GR3 = GR2)の場合、ループ脱出 + JZE NEXT ; ↓ LD GR4,GR1 ; GR4にGR1の値をコピー - ADDL GR4,GR3 ; GR4 <= GR4 + GR3 + ADDL GR4,GR3 ; GR4 <- GR4 + GR3 LD GR5,0,GR4 ; GR5にアドレスGR4の値を格納 PUSH 0,GR5 ; GR5をプッシュ - LAD GR3,1,GR3 ; GR3 <= GR3 + 1 - JUMP RPU ; ループ終了 -RNEXT LAD GR3,0 ; GR3の初期化 -RPO CPL GR3,GR2 ; ループ開始。(GR3 = GR2)の場合、ループ脱出 - JZE RFIN ; ↓ + LAD GR3,1,GR3 ; GR3 <- GR3 + 1 + JUMP PU ; ループ終端 +NEXT LAD GR3,0 ; GR3の初期化 +PO CPL GR3,GR2 ; ループ先頭。(GR3 = GR2)の場合、ループ脱出 + JZE FIN ; ↓ POP GR5 ; GR5にポップ LD GR4,GR1 ; GR4にGR1の値をコピー - ADDL GR4,GR3 ; GR4 <= GR4 + GR3 + ADDL GR4,GR3 ; GR4 <- GR4 + GR3 ST GR5,0,GR4 ; アドレスGR4にGR5の値を格納 - LAD GR3,1,GR3 ; GR3 <= GR3 + 1 - JUMP RPO ; ループ終了 -RFIN RPOP + LAD GR3,1,GR3 ; GR3 <- GR3 + 1 + JUMP PO ; ループ終端 +FIN RPOP RET END