org 100h

start:
	; zapytaj o wprowadzenie liczby
	mov	ah, 9
	mov	dx, msg1
	int	21h

	; przygotuj rejestry do wczytania
	xor	ax, ax
	xor	cx, cx
	mov	[val], ax
	mov	bx, 10
	; wczytaj kolejne cyfry
	cinbeg:
		mov	ah, 1
		int	21h
		; przerwij wczytywania dla znaku enter
	cmp	al, 13
	je	cinend
		; dołącz wczytaną cyfrę do aktualnej wartości
		mov	cl, al
		sub	cl, 48
		mov	ax, [val]
		xor	dx, dx
		mul	bx
		add	ax, cx
		mov	[val], ax
	jmp	cinbeg
	
	cinend:
	; wypisz komunikat
	mov	ah, 9
	mov	dx, enter1
	int	21h

	mov	ah, 9
	mov	dx, msg2
	int	21h

	; wypisz liczbę
	; przygotuj rejestry
	mov	cx, 0
	mov	ax, [val]
	mov	bx, 10
	; w pętli przygotuj cyfry do wypisania odkładając na stos
	rcyfry:
		xor	dx, dx
		div	bx
		push	dx
		mov	[val],ax
		mov	ax,[val]
		inc	cx
		cmp	ax, 0
	ja	rcyfry
	; wypisz cyfry odłożone na stos
	mov	ah, 2
	wcyfry:
		pop	dx
		add	dx, 48
		int	21h
	loop wcyfry

koniec:
	mov	ax, 4C00h
	int	21h

msg1	db	"Podaj liczbe: $"
msg2	db	"Wczytana liczba to: $"
enter1	db	10,13,36
val	db	123	; przechowuje wynik do wypisania