CASLファイルのフォルダを変更
[YACASL2.git] / as / misc / hanoi.casl
diff --git a/as/misc/hanoi.casl b/as/misc/hanoi.casl
new file mode 100644 (file)
index 0000000..da6b56f
--- /dev/null
@@ -0,0 +1,46 @@
+; ハノイの塔を解くプログラム
+MAIN    START
+        LD      GR0,N
+        LD      GR1,A
+        LD      GR2,B
+        LD      GR3,C
+        CALL    HANOI
+        RET
+HANOI   CPA     GR0,=1
+        JZE     DISP
+        SUBA    GR0,=1
+        PUSH    0,GR2
+        PUSH    0,GR3
+        POP     GR2
+        POP     GR3
+        CALL    HANOI
+        PUSH    0,GR2
+        PUSH    0,GR3
+        POP     GR2
+        POP     GR3
+        CALL    DISP
+        PUSH    0,GR1
+        PUSH    0,GR2
+        POP     GR1
+        POP     GR2
+        CALL    HANOI
+        PUSH    0,GR1
+        PUSH    0,GR2
+        POP     GR1
+        POP     GR2
+        ADDA    GR0,=1
+        RET
+DISP    ST      GR1,MSG1
+        ST      GR3,MSG2
+        OUT     MSG,LNG
+        RET
+N       DC      3               ; 輪の総数
+LNG     DC      11              ; メッセージの長さ
+A       DC      'A'
+B       DC      'B'
+C       DC      'C'
+MSG     DC      'from '
+MSG1    DS      1
+        DC      ' to '
+MSG2    DS      1
+        END