Witam mam program w asemeblerze, konkretnie w TASMie.
Problem tkwi w tym, że nie potrafię wyświetlić wczytanych znaków.
Cały czas wyświetla mi ten sam wynik:2340.

Oto kod:

 ;	An= M1*An-1 + M2*An-2 +M3

.model tiny
.stack
.data
	pod1	db "Wartosc M1 :", "$"
	pod2	db "Wartosc M2 :", "$"
	pod3	db "Wartosc M3 :", "$"
	podn	db "Liczba n   :", "$"
	wyp		db "Podane     :", "$"
	m1		dw ?
	m2		dw ?
	m3		dw ?
	liczN	dw ?
	Tab		dw 25 dup(?)
	er		db "Error!", "$"
	bufor 	db 20
			db 0
			db 22 dup('$')
	pisz_bufor	db 20
				db 0
				db 22 dup('$')
	liczba	dw ?
.code

;org 100h
main proc
	mov   ax, SEG DGROUP
    mov   ds, ax
	
	lea   dx, pod1
	mov   ah, 9
	int   21h
	
	call  pobierz
	mov [m1], ax

	call newline
	
	lea   dx, pod2
	mov   ah, 9
	int   21h
	
	call  pobierz
	mov [m2], ax

	call newline
	
	lea   dx, pod3
	mov   ah, 9
	int   21h
	
	call  pobierz
	mov [m3], ax

	call newline
	
	lea   dx, podn
	mov   ah, 9
	int   21h
	
	call  pobierz
	mov [liczN], ax
	
;	An= M1*An-1 + M2*An-2 +M3
	mov 	ax, 	[m3]
	mov 	[Tab+1], ax
	
	mov 	ax, [Tab+1]
	mov 	cx, [m3]
	imul 	cx
	add 	ax, [m3]
	mov 	[Tab+2], ax
	
	
	
	
	lea  	dx, wyp
	mov  	ah, 9
	int  	21h
	
	call 	wypisz
	
	call 	exit
pobierz:	
	mov	ah, 0ah	
	lea dx, bufor
	int 21h
	
	xor bx, bx
	xor si, si  ;;;
l_petla:
	call pob_z
	
	;cmp al, 10;lf
	;je l_juz
	;cmp al, 13;cr
	;je l_juz
	
	;cmp al, 32;spc
	;je l_petla
	
	;cmp al, '$'
	
	
	cmp al, '0'
	jb l_blad
	cmp al, '9'
	ja l_blad
	
	and al, 0fh
	mov cl, al
	mov ax, bx
	shl bx, 1
	jc l_blad
	
	shl ax, 1
	jc l_blad
	shl ax, 1
	jc l_blad
	shl ax, 1
	jc l_blad
	
	add bx, ax
	jc l_blad
	
	add bl, cl
	adc bh, 0
	jc l_blad
	
	je l_juz		;;;;
	
	jmp short l_petla
l_juz:
	;wynik w AX
	mov [liczba], ax		;;;
	;mov ah, 0eh
	;int 10h					; znak z AL
	call newline
	ret
	
pob_z:
	mov al, [bufor+2]
	;inc si
	ret
	
l_blad:
	mov   ax,seg er
	mov   ds,ax
	mov   ah,09				
	lea   dx,er
	int   21h
	call  exit
	
wypisz:
	
	
	;mov ax, [liczba]
	xor si, si
	mov cx, 10
_pisz_l_petla:
	xor dx, dx
	div cx
	or dl, '0'
	mov [pisz_bufor+si], dl
	inc si
	test ax, ax
	jnz _pisz_l_petla
	
_pisz_l_wypis:
	mov al, [pisz_bufor+si-1]
	call _pisz_z
	dec si
	jnz _pisz_l_wypis
	ret
	
_pisz_z:
	mov ah, 0eh
	int 10h
	ret

newline:
		mov   dx, 0Ah			; nowa linia
		mov   ah, 2
		int   21h
		ret
		
exit:
	mov ah,4ch
	int 21h
main endp
end main