witam ma problem z tym programem. Program się włącza jednak bez względu na to jakie dane wpiszę to wynik jest zawsze ten sam i wynosi 2340 i nie wiem dlaczego oto kod programu:
.model tiny
.stack
.data
dan1 db "podaj wartosc M1 :", "$"
dan2 db "podaj M2 :", "$"
dan3 db "podaj wartosc M3 :", "$"
dann db "wartosc dla Liczby n :", "$"
wyp db "Podane wartosci :", "$"
m1 dw ?
m2 dw ?
m3 dw ?
liczN dw ?
Tab dw 25 dup(?)
er db "Fatal Error!", "$"
bufor db 20
db 0
db 22 dup('$')
pisz_bufor db 20
db 0
db 22 dup('$')
liczba dw ?
.code

;org 1000h
main proc
mov ax, SEG DGROUP
mov ds, ax

lea   dx, dan1
mov   ah, 9
int   21h

call  pobierz
mov [m1], ax

call newline

lea   dx, dan2
mov   ah, 9
int   21h

call  pobierz
mov [m2], ax

call newline

lea   dx, dan3
mov   ah, 9
int   21h

call  pobierz
mov [m3], ax

call newline

lea   dx, dann
mov   ah, 9
int   21h

call  pobierz
mov [liczN], ax

call newline  ;dop

; An= [(m1An-1) + (m2An-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