Advertisement
Guest User

Untitled

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