Advertisement
kamasazi99

asm2 lab4 dla 1 wariantu

Nov 13th, 2019
297
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.25 KB | None | 0 0
  1. .386
  2. .MODEL flat, STDCALL
  3.  
  4. ExitProcess PROTO :DWORD
  5. ReadConsoleA PROTO: DWORD,:DWORD,:DWORD,:DWORD,:DWORD
  6. GetStdHandle PROTO:DWORD
  7.  
  8.  
  9. .data
  10.  
  11. varA DWORD 0
  12. varOne DWORD 0
  13. varTwo DWORD 0
  14. varThree DWORD 0
  15. varFour DWORD 0
  16. odczyt DWORD ?
  17. odczytane_znaki DWORD ?
  18. varPOMOC DWORD 0
  19. .code
  20. main proc
  21.  
  22. push -10
  23. call GetStdHandle
  24. mov odczyt,eax
  25.  
  26. push 0
  27. push offset odczytane_znaki
  28. push 13
  29. push offset varOne
  30. push odczyt
  31. call ReadConsoleA
  32.  
  33. mov ebx,offset varOne
  34. add ebx,odczytane_znaki
  35. mov [ebx-2],BYTE PTR 0
  36.  
  37.  
  38. mov eax, offset varOne
  39. push offset varOne
  40. call atoi
  41. mov varOne, EAX
  42.  
  43.  
  44. push 0
  45. push offset odczytane_znaki
  46. push 13
  47. push offset varTwo
  48. push odczyt
  49. call ReadConsoleA
  50.  
  51. mov ebx,offset varTwo
  52. add ebx,odczytane_znaki
  53. mov [ebx-2],BYTE PTR 0
  54.  
  55. mov eax, offset varTwo
  56. push offset varTwo
  57. call atoi
  58. mov varTwo, EAX
  59.  
  60. push 0
  61. push offset odczytane_znaki
  62. push 13
  63. push offset varThree
  64. push odczyt
  65. call ReadConsoleA
  66.  
  67. mov ebx,offset varThree
  68. add ebx,odczytane_znaki
  69. mov [ebx-2],BYTE PTR 0
  70.  
  71. mov eax, offset varThree
  72. push offset varThree
  73. call atoi
  74. mov varThree, EAX
  75.  
  76. push 0
  77. push offset odczytane_znaki
  78. push 13
  79. push offset varFour
  80. push odczyt
  81. call ReadConsoleA
  82.  
  83. mov ebx,offset varFour
  84. add ebx,odczytane_znaki
  85. mov [ebx-2],BYTE PTR 0
  86.  
  87. mov eax, offset varFour
  88. push offset varFour
  89. call atoi
  90. mov varFour, EAX
  91.  
  92. ;po zdobyciu wartosci obliczam sobie wariant tak o
  93. mov eax,varOne
  94. add eax,varTwo ; JEDYNKA + DWOJKA => EAX
  95. mov varPOMOC,eax ; JEDYNKA + DWOJKA => POMOC
  96. mov eax,varThree
  97. mul varPOMOC ; (JEDYNKA + DWOJKA)*TROJKA => eax
  98. mov ebx, varFour
  99. div ebx ;(JEDYNKA + DWOJKA)*TROJKA/CZWORKA => eax
  100. mov varPomoc,eax ;tak dla mnie
  101.  
  102.  
  103. push 0
  104. call ExitProcess
  105.  
  106. main endp
  107.  
  108. atoi proc uses esi edx inputBuffAddr:DWORD
  109. mov esi, inputBuffAddr
  110. xor edx, edx
  111. xor EAX, EAX
  112. mov AL, BYTE PTR [esi]
  113. cmp eax, 2dh
  114. je parseNegative
  115.  
  116. .Repeat
  117. lodsb
  118. .Break .if !eax
  119. imul edx, edx, 10
  120. sub eax, "0"
  121. add edx, eax
  122. .Until 0
  123. mov EAX, EDX
  124. jmp endatoi
  125.  
  126. parseNegative:
  127. inc esi
  128. .Repeat
  129. lodsb
  130. .Break .if !eax
  131. imul edx, edx, 10
  132. sub eax, "0"
  133. add edx, eax
  134. .Until 0
  135.  
  136. xor EAX,EAX
  137. sub EAX, EDX
  138. jmp endatoi
  139.  
  140. endatoi:
  141. ret
  142. atoi endp
  143. END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement