Guest User

Untitled

a guest
Nov 11th, 2017
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. --- V1D04GmM.S.orig 2017-11-11 11:35:10.445708650 +0100
  2. +++ V1D04GmM.2017-11-11 12:23:05.322467165 +0100
  3. @@ -3,8 +3,43 @@
  4.  .globl main
  5.  
  6.  main:
  7. -mov ecx, 3
  8. +push ebp
  9. +mov ebp, esp
  10. +
  11. +# ebx = argv
  12. +mov ebx, [ebp + 12]
  13. +
  14. +# if (argc < 3) {
  15. +cmp dword ptr [ebp + 8], 3
  16. +jge parameters_ok
  17. +#      printf("Usage %s <number 1> <number 2>", argv[0]);
  18. +push [ebx]
  19. +push offset usage
  20. +call printf
  21. +add esp, 8
  22. +#      return 1
  23.  mov eax, 1
  24. +jmp exit
  25. +# }
  26. +
  27. +parameters_ok:
  28. +# pierwszy argument z lini poleceń ecx = atoi(argv[1])
  29. +push [ebx + 4]
  30. +call atoi
  31. +add esp, 4
  32. +# atoi zwraca wartosc w eax i powinniśmy teraz zrobić mov ecx, eax
  33. +# ale ponieważ atoi nadpisuje rejest ecx to zamiast ją kopiować eax do ecx
  34. +# wrzucimy tę wartość na stos i potem ją zdejmiemy w linii 40
  35. +push eax
  36. +
  37. +# drugi argument z linii polecen wrzuc do eax: eax = atoi(argv[2]) (skoro atoi zwraca wartosc w eax, to wystaczy zawolac atoi i tyle)
  38. +push [ebx + 8]
  39. +call atoi
  40. +add esp, 4
  41. +
  42. +# wrzucamy ze stosu wartość pierwszego argumentu lini poleceń do ecx
  43. +pop ecx
  44. +
  45.  xor edx, edx
  46.  xor ebx, ebx
  47.  push eax
  48. @@ -15,6 +50,9 @@
  49.  call printf
  50.  add esp, 8
  51.  mov eax, 0
  52. +exit:
  53. +mov esp, ebp
  54. +pop ebp
  55.  ret
  56.  
  57.  function:
  58. @@ -87,4 +125,7 @@
  59.  .data
  60.  msg:
  61.    .asciz "Wynik = %d\n"
  62. -  .byte 0
  63. \ Brak znaku nowej linii na końcu pliku
  64. +  .byte 0
  65. +usage:
  66. +  .asciz "Usage %s <number 1> <number 2>\n"
  67. +  .byte 0
Advertisement
Add Comment
Please, Sign In to add comment