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