X-Git-Url: http://j8takagi.net/cgi-bin/gitweb.cgi?p=YACASL2.git;a=blobdiff_plain;f=as%2FFUNC%2Fhanoi.casl;h=da6b56f5629ef4ce45fbe15583aef21c964ceaf8;hp=6d294e73efb5c4bc88ceb908c06a3bcf5e8d03d7;hb=17d01b5658f2cdad6839ab55d27cf1ed4824309b;hpb=1b6f0b08946e6b03cad228ede15e7f066b3680b5 diff --git a/as/FUNC/hanoi.casl b/as/FUNC/hanoi.casl index 6d294e7..da6b56f 100644 --- a/as/FUNC/hanoi.casl +++ b/as/FUNC/hanoi.casl @@ -1,49 +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 +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