Advertisement
Guest User

Untitled

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