Übersicht > Türme von Hanoi > asm-i86-DOS

Die Türme von Hanoi in asm-i86-DOS

;***************************************************************;
;*  Die Türme von Hanoi                           Lizenz: GPL  *;
;*                                                             *;
;*  (c) 2002  Roland Illig <1illig@informatik.uni-hamburg.de>  *;
;***************************************************************;

.model small, pascal

.stack 0400h

.code
start:
	mov	ax, @data
	mov	ds, ax
	mov	ax, 'a'
	push	ax
	inc	ax
	push	ax
	inc	ax
	push	ax
	mov	ax, 5
	push	ax
	call	bewege
	mov	ax, 4C00h
	int	21h

bewege proc
; Bewegt n Scheiben von Turm a nach Turm c und benutzt als Zwi-
; schenspeicher Turm b.
	arg a: Word, b: Word, c: Word, n: Word
	sub	n, 1
	jng	bewege_1
	push	a
	push	c
	push	b
	push	n
	call	bewege

bewege_1:
	mov	al, byte ptr a
	mov	msg_a, al
	mov	al, byte ptr c
	mov	msg_c, al

	mov	ah, 40h
	mov	bx, 1
	mov	cx, msg_len
	mov	dx, offset msg
	int	21h

	cmp	n, 0
	jng	bewege_2
	push	b
	push	a
	push	c
	push	n
	call	bewege

bewege_2:
      ret
bewege endp

.data
msg	db "Lege die oberste Scheibe von Turm "
msg_a	db "a"
	db " auf Turm "
msg_c	db "c"
	db ".", 13, 10
msg_len equ $-msg

end start