Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .386
- .MODEL flat, STDCALL
- ExitProcess PROTO :DWORD
- ReadConsoleA PROTO: DWORD,:DWORD,:DWORD,:DWORD,:DWORD
- GetStdHandle PROTO:DWORD
- wsprintfA PROTO C:VARARG
- WriteConsoleA PROTO: DWORD,:DWORD,:DWORD,:DWORD,:DWORD
- .data
- varA DWORD 0
- varOne DWORD 0
- varTwo DWORD 0
- varThree DWORD 0
- varFour DWORD 0
- odczyt DWORD ?
- odczytane_znaki DWORD ?
- varPOMOC DWORD 0
- tekst_do_wypisania BYTE "Wynik obliczen dla funkcji y=(a+b)*c/d to:%i",0
- format BYTE "%i",0
- buffor_pomocy byte 255 dup(0)
- rinp DWORD 0
- wpis DWORD ?
- .code
- main proc
- push -11
- call GetStdHandle
- mov wpis,eax
- push -10
- call GetStdHandle
- mov odczyt,eax
- push 0
- push offset odczytane_znaki
- push 13
- push offset varOne
- push odczyt
- call ReadConsoleA
- mov ebx,offset varOne
- add ebx,odczytane_znaki
- mov [ebx-2],BYTE PTR 0
- mov eax, offset varOne
- push offset varOne
- call atoi
- mov varOne, EAX
- push 0
- push offset odczytane_znaki
- push 13
- push offset varTwo
- push odczyt
- call ReadConsoleA
- mov ebx,offset varTwo
- add ebx,odczytane_znaki
- mov [ebx-2],BYTE PTR 0
- mov eax, offset varTwo
- push offset varTwo
- call atoi
- mov varTwo, EAX
- push 0
- push offset odczytane_znaki
- push 13
- push offset varThree
- push odczyt
- call ReadConsoleA
- mov ebx,offset varThree
- add ebx,odczytane_znaki
- mov [ebx-2],BYTE PTR 0
- mov eax, offset varThree
- push offset varThree
- call atoi
- mov varThree, EAX
- push 0
- push offset odczytane_znaki
- push 13
- push offset varFour
- push odczyt
- call ReadConsoleA
- mov ebx,offset varFour
- add ebx,odczytane_znaki
- mov [ebx-2],BYTE PTR 0
- mov eax, offset varFour
- push offset varFour
- call atoi
- mov varFour, EAX
- ;po zdobyciu wartosci obliczam sobie wariant tak o
- mov eax,varOne
- add eax,varTwo ; JEDYNKA + DWOJKA => EAX
- mov varPOMOC,eax ; JEDYNKA + DWOJKA => POMOC
- mov eax,varThree
- mul varPOMOC ; (JEDYNKA + DWOJKA)*TROJKA => eax
- mov ebx, varFour
- div ebx ;(JEDYNKA + DWOJKA)*TROJKA/CZWORKA => eax
- mov varPomoc,eax ;tak dla mnie
- ; ”Wynik obliczeń dla funkcji y=<wariant>to: <wynik>”
- push varPomoc
- push offset tekst_do_wypisania
- push offset buffor_pomocy
- call wsprintfA
- add ESP,12
- mov rinp,eax
- push 0
- push offset rinp
- push 100 ;dziala ale cos tu jest źle bo dopiero przy drugim wypisaniu jest wynik wiec do poprawy
- push offset varPomoc
- push wpis
- 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
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement