Advertisement
Guest User

Untitled

a guest
Jan 13th, 2019
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Zmienna_A:
  2.    
  3.     mov     ah,9
  4.     mov     dx,ent1 ; enter
  5.     int     21h
  6.    
  7.     mov     ah,9
  8.     mov     dx, wpZmien1 ; tekst wpisz zmienna A
  9.     int     21h
  10.     wpiszZmienna_A:
  11.     mov     ah,1    ;pobranie wartosci A           
  12.     int     21h
  13.    
  14.     jmp     sprZmienna_A   
  15.  
  16.     ;sprawdzamy czy zmienna  nie jest jakims znakiem specjalnym lub  enterem
  17.     sprZmienna_A:
  18.  
  19.         cmp     al, 13
  20.         je          koniecWpiszZmienna_A  ; jesli enter to konczymy pobierac nastepne liczby
  21.    
  22.         cmp     al,48  
  23.         jb          zlyZnak                     ; koniec programu
  24.  
  25.         cmp     al,57
  26.         ja          zlyZnak                     ; koniec programu
  27.    
  28.         mov     ah,0                            ; wypisanie na ekran
  29.    
  30.         sub     ax,48                       ; format z ASCI na liczbe (wartosc)
  31.    
  32.         push    ax                              ; wepchniecie wartosci na stos
  33.    
  34.         inc     di                              ; inkrementacja di ++
  35.    
  36.         loop        wpiszZmienna_A          ; petla cx > 0
  37.    
  38.    
  39.    
  40.         koniecWpiszZmienna_A:          
  41.             cmp     cx,3            ; jesli petla nie wykona sie ani razu, bo wprowadzilismy np enter, znaczy ze podano zly znak
  42.             je          zlyZnak
  43.    
  44.             xor     ax,ax       ; profilaktyczne zerowanie rejestrow
  45.             xor     dx,dx
  46.             xor     cx,cx
  47.             xor     bx,bx
  48.    
  49.             sciagnijZeStosu_A:  ; sciagamy wartosci ze stosu, aby uzyskac liczbę do obliczen
  50.                 sub     di,1        ; nasze di bylo rowne ilosci wykonywanych petel (ale potrzebujemy o jeden mniejszego)
  51.    
  52.                 mov     cx,di
  53.                 pop     ax
  54.    
  55.                 add     bx,ax   ; przechowuje nam tymczasowo nasza liczbe
  56.                 mov     dx,10   ; przekazanie wartosci 10 do dx
  57.            
  58.                 cmp     cx,0        ; jezeli di = cx = 0 to nie ma wiecej cyfr na stosie
  59.                 jle liczbaNaStos_A   ; wypychamy gotowa liczbe na stos
  60.    
  61.                 petlaDoStosu_A :    ; sciagamy kolejne cyfry ze stosu
  62.                 xor     ax,ax       ; profilaktyczne zerowanie rejestru
  63.    
  64.                 pop         ax
  65.                
  66.                 mul     dx              ; ax*dx
  67.    
  68.                 add     bx,ax
  69.    
  70.                 xor     ax,ax       ; profilaktyczne zerowanie rejestru
  71.                
  72.                 mov     ax,dx       ; przekazanie wartosci z dx -> ax
  73.    
  74.                 mul     dx              ; ax*dx
  75.                
  76.                 xor     dx,dx       ; profilaktyczne zerowanie rejestru
  77.                
  78.                 mov     dx,ax       ; przekazanie wartosci z ax -> dx
  79.    
  80.                 loop petlaDoStosu_A ; cx>0
  81.    
  82.    
  83.                 liczbaNaStos_A:    
  84.                 xor     ax,ax       ; profilaktyczne zerowanie rejestru
  85.                 mov     ax,bx       ; przepisanie zsumowanej liczby z bh do ax,
  86.                 push    ax              ; wypchniecie ax na stos jako liczba zminnej A
  87.                
  88.                 jmp wybierzDzialanie
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement