Advertisement
Guest User

Untitled

a guest
Nov 14th, 2018
132
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.17 KB | None | 0 0
  1. .686
  2. .model flat
  3.  
  4. extern _ExitProcess@4: PROC
  5. extern __write: PROC
  6. extern __read: PROC
  7. public _main
  8.  
  9. .data
  10.  
  11. mnoznik dd 10
  12. dzielnik dd 10
  13. wynikArray db 10 dup (?)
  14. obszar db 11 dup (?)
  15. kom1 db 'Nastapilo przepelnienie',0
  16. kom2 db 'Nie dziel przez zero',0
  17.  
  18. .code
  19.  
  20. wprowadzLiczbe PROC
  21. push ebp
  22. push esi
  23. push edi
  24. push ecx
  25. push ebx
  26. push edx
  27.  
  28. push dword PTR 11 ;liczba wprowadzanych znakow
  29. push dword PTR offset obszar
  30. push dword PTR 0
  31. call __read
  32. add esp, 12
  33.  
  34. mov ebx, offset obszar
  35. mov ecx, 0
  36. mov eax, 0
  37.  
  38. konwersja:
  39. mov cl, [ebx]
  40. inc ebx
  41. cmp cl, 10
  42. jz jestEnter
  43. cmp cl, '0'
  44. jb znak
  45. sub cl, 30h
  46. movzx ecx, cl
  47. mul mnoznik
  48. add eax, ecx
  49. jmp konwersja
  50.  
  51. znak:
  52. movzx ecx, cl
  53. mov eax, ecx
  54. jestEnter:
  55.  
  56. pop edx
  57. pop ebx
  58. pop ecx
  59. pop edi
  60. pop esi
  61. pop ebp
  62.  
  63. ret
  64. wprowadzLiczbe ENDP
  65.  
  66. obliczenie PROC
  67. push edi
  68. push esi
  69. push ebp
  70.  
  71. mov esi, 9
  72.  
  73. cmp ecx, '+'
  74. jz dodawanie
  75. cmp ecx, '-'
  76. jz odejmowanie
  77. cmp ecx, '*'
  78. jz mnozenie
  79. cmp ecx, '/'
  80. jz dzielenie
  81.  
  82. dodawanie:
  83. clc
  84. add eax, ebx
  85. jc komunikat1
  86. jmp wynik
  87.  
  88. odejmowanie:
  89. clc
  90. sub ebx, eax
  91. jc komunikat1
  92. mov eax, ebx
  93. jmp wynik
  94.  
  95. mnozenie:
  96. clc
  97. mul ebx
  98. jc komunikat1
  99. jmp wynik
  100.  
  101. dzielenie:
  102. mov edi, eax
  103. mov eax, ebx
  104. mov ebx, edi
  105. mov edx, 0
  106. cmp ebx,0
  107. jz komunikat2
  108. div ebx
  109. jmp wynik
  110.  
  111. wynik:
  112. mov edx, 0
  113. div dzielnik
  114. add dl, 30h
  115. mov wynikArray[esi], dl
  116. dec esi
  117. cmp eax, 0
  118. jne wynik
  119. jmp skocz
  120.  
  121. ;wypelnienie:
  122. ; mov wynikArray[esi], 20h
  123. ; dec esi
  124. ; cmp esi, 0
  125. ; jz skocz
  126. ; jmp wypelnienie
  127.  
  128. komunikat1:
  129. push dword PTR 24
  130. push dword PTR offset kom1
  131. push dword PTR 1
  132. call __write
  133. add esp, 12
  134. jmp koniec
  135.  
  136. komunikat2:
  137. push dword PTR 21
  138. push dword PTR offset kom2
  139. push dword PTR 1
  140. call __write
  141. add esp, 12
  142. jmp koniec
  143.  
  144. skocz:
  145.  
  146. push dword PTR 10
  147. push dword PTR offset wynikArray
  148. push dword PTR 1
  149. call __write
  150. add esp, 12
  151.  
  152. koniec:
  153.  
  154.  
  155. pop ebp
  156. pop esi
  157. pop edi
  158.  
  159. ret
  160. obliczenie ENDP
  161.  
  162. _main PROC
  163.  
  164. call wprowadzLiczbe
  165. mov ebx, eax
  166. call wprowadzLiczbe
  167. mov ecx, eax
  168. call wprowadzLiczbe
  169. call obliczenie
  170.  
  171. push 0
  172. call _ExitProcess@4
  173.  
  174. _main ENDP
  175.  
  176. END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement