Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --- V1D04GmM.S.orig 2017-11-11 11:35:10.445708650 +0100
- +++ V1D04GmM.S 2017-11-11 12:23:05.322467165 +0100
- @@ -3,8 +3,43 @@
- .globl main
- main:
- -mov ecx, 3
- +push ebp
- +mov ebp, esp
- +
- +# ebx = argv
- +mov ebx, [ebp + 12]
- +
- +# if (argc < 3) {
- +cmp dword ptr [ebp + 8], 3
- +jge parameters_ok
- +# printf("Usage %s <number 1> <number 2>", argv[0]);
- +push [ebx]
- +push offset usage
- +call printf
- +add esp, 8
- +# return 1
- mov eax, 1
- +jmp exit
- +# }
- +
- +parameters_ok:
- +# pierwszy argument z lini poleceń ecx = atoi(argv[1])
- +push [ebx + 4]
- +call atoi
- +add esp, 4
- +# atoi zwraca wartosc w eax i powinniśmy teraz zrobić mov ecx, eax
- +# ale ponieważ atoi nadpisuje rejest ecx to zamiast ją kopiować eax do ecx
- +# wrzucimy tę wartość na stos i potem ją zdejmiemy w linii 40
- +push eax
- +
- +# drugi argument z linii polecen wrzuc do eax: eax = atoi(argv[2]) (skoro atoi zwraca wartosc w eax, to wystaczy zawolac atoi i tyle)
- +push [ebx + 8]
- +call atoi
- +add esp, 4
- +
- +# wrzucamy ze stosu wartość pierwszego argumentu lini poleceń do ecx
- +pop ecx
- +
- xor edx, edx
- xor ebx, ebx
- push eax
- @@ -15,6 +50,9 @@
- call printf
- add esp, 8
- mov eax, 0
- +exit:
- +mov esp, ebp
- +pop ebp
- ret
- function:
- @@ -87,4 +125,7 @@
- .data
- msg:
- .asciz "Wynik = %d\n"
- - .byte 0
- \ Brak znaku nowej linii na końcu pliku
- + .byte 0
- +usage:
- + .asciz "Usage %s <number 1> <number 2>\n"
- + .byte 0
Advertisement
Add Comment
Please, Sign In to add comment