root/as/misc/hanoi.casl

/* [<][>][^][v][top][bottom][index][help] */
; ハノイの塔を解くプログラム
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

/* [<][>][^][v][top][bottom][index][help] */