global _hanoi, _discos
section .data
mystring db 'El disco %d se mueve de la Torre %d a la Torre %d' ,10,0
_discos dd 0
section .text
extern _printf
_hanoi
mov edx, [_discos]
push dword 1
push dword 2
push dword 3
push edx
push ebp
mov ebp, esp
mov eax, [ebp+16]
mov ebx, [ebp+12]
mov ecx, [ebp+8]
call HANOI2
call MOVE3
mov ebp,esp
pop ebp
add esp, byte 16
ret
HANOI2:
push eax
push ebx
push ecx
push edx
push ebp
mov ebp,esp
cmp edx, 1
JE MOVE
dec edx
mov ebx, [ebp+8]
mov ecx, [ebp+12]
call HANOI2
call MOVE2
call MOVE3
mov eax, [ebp+16] ; no entiendo
mov ebx, [ebp+12] ; qué
mov ecx, [ebp+8] ; hacen
mov edx, [ebp+4] ; éstas líneas
dec edx
mov eax, [ebp+8]
mov ecx, [ebp+16]
pop ebp
add esp, byte 16
call HANOI2
ret
MOVE:
pop ebp
add esp, byte 16
ret
MOVE2:
call MOVE3
mov eax, [ebp+16]
mov ebx, [ebp+12]
mov ecx, [ebp+8]
mov edx, [ebp+4]
ret
MOVE3:
push ebx
push eax
push edx
push mystring
call _printf
add esp, byte 16
ret