;汇编实验四 HANOI塔谜题
;采用栈传递参数,n表示搬动个数。第一次调用时栈的情况为: (输入的数),one,two,three,IP,ax,dx,bp
;在子程序hanoi中[bp+14]每次和1比较,相等则跳出
;不相等则把[bp+14]中的数减1,再进行递归。
;子函数AscToBin用来把字符转换成数字保存在 Bin中,在增加盘子的移动数目时用了BCD码对chNum中的最后一个字符进行加一
;并用指令AAA把它转换成0~9之间,如果高位ha为1的话(表示有进位),则dec si,继续操作
;
;
.model small,stdcall
.stack 64
.data
Bin dw 0 ;保存用户输入的大小
chNum db 10 dup('0'),'$' ;保存移动盘子的个数
one dw 'A' ;符号
two dw 'B'
three dw 'C'
strShow db '->$'
chLine db 0dh,0ah,'$' ;换行
prompt db 'Please input the plate num(1~99): $' ;提示
chTimes1 db 0dh,0ah,'I have moved $'
chTimes2 db ' times',0dh,0ah,'$'
InputList LABEL BYTE ;用户输入的大小&