Advertisement
Guest User

Untitled

a guest
Oct 21st, 2019
111
0
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
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement