Witam potrzebuje pomocy.
Poniżej został przedstawiony program do konwersji temperatur prawie wszystko w nim działa tylko jest problem z obliczaniem liczb.
Po podaniu wartości jaką ma obliczyć program wywala losowe liczby zamiast poprawnej wartości.
Co zrobić aby program wyświetlał prawidłowo obliczoną wartość ?
Proszę o pomoc jestem początkujący w assemblerze
.model small
.stack 100h
.data
main_menu db 0dh,0ah,"Konwerter",0dh,0ah
db "Nacisnij 'C' -> Celsjusz na Fahrenheit",0dh,0ah
db "Nacisnij 'F' -> Fahrenheit na Celsjusz",0dh,0ah
db "Nacisnij 'X' -> wyjscie",0dh,0ah
db "**************************************",0dh,0ah
db "**************************************",0dh,0ah
db "Wprowadz swoj wybor",0dh,0ah,'$'
Num db,0dh,0ah,"Podaj wartosc: ",0dh,0ah,'$'
Cels db ,0dh,0ah,"Temperatura w Fahrenheit: ",0dh,0ah,'$'
Fahr db ,0dh,0ah,"Temperatura w Celsjuszach: ",0dh,0ah,'$'
Fahr2 db ,0dh,0ah,"Temperatura w Celsjuszach: ",0dh,0ah,'-$'
Operand db ?
.code
start:
mov ax, @data
mov ds, ax
mov ah,09h
mov dx,offset main_menu
int 21h
mov ah,01h
int 21h
mov Operand,al
mov al,Operand
cmp al,'c'
je celsjusz
cmp al,'f'
je fahrenheit
cmp al,'x'
mov ah,4ch
int 21h
start2:
jmp start
celsjusz:
lea dx,Num
mov ah,09h
int 21h
mov bx,0
celsjusz1:
mov ah,01h
int 21h
cmp al,0dh
je celsjusz2
cmp al,47
jle celsjusz1
cmp al,58
jle celsjusz1
mov dl,al
mov ah,02h
int 21h
mov ah,0
sub al,30h
push ax
mov ax,10d
mul bx
pop bx
add bx,ax
jmp celsjusz1
celsjusz2:
pop ax
mov bx,9
mul bx
mov bx,5
div bx
mov bx,32
add ax,bx
push ax
lea dx,Cels
mov ah,09h
int 21h
pop ax
mov cx,0
mov dx,0
mov bx,10d
jmp break
start3:
jmp start2
fahrenheit:
lea dx,Num
mov ah,09h
int 21h
mov bx,0
fahrenheit3:
mov ah,01h
int 21h
cmp al,0dh
je fahrenheit4
cmp al,47
jle fahrenheit3
cmp al,58
jle fahrenheit3
mov dl,al
mov ah,02h
int 21h
mov ah,0
sub al,30h
push ax
mov ax,10d
mul bx
pop bx
add bx,ax
jmp fahrenheit3
fahrenheit4:
pop ax
cmp ax,32
jl fahrenheit2
mov bx,32
sub ax,bx
mov bx,5
mul bx
mov bx,9
div bx
push ax
lea dx,Fahr
mov ah,09h
int 21h
pop ax
mov cx,0
mov dx,0
mov bx,10d
jmp break
start4:
jmp start3
fahrenheit2:
mov bx,20
sub bx,ax
push bx
lea dx,Fahr2
mov ah,09h
int 21h
pop ax
mov cx,0
mov dx,0
mov bx,10d
break:
div bx
push dx
mov dx,0
inc cx
or ax,ax
jne break
ans:
pop dx
add dl,30h
mov ah,02h
int 21h
loop ans
loop start4
exit:
mov ax,4ch
int 21h
end start