Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Zmienna_A:
- mov ah,9
- mov dx,ent1 ; enter
- int 21h
- mov ah,9
- mov dx, wpZmien1 ; tekst wpisz zmienna A
- int 21h
- wpiszZmienna_A:
- mov ah,1 ;pobranie wartosci A
- int 21h
- jmp sprZmienna_A
- ;sprawdzamy czy zmienna nie jest jakims znakiem specjalnym lub enterem
- sprZmienna_A:
- cmp al, 13
- je koniecWpiszZmienna_A ; jesli enter to konczymy pobierac nastepne liczby
- cmp al,48
- jb zlyZnak ; koniec programu
- cmp al,57
- ja zlyZnak ; koniec programu
- mov ah,0 ; wypisanie na ekran
- sub ax,48 ; format z ASCI na liczbe (wartosc)
- push ax ; wepchniecie wartosci na stos
- inc di ; inkrementacja di ++
- loop wpiszZmienna_A ; petla cx > 0
- koniecWpiszZmienna_A:
- cmp cx,3 ; jesli petla nie wykona sie ani razu, bo wprowadzilismy np enter, znaczy ze podano zly znak
- je zlyZnak
- xor ax,ax ; profilaktyczne zerowanie rejestrow
- xor dx,dx
- xor cx,cx
- xor bx,bx
- sciagnijZeStosu_A: ; sciagamy wartosci ze stosu, aby uzyskac liczbę do obliczen
- sub di,1 ; nasze di bylo rowne ilosci wykonywanych petel (ale potrzebujemy o jeden mniejszego)
- mov cx,di
- pop ax
- add bx,ax ; przechowuje nam tymczasowo nasza liczbe
- mov dx,10 ; przekazanie wartosci 10 do dx
- cmp cx,0 ; jezeli di = cx = 0 to nie ma wiecej cyfr na stosie
- jle liczbaNaStos_A ; wypychamy gotowa liczbe na stos
- petlaDoStosu_A : ; sciagamy kolejne cyfry ze stosu
- xor ax,ax ; profilaktyczne zerowanie rejestru
- pop ax
- mul dx ; ax*dx
- add bx,ax
- xor ax,ax ; profilaktyczne zerowanie rejestru
- mov ax,dx ; przekazanie wartosci z dx -> ax
- mul dx ; ax*dx
- xor dx,dx ; profilaktyczne zerowanie rejestru
- mov dx,ax ; przekazanie wartosci z ax -> dx
- loop petlaDoStosu_A ; cx>0
- liczbaNaStos_A:
- xor ax,ax ; profilaktyczne zerowanie rejestru
- mov ax,bx ; przepisanie zsumowanej liczby z bh do ax,
- push ax ; wypchniecie ax na stos jako liczba zminnej A
- jmp wybierzDzialanie
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement