SHARE
TWEET

Untitled

a guest Dec 21st, 2019 84 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. zczytywaniewyjscia: ;ustawienie indeksatorów
  2.     xor bx, bx
  3.     xor cx, cx
  4.     xor si, si
  5.     mov si, 0
  6.     xor di, di
  7. zczytywaniewyjscia1:    ;si, nowy indeksator do zczytywania wyjscia, zamiast pomocniczej tablicy stos
  8.    
  9.     cmp byte [tablicawyjsciowa+SI],"0"
  10.     jl mozeznaknawias2  ;MOZE BYC ZNAKIEM + - * / SPACJA ALBO ZLYM ZNAKIEM
  11.     cmp byte [tablicawyjsciowa+SI],"9"
  12.     jg innyznak
  13.     ;czyli cyfra jakas lub liczba
  14.     jmp cyfralubliczba
  15.    
  16. mozeznaknawias2:
  17.     cmp byte [tablicawyjsciowa+SI], " "
  18.     je spacjaoutput
  19.     cmp byte [tablicawyjsciowa+SI], "+"
  20.     je dodawanieoutput
  21.     cmp byte [tablicawyjsciowa+SI], "-"
  22.     je odejmowanieoutput
  23.     cmp byte [tablicawyjsciowa+SI], "*"
  24.     je mnozenieoutput
  25.     cmp byte [tablicawyjsciowa+SI], "/"
  26.     je dzielenieoutput
  27.     cmp byte [tablicawyjsciowa+SI], "$"
  28.     je konieczczytywania
  29.    
  30.     jmp innyznak
  31.    
  32.  
  33. konieczczytywania:
  34.     pop word [wynikkoncowyonp]
  35.     jmp wyswietlwynikkoncowy
  36.  
  37.  
  38. cyfralubliczba:; cyfra stringowo, funkcja do liczenia ilosci cyfr
  39.     xor bx, bx
  40.     mov bl, [tablicawyjsciowa+SI]
  41.     push bx ;wrzucam na stos cyfry po kolei
  42.     inc byte [licznikcyfr]
  43.     inc si
  44.    
  45.     xor bx, bx
  46.     jmp zczytywaniewyjscia1
  47.  
  48. spacjaoutput: ;pomijam spacje i lece dalej
  49.     cmp byte [licznikcyfr],0
  50.     ja liczeniewartoscistringa1
  51.    
  52.     inc SI
  53.      ;spacja przerywa liczenie cyfr liczby
  54.    
  55.     jmp zczytywaniewyjscia1
  56.  
  57.  
  58. liczeniewartoscistringa1:
  59.     xor ax, ax
  60.     xor bx, bx
  61.     xor dx, dx
  62.     mov bx, 1
  63.    
  64. liczeniewartoscistringa2:;ze stosu pobieram kolejne cyfry i mnoze *1,10,100
  65.     pop ax
  66.     sub al,48
  67.     mul bx          ;mnoze *1,10 itd
  68.     add word [wynik], ax
  69.     ;wynik zapisywany w ax, zwiekszam mnoznik o 10
  70.     xor dx, dx
  71.     xor ax, ax
  72.     mov ax, bx
  73.     mul word [dziesiec]
  74.     xor dx, dx
  75.     mov bx, ax
  76.     xor ax, ax
  77.     dec byte [licznikcyfr]
  78.     cmp byte [licznikcyfr], 0
  79.     ja liczeniewartoscistringa2
  80.    
  81.     xor dx, dx
  82.     xor bx, bx
  83.     xor ax, ax
  84.     push word [wynik]
  85.     inc byte [licznikstosu2]
  86.     mov word [wynik],0
  87.     inc SI
  88.    
  89.     jmp zczytywaniewyjscia1
  90.  
  91. dodawanieoutput:
  92.     cmp byte [licznikstosu2], 2
  93.     jb zleargumenty
  94.  
  95.     xor ax, ax              ;wystarczajaca ilosc argumentow do dzialania
  96.     pop word [argument2] ;1 liczba z wierzcholka stosu
  97.     dec byte [licznikstosu2]
  98.     pop ax ;2 liczba z wierzcholka stosu
  99.     add ax, [argument2]
  100.     push ax ;zwracam wynik na stos
  101.     mov word [argument2],0
  102.     xor ax, ax
  103.     inc si
  104.     jmp zczytywaniewyjscia1
  105.    
  106.    
  107. odejmowanieoutput:
  108.     cmp byte [licznikstosu2], 2
  109.     jb zleargumenty
  110.  
  111.     xor ax, ax              ;wystarczajaca ilosc argumentow do dzialania
  112.     pop word [argument2] ;1 liczba z wierzcholka stosu
  113.     dec byte [licznikstosu2]
  114.     pop ax ;2 liczba z wierzcholka stosu
  115.     sub ax, [argument2]
  116.     push ax ;zwracam wynik na stos
  117.     mov word [argument2],0
  118.     xor ax, ax
  119.     inc si
  120.     jmp zczytywaniewyjscia1
  121.  
  122. mnozenieoutput:
  123.     cmp byte [licznikstosu2], 2
  124.     jb zleargumenty
  125.    
  126.     xor ax, ax
  127.     xor dx, dx
  128.     pop word [argument2] ;1 liczba z wierzcholka stosu
  129.     dec byte [licznikstosu2]
  130.     pop ax ;2 liczba z wierzcholka stosu
  131.     mul word [argument2]
  132.     xor dx, dx
  133.     push ax
  134.     mov word [argument2],0
  135.     xor ax, ax
  136.     inc si
  137.     jmp zczytywaniewyjscia1
  138.    
  139. dzielenieoutput:
  140.     cmp byte [licznikstosu2], 2
  141.     jb zleargumenty
  142.    
  143.     xor ax, ax
  144.     xor dx, dx
  145.     pop word [argument2]
  146.     dec byte [licznikstosu2]
  147.     pop ax ;2 liczba z wierzcholka stosu
  148.     cmp word [argument2], 0
  149.     je dzieleniezero
  150.     div word [argument2]
  151.     xor dx, dx
  152.     push ax
  153.     mov word [argument2],0
  154.     xor ax, ax
  155.     inc si
  156.     jmp zczytywaniewyjscia1
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