Advertisement
MartisK

Assembler Lab

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