U E D R , A S I H C RSS

Hanoi Problem/영동

  • ... ...
  • push pop , push pop .

~cpp 
;하 탑
.model small
.stack 100h

.data
message1 db "have move ", '$'
message2 db "th disk from ", '$'
message3 db "to ", '$'
n dw 5			;disk 
from dw 1		; (1)
by dw 2			; (2)
to dw 3			; (3)	

.code
extrn Crlf:proc
extrn Writeint:proc

main proc
	mov ax, @data
	mov ds, ax
	mov bx, 10	;Writeint 10 

	call Move	;Move함
			;Move(from, to, by)
	mov ax, 4C00h	;
	int 21h
main endp

Move proc		;Move ( )
	cmp n, 0	;n=0
	jz endmove	;Move   
	
	push n		;n  
	dec n		;n-1

	push from	;from  
	push by		;by  
	push to		;to  
	
	mov ax, by	;by to  .(ax temp )
	mov si, to	;    
	mov by, si	;si 
	mov to, ax

	call Move	;Move(n-1, from, by, to)
			;(by to  )
	pop to		; to, by, from, n  
	pop by		;   
	pop from		
	pop n
	
	mov ah, 9	;message1 
	mov dx, offset message1
	int 21h
	
	mov ax, n	;   
	call Writeint
	
	mov dx, offset message2
	mov ah, 9	;message2 
	int 21h

	mov ax, from	;  
	call Writeint
	call Space	;한 

	mov dx, offset message3
	mov ah, 9	;message3 
	int 21h

	mov ax, to	; 
	call Writeint

	call Crlf	;

	push n		;n   
	dec n		;n-1

	push from	;from, by, to   
	push by
	push to

	mov ax, from	;from by (ax temp)
	mov si, by	;   
	mov from, si	;si  
	mov by, ax
	
	call Move	;Move(by, to, from) 호 
	
	pop to		;to, by, from, n  
	pop by
	pop from	
	pop n

	endmove:	
	ret		; 
Move endp

Space proc		;
	mov dl, " "
	mov ah, 2
	int 21h		; 
	ret
Space endp

end main		; 
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:23:21
Processing time 0.0138 sec