Você está na página 1de 2

section .

data
;se for preciso declarar variaveis constantes

.stack
dw 128 dup(0)

section .text
global_main:

_main:

; Origem : Destino : Auxiliar : contador


; ax : bx : cx : dx

mov dx,3
mov ax, 65
mov bx,67
mov cx,66
push ax
;armazena no espao de memria ax
push bx
;armazena no espao de memria bx
push cx
;armazena no espao de memria bx
push dx
;armazena no espao de memria dx
call t_hanoi
;chama a t_hanoi

t_hanoi:

cmp dx,1
;compara dx = 1
jne hdif
;vai para hdif se no igual, se for igual chama a funo abaixo
call imprime
;mover origem para destino
jmp hfim
;jump hfim

hdif:

push ax
push bx
push cx
push dx

push bx
;chama bx
mov bx,cx
;coloca 66 em bx
pop cx
;traga o valor de cx

dec dx
;decrementa dx = 2

call t_hanoi
call imprime
;mover origem para destino
push ax
push bx
push cx
push dx

push ax
mov ax,cx
pop cx

dec dx
;decrementa dx

call t_hanoi

hfim:

pop dx
pop cx
pop bx
pop ax
ret

imprime:

push ax
push dx
mov dx,ax
mov ah,2
int 0x80

mov dl,bl
int 0x80
mov dl,cl
int 0x80

mov dl,10
int 0x80
mov dl,13
int 0x80

pop dx
pop ax
ret
jmp main

mov ax, 4c00h


int 0x80

end main

Você também pode gostar