Advertisement
Guest User

assem

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