Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .386
- .MODEL flat, STDCALL
- includelib masm32.lib
- WriteConsoleA PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD
- ReadConsoleA PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD
- GetStdHandle PROTO :DWORD
- ExitProcess PROTO :DWORD
- GetTickCount PROTO
- nseed PROTO :DWORD
- nrandom PROTO :DWORD
- CharToOemA PROTO :DWORD,:DWORD
- wsprintfA PROTO C :VARARG
- .data
- dest BYTE 10 dup(0)
- dest2 BYTE 10 dup(0)
- hout DWORD 0
- zach1 BYTE "Wprowadz liczbe: "
- za DWORD 0
- zach2 BYTE "Wprowadz liczbe: "
- zach3 BYTE "Wprowadz zakres: "
- zach4 BYTE "Zgadnij liczbe: "
- zb DWORD 0
- wyn1 BYTE "Są równe"
- wyn2 BYTE "Nie są równe"
- wyn3 BYTE "Liczba pierwsza jest większa"
- wyn4 BYTE "Liczba pierwsza jest mniejsza"
- wynik2 BYTE "Nie trafiłeś. Podaj większą liczbę"
- wynik3 BYTE "Nie trafiłeś. Podaj mniejszą liczbę"
- counter DWORD 0
- trafiona BYTE "Trafiłeś za %i razem", 0
- trafionaBuffer BYTE 255 dup(0)
- trinp DWORD 0
- range DWORD 100
- ranger DWORD 100
- pytaj DWORD 100
- wylosowanaLiczba DWORD 0
- wylosowanyTekst BYTE "Wylosowana liczba to: %i", 0
- wylosowanyTekstBuffer BYTE 255 dup(0)
- rinp DWORD 0
- rout dd 0
- licz DWORD 0
- hin DWORD 0
- .code
- main proc
- ;pobranie uchwytów do okna
- push -10
- call GetStdHandle
- mov hin, eax
- push -11
- call GetStdHandle
- mov hout, eax
- ;konieć pobierania uchwytów
- ;wyswietlanie zachety
- push 0
- push offset rout
- push 17
- push offset zach1
- push hout
- call WriteConsoleA
- ;czytanie a
- push 0
- push offset rout
- push 5
- push offset za
- push hin
- call ReadConsoleA
- mov EDX, OFFSET za
- add EDX, rout
- mov [EDX-2],BYTE PTR 0
- push OFFSET za ;adres poczatku ciagu znakow przekazywany na stos
- call atoi ;wywolanie procedury atoi
- mov za, EAX ;przeniesienie wyniku procedury atoi z rejestru EAX do zmiennej za
- ;zacheta b
- push 0
- push offset rout
- push 17
- push offset zach2
- push hout
- call WriteConsoleA
- ;czytanie b
- push 0
- push offset rout
- push 5
- push offset zb
- push hin
- call ReadConsoleA
- mov EDX, OFFSET zb
- add EDX, rout
- mov [EDX-2],BYTE PTR 0
- push offset zb ;adres poczatku ciagu znakow przekazywany na stos
- call atoi ;wywolanie procedury atoi
- mov zb, EAX ;przeniesienie wyniku procedury atoi z rejestru EAX do zmiennej zb
- MOV EAX, za
- MOV EDX, zb
- CMP EAX, EDX
- ;jne nierowne
- je rowne
- ja wieksza
- jmp mniejsza
- wieksza:
- push OFFSET wyn3
- push OFFSET wyn3
- call CharToOemA ; konwersja polskich znaków
- push 0
- push offset rout
- push 28
- push offset wyn3
- push hout
- call WriteConsoleA
- jmp dalej
- mniejsza:
- push OFFSET wyn4
- push OFFSET wyn4
- call CharToOemA ; konwersja polskich znaków
- push 0
- push offset rout
- push 29
- push offset wyn4
- push hout
- call WriteConsoleA
- jmp dalej
- rowne:
- push OFFSET wyn1
- push OFFSET wyn1
- call CharToOemA ; konwersja polskich znaków
- push 0
- push offset rout
- push 8
- push offset wyn1
- push hout
- call WriteConsoleA
- jmp dalej
- nierowne:
- push OFFSET wyn2
- push OFFSET wyn2
- call CharToOemA ; konwersja polskich znaków
- push 0
- push offset rout
- push 12
- push offset wyn2
- push hout
- call WriteConsoleA
- jmp dalej
- dalej:
- ;zacheta 3
- push 0
- push offset rout
- push 17
- push offset zach3
- push hout
- call WriteConsoleA
- ;czytanie 3
- push 0
- push offset rout
- push 1
- push offset range
- push hin
- call ReadConsoleA
- mov EDX, OFFSET range
- add EDX, rout
- mov [EDX-2],BYTE PTR 0
- push offset range ;adres poczatku ciagu znakow przekazywany na stos
- call atoi ;wywolanie procedury atoi
- mov range, EAX ;przeniesienie wyniku procedury atoi z rejestru EAX do zmiennej zb
- mov licz, 0
- .WHILE licz < 10
- call GetTickCount
- push eax
- call nseed
- push range
- call nrandom
- mov wylosowanaLiczba, EAX
- ;zamiana liczby na znaki
- push wylosowanaLiczba
- push OFFSET wylosowanyTekst
- push OFFSET wylosowanyTekstBuffer
- call wsprintfA
- add ESP, 12
- mov rinp, EAX
- inc rinp
- push 0
- push offset rout
- push rinp
- push offset wylosowanyTekstBuffer
- push hout
- call WriteConsoleA
- inc licz
- .ENDW
- ;gierka
- ;zacheta 3
- push 0
- push offset rout
- push 17
- push offset zach3
- push hout
- call WriteConsoleA
- ;czytanie 3
- push 0
- push offset rout
- push 5
- push offset ranger
- push hin
- call ReadConsoleA ;NIE POZWALA MI NIC WPISAC !!
- mov EDX, OFFSET ranger
- add EDX, rout
- mov [EDX-2],BYTE PTR 0
- push offset ranger ;adres poczatku ciagu znakow przekazywany na stos
- call atoi ;wywolanie procedury atoi
- mov range, EAX ;przeniesienie wyniku procedury atoi z rejestru EAX do zmiennej zb
- call GetTickCount
- push eax
- call nseed
- push ranger
- call nrandom
- mov wylosowanaLiczba, EAX
- mov licz, 0
- lpytaj:
- inc licz
- ;zacheta 4
- push 0
- push offset rout
- push 16
- push offset zach4
- push hout
- call WriteConsoleA
- ;czytanie 3
- push 0
- push offset rout
- push 2
- push offset pytaj
- push hin
- call ReadConsoleA
- mov EDX, OFFSET pytaj
- add EDX, rout
- mov [EDX-2],BYTE PTR 0
- push offset pytaj ;adres poczatku ciagu znakow przekazywany na stos
- call atoi ;wywolanie procedury atoi
- mov pytaj, EAX ;przeniesienie wyniku procedury atoi z rejestru EAX do zmiennej zb
- cmp EAX, wylosowanaLiczba
- je lrowne
- ja lwieksza
- jmp lmniejsza
- lwieksza:
- push OFFSET wynik2
- push OFFSET wynik2
- call CharToOemA ; konwersja polskich znaków
- push 0
- push offset rout
- push 34
- push offset wynik2
- push hout
- call WriteConsoleA
- jmp lpytaj
- lmniejsza:
- push OFFSET wynik3
- push OFFSET wynik3
- call CharToOemA ; konwersja polskich znaków
- push 0
- push offset rout
- push 35
- push offset wynik3
- push hout
- call WriteConsoleA
- jmp lpytaj
- lrowne:
- push licz
- push OFFSET trafiona
- push OFFSET trafionaBuffer
- call wsprintfA
- add ESP, 12
- mov trinp, EAX
- inc trinp
- push 0
- push offset rout
- push trinp
- push offset trafionaBuffer
- push hout
- call WriteConsoleA
- jmp koniec
- koniec:
- push 0
- call ExitProcess
- main endp
- ;funkcja atoi
- atoi proc uses esi edx inputBuffAddr:DWORD
- mov esi, inputBuffAddr
- xor edx, edx
- xor EAX, EAX
- mov AL, BYTE PTR [esi]
- cmp eax, 2dh
- je parseNegative
- .Repeat
- lodsb
- .Break .if !eax
- imul edx, edx, 10
- sub eax, "0"
- add edx, eax
- .Until 0
- mov EAX, EDX
- jmp endatoi
- parseNegative:
- inc esi
- .Repeat
- lodsb
- .Break .if !eax
- imul edx, edx, 10
- sub eax, "0"
- add edx, eax
- .Until 0
- xor EAX,EAX
- sub EAX, EDX
- jmp endatoi
- endatoi:
- ret
- atoi endp
- END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement