X-Git-Url: http://j8takagi.net/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=as%2Fexam_fe%2F2018_04%2Fgetwd.casl;fp=as%2Fexam_fe%2F2018_04%2Fgetwd.casl;h=47e69cdce9d0bb28d10f982413bcecbfbba3c1b6;hb=bce17a4fab0759bd0818c44bdf3cd17edb388267;hp=0000000000000000000000000000000000000000;hpb=8b9bafa8e8927ad19968969f466c756f0aeac8a3;p=YACASL2.git diff --git a/as/exam_fe/2018_04/getwd.casl b/as/exam_fe/2018_04/getwd.casl new file mode 100644 index 0000000..47e69cd --- /dev/null +++ b/as/exam_fe/2018_04/getwd.casl @@ -0,0 +1,34 @@ +GETWD START + RPUSH + LD GR6,GR1 + LD GR7,GR2 + LD GR3,=-1 ; 数字列の処理状態フラグの初期化 + LAD GR6,-1,GR6 +LP LAD GR6,1,GR6 + LD GR4,0,GR6 ; 1文字の取出し + CPL GR4,='.' + JZE FIN + CPL GR4,=' ' + JNZ NUM + CALL SETWD + JUMP LP +NUM LD GR3,GR3 ; 数字列の処理中? + JZE LP + LD GR3,=0 ; 次の数字列の処理開始 + LD GR1,GR6 ; 数字列の先頭アドレスを退避 + JUMP LP +FIN CALL SETWD + LD GR2,=-1 + ST GR2,0,GR7 ; 数値の終わりを示す印を格納 + RPOP + RET +SETWD LD GR3,GR3 + JNZ FIN2 + LD GR2,GR6 + SUBL GR2,GR1 + CALL DTOB ; 数字列を数値に変換 + ST GR0,0,GR7 + LD GR3,=-1 ; 数字列の処理中状態を解除 + LAD GR7,1,GR7 +FIN2 RET + END