Advertisement
Guest User

Untitled

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