X-Git-Url: http://j8takagi.net/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=as%2Fouti2.casl;fp=as%2Fouti2.casl;h=0000000000000000000000000000000000000000;hb=fb54b1c9d2fbc3d4a62c6b4d38ff68e9d3b25c26;hp=eddd6fbdf3001ffb5c9dc19d0ca81403aee48f00;hpb=b4e48008c95b35c692827326191698c22b06124f;p=YACASL2.git diff --git a/as/outi2.casl b/as/outi2.casl deleted file mode 100644 index eddd6fb..0000000 --- a/as/outi2.casl +++ /dev/null @@ -1,82 +0,0 @@ -; 数値を表示 -; 入力: -; GR1: 開始アドレス -; GR2: 語数 -OUTI START - RPUSH - ST GR1,TMP - LAD GR5,0 ; 語数のカウンタ - LAD GR6,0 ; 全体の桁数 -WLOOP CPL GR5,GR2 ; GR5がGR2より大きい場合は終了 - JZE IEND - JPL IEND - LD GR1,TMP ; GR1をリセット - ADDL GR1,GR5 ; GR1に(GR1+GR5)の内容をロード - LD GR1,0,GR1 - LAD GR5,1,GR5 ; GR5をインクリメント -ILOOP CPL GR1,TEN ; GR1が10未満の場合は次の語 - JMI WLOOP - CALL DIV10 ; GR1を10で割り、商をGR3、剰余をGR4に格納 - LAD GR4,ZCHAR,GR4 - ST GR4,STR,GR6 ; GR4を(STR+GR6)に格納 - LAD GR6,1,GR6 ; GR6をインクリメント - LD GR1,GR3 - JUMP ILOOP -INEXT ADDL GR1,ZCHAR - ST GR1,STR,GR6 - JUMP WLOOP -IEND LAD GR6,1,GR6 - LAD GR1,ZCHAR,GR1 - ST GR1,STR,GR6 - ST GR6,LEN - LAD GR1,STR - LD GR2,LEN - CALL REV - OUT STR,LEN - RPOP - RET -TEN DC 10 -ZCHAR DC '0' -TMP DS 1 -STR DS 10 -LEN DS 1 - END -;GR1を10で割ったときの商をGR3、剰余をGR4に格納 -DIV10 LD GR4,GR1 - LAD GR3,0 -DLOOP CPL GR4,TEN - JMI DFIN - SUBL GR4,TEN - LAD GR3,1,GR3 - JUMP DLOOP -DFIN RET - END -;アドレスがGR1、長さがGR2の文字列を逆順に並べ替える -;例: 12345 -> 54321 -REV START - PUSH 0,GR3 - PUSH 0,GR4 - PUSH 0,GR5 - LAD GR3,1 -RPU CPL GR2,GR3 - JMI RNEXT - LD GR4,GR1 - ADDL GR4,GR3 - LD GR4,-1,GR4 - PUSH 0,GR4 - LAD GR3,1,GR3 - JUMP RPU -RNEXT LAD GR3,1 -RPO CPL GR2,GR3 - JMI RFIN - POP GR4 - LD GR5,GR1 - ADDL GR5,GR3 - ST GR4,-1,GR5 - LAD GR3,1,GR3 - JUMP RPO -RFIN POP GR5 - POP GR4 - POP GR3 - RET - END