a co masz w cl? musisz napisać jeszcze "mov cl,Z"mov al,X ;wpisanie zmiennych do rejestru
mov bl,Y
add al, bl ;dodaj X+Y
cmp al, cl
dalej: mov al,X
mov bl,Y
mov cl,Z
add bl, cl
cmp bl, al
ja dalej1
mov al,X
cmp bl, al
jb nie------------------------------------------------>> TUTAJ przechodzi odrazu do etykiety "nie"
dalej1:
mov al,X
mov bl,Y
mov cl,Z
po pierwszym porównaniu cmp al,bl (wpisane liczby X=2 Y=3 Z=4) jbe nie przechodzi do etykiety niejaki liczby X, Y i Z są? może poprawnie przechodzi?
kalkulacja:
mov al,X
mov bl,Y
mov cl,Z
add al,bl
cmp al,cl
jbe nie ; jesli X+Y<=Z <---------------------------------tu jest error odrazu przechodzi do etykiety nie
mov al,X ; inne rejestry są nie zmieniany
add al,cl
cmp al,bl
jbe nie ; jesli X+Z<=Y
mov al,X
add bl,cl
cmp bl,al
jbe nie
ok:
drukuj "Ok"
jmp exit
nie:
drukuj "Nie"
exit:
mov ax,4c00h
int 21h
View attachment 220
po pierwszym porównaniu cmp al,bl (wpisane liczby X=2 Y=3 Z=4) jbe nie przechodzi do etykiety nie
use16
org 100h
jmp start
wiadomosc DB "Podaj dlugosc boku a: $"
wiadomosc1 DB 13,10,"Podaj dlugosc boku b: $"
wiadomosc2 DB 13,10,"Podaj dlugosc boku c: $"
komunikat DB 13,10,"Trojkat mozliwy do zbudowania $"
komunikat1 DB 13,10,"Nie istnieje taki trojkat $"
X DB 0
Y DB 0
Z DB 0
start:
mov dx, wiadomosc
mov ah, 9
int 21h
mov ah,01h ;wczytywanie 1 znaku z klawiatury
int 21h
sub al, 30h
mov [X],al
mov dx, wiadomosc1
mov ah, 9
int 21h
mov ah,01h ;wczytywanie 2 znaku z klawiatury
int 21h
sub al, 30h
mov [Y],al
mov dx, wiadomosc2
mov ah, 9
int 21h
mov ah,01h ;wczytywanie 3 znaku z klawiatury
int 21h
sub al, 30h
mov [Z],al
kalkulacja:
mov al,[X]
mov bl,[Y]
mov cl,[Z]
add al,bl
cmp al,cl
jbe nie
mov al,[X]
add al,cl
cmp al,bl
jbe nie
mov al,[X]
add bl,cl
cmp bl,al
jbe nie
ok:
mov dx,komunikat
mov ah,9
int 21h
jmp exit
nie:
mov dx,komunikat1
mov ah,9
int 21h
exit:
ret
Przerwanie, które używasz do wczytania liczby - wczytuje znak. Spróbuj wczytany znak przekonwertować na liczbę i wtedy porównywać.
Odjąć od znaku wartość 48 (dziesiętnie), tak jak to zrobił shoorick.jak to zrobić?