Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .386
- .Model flat,STDCALL
- ExitProcess PROTO:DWORD
- WriteConsoleA PROTO: DWORD,:DWORD,:DWORD,:DWORD,:DWORD
- ReadConsoleA PROTO: DWORD,:DWORD,:DWORD,:DWORD,:DWORD
- GetStdHandle PROTO:DWORD
- GetTickCount PROTO
- nseed PROTO :DWORD
- nrandom PROTO :DWORD
- wsprintfA PROTO C :VARARG
- includelib masm32.lib
- .data
- varLicznik DWORD 0
- varRange DWORD 0
- varWylosowana DWORD 0
- znaki DWORD ?
- wypisz DWORD ?
- odczyt DWORD ?
- varTrafione BYTE "Trafieles za :%i ",0
- rinp DWORD 0
- buffor BYTE 255 dup(0)
- varZakres BYTE "Podaj zakres",0
- varLower byte "Nie trafiles, podaj mniejsza liczbe",0
- varGreater byte "Nie trafiles, podaj wieksza liczbe",0
- varUzytkownik DWORD 0
- .code
- main proc
- push -11
- call GetStdHandle
- mov wypisz,eax
- push-10
- call GetStdHandle
- mov odczyt,eax
- push 0
- push offset znaki
- push lengthof varZakres
- push offset varZakres
- push wypisz
- call WriteConsoleA
- push 0
- push offset znaki
- push 13
- push offset varRange
- push odczyt
- call ReadConsoleA
- mov ebx, offset varRange
- add ebx,znaki
- mov [ebx-2],BYTE PTR 0
- ;zamiana na normalna
- push offset varRange
- call atoi
- mov varRange,eax
- call GetTickCount
- push eax
- call nseed
- push varRange
- call nrandom
- mov varWylosowana,EAX
- uzytkownik_wartosc:
- push 0
- push offset znaki
- push 13
- push offset varUzytkownik
- push odczyt
- call ReadConsoleA
- mov ebx, offset varUzytkownik
- add ebx,znaki
- mov [ebx-2],BYTE PTR 0
- ;zamiana na normalna
- push offset varUzytkownik
- call atoi
- mov varUzytkownik,eax
- mov eax,varWylosowana
- cmp eax,varUzytkownik
- je finisz
- jl lower
- jg greater
- lower:
- push 0
- push offset znaki
- push lengthof varLower
- push offset varLower
- push wypisz
- call WriteConsoleA
- add varLicznik,1
- jmp uzytkownik_wartosc
- greater:
- push 0
- push offset znaki
- push lengthof varGreater
- push offset varGreater
- push wypisz
- call WriteConsoleA
- add varLicznik,1
- jmp uzytkownik_wartosc
- finisz:
- ;add varLicznik,48
- ;tekst z i
- push varLicznik
- push offset varTrafione
- push offset buffor
- call wsprintfA
- add ESP,12
- mov rinp,eax
- push 0
- push offset rinp
- push 50
- push offset buffor
- push wypisz
- call WriteConsoleA
- push 0
- call ExitProcess
- main endp
- 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
Add Comment
Please, Sign In to add comment