daily pastebin goal
52%
SHARE
TWEET

Untitled

a guest Jan 13th, 2019 66 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
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top