Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ; assembly x86 for asmloader(http://gynvael.coldwind.pl/?id=387)
- ; Author: Robert Warwas
- ; Description:
- ; taki sobie kalkulatorek
- ;
- ;
- [bits 32]
- mov ebp, esp ;ramka stosu
- sub esp, 12 ;odejmujemy 12 bajtów od wskaźnika szczytu stosu(przesuwamy w prawo względem rysunku)
- ;odejmowanie od stosu jest ezględem samego stosu a nie niższych adresów pamięci
- ; druga liczba
- lea eax, [ebp-12]
- push eax
- ; znak dzialania
- lea eax, [ebp-8]
- push eax
- ; pierwsza liczba
- lea eax, [ebp-4]
- push eax
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- call skip_scanf
- db "%i %d %i",0
- skip_scanf:
- call [ebx + 4 * 4]
- add esp, 16
- mov eax, 0
- mov eax, [ebp-8]
- push ebx ;zapamietujemy na stosie aby moc łatwo przywrócic
- cmp eax, '/'
- jz DZIELENIE
- cmp eax, '*'
- jz MNOZENIE
- cmp eax, '+'
- jz DODAWANIE
- cmp eax, '-'
- jz ODEJMOWANIE
- jmp EXIT
- DZIELENIE:
- mov edx, 0
- mov eax, [ebp-4] ;zmienna a
- mov ebx, [ebp-12] ;zmienna b
- div ebx
- pop ebx
- add esp,4
- jmp WYPISZ_WYNIK
- MNOZENIE:
- mov edx, 0
- mov eax, [ebp-4] ;zmienna a
- mov ebx, [ebp-12] ;zmienna b
- mul ebx
- pop ebx
- jmp WYPISZ_WYNIK
- DODAWANIE:
- mov eax, [ebp-4] ;zmienna a
- mov ebx, [ebp-12] ;zmienna b
- add eax, ebx
- pop ebx
- jmp WYPISZ_WYNIK
- ODEJMOWANIE:
- mov eax, [ebp-4] ;zmienna a
- mov ebx, [ebp-12] ;zmienna b
- sub eax, ebx
- pop ebx
- jmp WYPISZ_WYNIK
- WYPISZ_WYNIK:
- push eax
- call skip_z
- db "wynik: %i", 0
- skip_z:
- call [ebx + 3 * 4]
- add esp, 8
- jmp EXIT
- ;call skip_wynik
- ;db "Wynik: %c EDX = %i ",0
- ;skip_wynik:
- ;call [ebx + 3 * 4]
- EXIT:
- push 0
- call [ebx]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement