SHARE
TWEET

Untitled

a guest Oct 21st, 2019 84 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ;
  2. ; suskaiciuoti     /   3b+x^2           , kai 3b > x
  3. ;              y = |   (|x|-4a)/(c^3-b) , kai 3b = x
  4. ;                  \  
  5. ; skaiciai su zenklu
  6. ; Duomenys a - b, b - b, c - b, x - w, y - w
  7.  
  8. stekas  SEGMENT STACK
  9.     DB 256 DUP(0)
  10. stekas  ENDS
  11.  
  12. duom    SEGMENT
  13. a   DB  0  ;   10000; perpildymo situacijai
  14. b   DB  7
  15. c   DB  1
  16. x   DW  21,-2,-4,1,50,45,80
  17. kiek    = ($-x)/2
  18. y   DW kiek dup(0AAh)    
  19. isvb    DB 'x=',6 dup (?), ' y=',6 dup (?), 0Dh, 0Ah, '$'
  20. perp    DB 'Perpildymas', 0Dh, 0Ah, '$'
  21. daln    DB 'Dalyba is nulio', 0Dh, 0Ah, '$'
  22. netb    DB 'Netelpa i baita', 0Dh, 0Ah, '$'  
  23. daug    DB 'Neapibrezta salyga', 0Dh, 0Ah, '$'
  24. spausk  DB 'Skaiciavimas baigtas, spausk bet kuri klavisa,', 0Dh, 0Ah, '$'
  25. duom    ENDS
  26.  
  27. prog    SEGMENT
  28.     assume ss:stekas, ds:duom, cs:prog
  29. pr: MOV ax, duom
  30.     MOV ds, ax
  31.     XOR si, si      ; (suma mod 2) si = 0
  32.     XOR di, di      ; di = 0
  33. c_pr:   MOV cx, kiek
  34.         JCXZ pab
  35. cikl:
  36.     MOV ax, 3
  37.     IMUL b
  38.     CMP ax, x[si]
  39.     JG f1
  40.     JE f2
  41.     JL kl4
  42.    
  43. f1: MOV ax, x[si]
  44.     IMUL x[si]
  45.     JO kl1
  46.     MOV bx, ax
  47.     MOV ax, 3
  48.     IMUL b
  49.     JO kl1
  50.     ADD ax, bx
  51.     JO kl1
  52.     JMP re
  53.  
  54. f2: MOV ax, x[si]
  55.     CMP ax, 0
  56.     JG f2pap
  57.     NEG ax
  58.    
  59. f2pap: MOV bx, ax
  60.     MOV ax, 4
  61.     IMUL a
  62.     JO kl1
  63.     SUB bx, ax
  64.     JO kl1
  65.     MOV dx, bx
  66.     ;kubas
  67.     MOV al, c
  68.     CBW
  69.     IMUL c
  70.     JO kl1
  71.     IMUL c
  72.     JO kl1
  73.     XOR bx, bx
  74.     MOV bl, b
  75.     CBW    
  76.     SUB ax, bx
  77.     JO kl1
  78.     MOV bx, ax
  79.     MOV ax, dx
  80.     CMP bx, 0
  81.     JE kl2
  82.     XOR dx, dx
  83.     IDIV bx
  84.     JMP re
  85.    
  86.  
  87. re:
  88.     CMP al, 0
  89.     JGE teigr
  90.     CMP ah, 0FFh  ; jei neig. rezultatas
  91.     JE  ger
  92.     JMP kl3
  93. teigr:  CMP ah, 0     ;jei teig. rezultatas
  94.         JE ger 
  95.     JMP kl3
  96. ger:   
  97.     MOV y[di], ax
  98.     INC si
  99.     INC si
  100.     INC di  
  101.     INC di
  102.     LOOP cikl
  103. pab:       
  104. ;rezultatu isvedimas i ekrana              
  105. ;============================
  106.     XOR si, si
  107.     XOR di, di
  108.         MOV cx, kiek
  109.         JCXZ is_pab
  110. is_cikl:
  111.     MOV ax, x[si]  ; isvedamas skaicius x yra ax reg.
  112.     PUSH ax
  113.     MOV bx, offset isvb+2  
  114.     PUSH bx
  115.     CALL binasc
  116.     MOV ax, y[di]
  117.     PUSH ax
  118.     MOV bx, offset isvb+11
  119.     PUSH bx
  120.     CALL binasc
  121.      
  122.     MOV dx, offset isvb
  123.     MOV ah, 9h
  124.     INT 21h
  125. ;============================
  126.     INC si    
  127.     INC si
  128.     INC di
  129.     INC di
  130.     LOOP is_cikl
  131. is_pab:
  132. ;===== PAUZE ===================  
  133. ;===== paspausti bet kuri klavisa ===
  134.     LEA dx, spausk
  135.     MOV ah, 9
  136.     INT 21h
  137.     MOV ah, 0
  138.         INT 16h
  139. ;============================        
  140.         MOV ah, 4Ch   ; programos pabaiga, grizti i OS
  141.     INT 21h
  142. ;============================  
  143.    
  144. kl1:    LEA dx, perp
  145.     MOV ah, 9
  146.     INT 21h
  147.     XOR al, al
  148.     JMP ger
  149. kl2:    LEA dx, daln
  150.     MOV ah, 9
  151.     INT 21h
  152.     XOR al, al
  153.     JMP ger
  154. kl3:    LEA dx, netb
  155.     MOV ah, 9
  156.     INT 21h
  157.     XOR al, al
  158.     JMP ger
  159. kl4:    LEA dx, daug
  160.     MOV ah, 9
  161.     INT 21h
  162.     XOR ax, ax
  163.     JMP ger                
  164. ; skaiciu vercia i desimtaine sist. ir issaugo
  165. ; ASCII kode. Parametrai perduodami per steka
  166. ; Pirmasis parametras ([bp+6])- verciamas skaicius
  167. ; Antrasis parametras ([bp+4])- vieta rezultatui
  168.  
  169. binasc  PROC NEAR  
  170.     PUSH bp
  171.     MOV bp, sp
  172. ; naudojamu registru issaugojimas
  173.     PUSHA  
  174. ; rezultato eilute uzpildome tarpais
  175.     MOV cx, 6  
  176.     MOV bx, [bp+4]
  177. tarp:   MOV byte ptr[bx], ' '
  178.     INC bx
  179.     LOOP tarp
  180. ; skaicius paruosiamas dalybai is 10  
  181.     MOV ax, [bp+6]
  182.     MOV si, 10
  183.     CMP ax, 0
  184.     JGE val
  185. ; verciamas skaicius yra neigiamas
  186.     NEG ax
  187. val:    XOR dx, dx
  188.     DIV si
  189. ;  gauta liekana verciame i ASCII koda
  190.     ADD dx, '0'   ; galima--> ADD dx, 30h
  191. ;  irasome skaitmeni i eilutes pabaiga
  192.     DEC bx
  193.     MOV [bx], dl
  194. ; skaiciuojame pervestu simboliu kieki
  195.     INC cx
  196. ; ar dar reikia kartoti dalyba?
  197.     CMP ax, 0
  198.     JNZ val
  199. ; gautas rezultatas. Uzrasome zenkla
  200. ;   pop ax  
  201.     MOV ax, [bp+6]
  202.     CMP ax,0
  203.     JNS teig
  204. ; buvo neigiamas skaicius, uzrasome -
  205.     DEC bx
  206.     MOV byte ptr[bx], '-'
  207.     INC cx
  208.     JMP vepab
  209. ; buvo teigiamas skaicius, uzrasau +
  210. teig:   DEC bx
  211.     MOV byte ptr[bx], '+'
  212.     INC cx
  213. vepab:  
  214.     POPA  
  215.     POP bp
  216.     RET
  217. binasc  ENDP    
  218. prog    ENDS
  219.         END pr
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
Not a member of Pastebin yet?
Sign Up, it unlocks many cool features!
 
Top