X-Git-Url: http://j8takagi.net/cgi-bin/gitweb.cgi?p=YACASL2.git;a=blobdiff_plain;f=as%2Fmisc%2Fhanoi.casl;fp=as%2Fmisc%2Fhanoi.casl;h=da6b56f5629ef4ce45fbe15583aef21c964ceaf8;hp=0000000000000000000000000000000000000000;hb=58ee37be62a5e359d0f6eb603cc86b5692f74b90;hpb=85744703060a90c21ee325d3a692f80233bc281f diff --git a/as/misc/hanoi.casl b/as/misc/hanoi.casl new file mode 100644 index 0000000..da6b56f --- /dev/null +++ b/as/misc/hanoi.casl @@ -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