Advertisement
kamasazi99

asm1 lab4

Nov 13th, 2019
370
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.90 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.  
  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 varA, 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 varA, 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 varA, 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 varThree
  89. call atoi
  90. mov varA, EAX
  91.  
  92. push 0
  93. call ExitProcess
  94.  
  95. main endp
  96.  
  97. atoi proc uses esi edx inputBuffAddr:DWORD
  98. mov esi, inputBuffAddr
  99. xor edx, edx
  100. xor EAX, EAX
  101. mov AL, BYTE PTR [esi]
  102. cmp eax, 2dh
  103. je parseNegative
  104.  
  105. .Repeat
  106. lodsb
  107. .Break .if !eax
  108. imul edx, edx, 10
  109. sub eax, "0"
  110. add edx, eax
  111. .Until 0
  112. mov EAX, EDX
  113. jmp endatoi
  114.  
  115. parseNegative:
  116. inc esi
  117. .Repeat
  118. lodsb
  119. .Break .if !eax
  120. imul edx, edx, 10
  121. sub eax, "0"
  122. add edx, eax
  123. .Until 0
  124.  
  125. xor EAX,EAX
  126. sub EAX, EDX
  127. jmp endatoi
  128.  
  129. endatoi:
  130. ret
  131. atoi endp
  132. END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement