Advertisement
Guest User

Untitled

a guest
Oct 24th, 2018
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ;
  2. ; suskaiciuoti     /   a^2+x            , kai |x|<c+a
  3. ;              y = |   2b-a             , kai |x|=c+a
  4. ;                  \   (c+5b)/|x|-(c+a) , kai |x|>c+a
  5. ; skaiciai be zenklo
  6. ; Duomenys a - w, b - w, c - w, x - b, y - b
  7.  
  8. stekas  SEGMENT STACK
  9. DB 256 DUP(0)
  10. stekas  ENDS
  11.  
  12. duom    SEGMENT
  13. a    DW 5  ;10000 ; perpildymo situacijai
  14. b    DW 10
  15. c    DW 15
  16. x    DB 25,3,54,2,1,12
  17. kiek    = $-x+1
  18. y    DB 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.  
  35.  
  36. cikl:
  37.     MOV bl, x[si]
  38.     CBW
  39.     CMP bx, 0
  40.     JG testi
  41.     NEG bx
  42.     JO kl1
  43. testi:
  44.     MOV ax, a
  45.     MOV dx, c
  46.     CBW
  47.     ADD ax, dx  
  48.     CMP ax, bx
  49.     JE f2
  50.     JL f3
  51.  
  52. f1: MOV ax, a
  53.     MUL ax
  54.     JO kl1
  55.     ADD al, x[si]
  56.     CBW
  57.     JO kl1
  58.     JMP re
  59.        
  60. f2: MOV bx, 2    
  61.     MOV ax, b
  62.     CBW
  63.     MUL bx
  64.     SUB ax, a
  65.     JMP re
  66.  
  67.  
  68. f3:
  69.     MOV bx, 5
  70.     MOV ax, b
  71.     CBW
  72.     MUL bx
  73.     ADD ax, c
  74.     MOV dx, ax
  75.    
  76.     MOV ax, c
  77.     ADD ax, a
  78.    
  79.     MOV bl, x[si]
  80.     CBW
  81.     CMP bx, 0
  82.     JG testi2
  83.     NEG bx
  84.     JO kl1
  85. testi2:  
  86.     SUB bx, ax
  87.     MOV ax, bx
  88.     XCHG ax, dx
  89.     DIV dl
  90.  
  91.  
  92.  
  93.  
  94.  
  95.  
  96. re:
  97. CMP ah, 0     ;ar telpa rezultatasi baita
  98. JE ger
  99. JMP kl3
  100. ger:    MOV y[di], al
  101. INC si
  102. INC di
  103. LOOP cikl
  104. pab:
  105. ;rezultatu isvedimas i ekrana
  106. ;============================
  107. XOR si, si
  108. XOR di, di
  109. MOV cx, kiek
  110. JCXZ is_pab
  111. is_cikl:
  112. MOV al, x[si]  ; isvedamas skaicius x yra ax reg.        
  113. CBW
  114. PUSH ax
  115. MOV bx, offset isvb+2
  116. PUSH bx
  117. CALL binasc
  118. MOV al, y[di]
  119. XOR ah, ah        ; isvedamas skaicius y yra ax reg.
  120. PUSH ax
  121. MOV bx, offset isvb+11
  122. PUSH bx
  123. CALL binasc
  124.  
  125. MOV dx, offset isvb
  126. MOV ah, 9h
  127. INT 21h
  128. ;============================
  129. INC si
  130. INC di
  131. LOOP is_cikl
  132. is_pab:
  133. ;===== PAUZE ===================
  134. ;===== paspausti bet kuri klavisa ===
  135. LEA dx, spausk
  136. MOV ah, 9
  137. INT 21h
  138. MOV ah, 0
  139. INT 16h
  140. ;============================
  141. MOV ah, 4Ch   ; programos pabaiga, grizti i OS
  142. INT 21h
  143. ;============================
  144.  
  145. kl1:    LEA dx, perp
  146. MOV ah, 9
  147. INT 21h
  148. XOR al, al
  149. JMP ger
  150. kl2:    LEA dx, daln
  151. MOV ah, 9
  152. INT 21h
  153. XOR al, al
  154. JMP ger
  155. kl3:    LEA dx, netb
  156. MOV ah, 9
  157. ;INT 21h
  158. XOR al, al
  159. JMP ger
  160.  
  161. ; skaiciu vercia i desimtaine sist. ir issaugo
  162. ; ASCII kode. Parametrai perduodami per steka
  163. ; Pirmasis parametras ([bp+6])- verciamas skaicius
  164. ; Antrasis parametras ([bp+4])- vieta rezultatui
  165.  
  166. binasc    PROC NEAR
  167. PUSH bp
  168. MOV bp, sp
  169. ; naudojamu registru issaugojimas
  170. PUSHA
  171. ; rezultato eilute uzpildome tarpais
  172. MOV cx, 6
  173. MOV bx, [bp+4]
  174. tarp:    MOV byte ptr[bx], ' '
  175. INC bx
  176. LOOP tarp
  177. ; skaicius paruosiamas dalybai is 10
  178. MOV ax, [bp+6]
  179. MOV si, 10
  180. val:    XOR dx, dx
  181. DIV si
  182. ;  gauta liekana verciame i ASCII koda
  183. ADD dx, '0'   ; galima--> ADD dx, 30h
  184. ;  irasome skaitmeni i eilutes pabaiga
  185. DEC bx
  186. MOV [bx], dl
  187. ; skaiciuojame pervestu simboliu kieki
  188. INC cx
  189. ; ar dar reikia kartoti dalyba?
  190. CMP ax, 0
  191. JNZ val
  192.  
  193. POPA
  194. POP bp
  195. RET
  196. binasc    ENDP
  197. prog    ENDS
  198. END pr
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement