基本情報処理試験のフォルダを変更し、2018年春の分を追加
[YACASL2.git] / as / exam_fe / 2018_04 / getwd.casl
diff --git a/as/exam_fe/2018_04/getwd.casl b/as/exam_fe/2018_04/getwd.casl
new file mode 100644 (file)
index 0000000..47e69cd
--- /dev/null
@@ -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