汇编汉诺塔
汇编 汉诺塔
2023-09-14 08:57:54 时间
;递归时注意:在每一层的递归中,保证ebp基址指针的只是一样的(如果你使用了它)
Hanoi Proc near32
push ebp
mov ebp, esp
mov ecx, [ebp+20];得到当前剩余的砖块的数目
jecxz Finish
;完成n-1块从a柱子借助c柱子移向b柱子
dec ecx
push ecx
pushd [ebp+16]; a
pushd [ebp+8]; c
pushd [ebp+12]; b
call Hanoi
add esp, 16;移除参数 a, b, c, 和砖块数目
;完成a柱子上的最后一块移向c柱子
mov al, [ebp+16];得到a柱子的编号
mov result, al
mov al, -
mov result+1, al
mov al,
mov result+2, al
mov al, [ebp+8];得到c柱子的编号
mov result+3, al
output result;输出移动结果
;完成n-1块从b柱子借助a柱子移向c柱子
mov ecx, [ebp+20]
dec ecx
push ecx; 得到剩下的盘子
push [ebp+12]; b
push [ebp+8]; c
push [ebp+16]; a
call Hanoi
add esp, 16;移除参数
Finish:
pop ebp;还原ebp指针
ret ;
Hanoi Endp
_start:
output string1
input strNum, 10
atod strNum
push eax;初始化操作
pushd a
pushd b
pushd c
call Hanoi
invoke ExitProcess, 0
public _start
end
C语言典型例题四——斐波那契数列 Fibonacci(斐波那契)数列 求斐波那契数列的前40个数。这个数列有个特点:第1,2两个数为1,1。从第三个数开始,该数是其前面两个数之合。即该数列为1,1,2,3,5,8,13……。
C语言典型例题四——斐波那契数列 Fibonacci(斐波那契)数列 求斐波那契数列的前40个数。这个数列有个特点:第1,2两个数为1,1。从第三个数开始,该数是其前面两个数之合。即该数列为1,1,2,3,5,8,13……。