Skocz do zawartości
Asteer

Program Kalkulator

Rekomendowane odpowiedzi

Cześć

Chciałbym prosic kogos kto zna podstawy Asemblera do sprawdzenia programu, ktory napisalem. Ma on za zadanie pobrac od uzytkownika 2 liczby oraz znak dzialania (+ lub -) a nastepnie korzystajac z odwrotnej notacji polskiej wyswietlic wynik na ekranie.

 

Kod programu ktory udało mi sie napisac wyglada nasepujaco:

 

.model small

.stack 100h

.data
t1 db 'Podaj 2 liczby oraz znak dzialania (+ lub -)? :$'
crlf db 0dh,0ah,'$'

.code
mov ax,@data
mov ds,ax
mov dx,offset t1
mov ah,09h
int 21h
mov cx,0

pobieranie:
mov ah,01h
int 21h
push ax
add cx,1
cmp cx,2
je dzialanie
jmp pobieranie

dzialanie:
mov ah,01h
int 21h
cmp al,2Bh
je dodawanie
jmp odejmowanie

dodawanie:
pop dx
pop bx
add dx,bx
mov ah,02h
int 21h

odejmowanie:
pop dx
pop bx
sub bx,dx
mov dx,bx
mov ah,02h
int 21h

koniec:
 mov ah,4ch
 int 21h
 end

 

Program działa z tym ze jako wynik dzialania nie wyswietla sumy podanych liczb a roznego rodzaju znaczki oraz litery :unsure: Jestem calkowicie poczatkujacy jezeli chodzi o asemblera dlatego prosze o wyrozumiałosc. Prosilbym o naprowadzenie mnie na etap w ktorym robie blad, za co z gory dziekuje :wink:

Edytowane przez Asteer

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Z assemblerem niewiele miałem wspólnego, ale jak na mój gust musisz zamienić liczbę a odpowiedni ciąg znaków. Funkcja 09h służy do wyświetlania stringów,a Ty próbujesz wyświetlić liczbę,

Każdemu znakowi odpowiada jakiś kod(liczba) - te dziwne znaczki, które Ci się wyświetlają to znaki, których kod odpowiada obliczonej sumie. Ogólnie poczytaj sobie o ASCII.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Z assemblerem niewiele miałem wspólnego, ale jak na mój gust musisz zamienić liczbę a odpowiedni ciąg znaków. Funkcja 09h służy do wyświetlania stringów,a Ty próbujesz wyświetlić liczbę,

Każdemu znakowi odpowiada jakiś kod(liczba) - te dziwne znaczki, które Ci się wyświetlają to znaki, których kod odpowiada obliczonej sumie. Ogólnie poczytaj sobie o ASCII.

Doszedlem juz do tego :D Ale mimo wszystko dzieki za checi :wink: Teraz zastanawiam sie w jak zmodyfikowac program zeby kazde obliczenie wyswietlalo sie w nowej lini :rolleyes: Zapetlilem sobie progra, ktory po wykonaniu dzialania pyta uzytkownika czy chce jeszcze cos liczyc, jesli akceptuje, program przechodzi do kolejnego działania z tym ze wyswietla je w tej samej lini w ktorej skonczyl..

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...