6d294e73efb5c4bc88ceb908c06a3bcf5e8d03d7
[YACASL2.git] / as / FUNC / hanoi.casl
1 ; ハノイの塔を解くプログラム
2 MAIN   START
3        LD      GR0,N
4        LD      GR1,A
5        LD      GR2,B
6        LD      GR3,C
7        CALL    HANOI
8        RET
9
10 HANOI  CPA     GR0,=1
11        JZE     DISP
12        SUBA    GR0,=1
13        PUSH    0,GR2
14        PUSH    0,GR3
15        POP     GR2
16        POP     GR3
17        CALL    HANOI
18        PUSH    0,GR2
19        PUSH    0,GR3
20        POP     GR2
21        POP     GR3
22        CALL    DISP
23        PUSH    0,GR1
24        PUSH    0,GR2
25        POP     GR1
26        POP     GR2
27        CALL    HANOI
28        PUSH    0,GR1
29        PUSH    0,GR2
30        POP     GR1
31        POP     GR2
32        ADDA    GR0,=1
33        RET
34
35 DISP   ST      GR1,MSG1
36        ST      GR3,MSG2
37        OUT     MSG,LNG
38        RET
39
40 N      DC      3        ;輪の総数
41 LNG    DC      11       ;メッセージの長さ
42 A      DC      'A'
43 B      DC      'B'
44 C      DC      'C'
45 MSG    DC      'from '
46 MSG1   DS      1
47        DC      ' to '
48 MSG2   DS      1
49        END