Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- format PE CONSOLE ; Program zliczajacy ilosc wystapien litery w pliku tekstowym
- entry main
- include 'D:\fasm\include\win32a.inc'
- section '.data' data readable writeable ; definiowanie zmiennych
- plik dd ? ; przchowuje plik
- licznik dd ? ; zlicza wystapienia
- nazwapliku db 'test.txt', 0 ; nazwa pliku do otworzenia
- tryb db 'r', 0 ; tryb otwarcia pliku, read
- litera db 'o' ; litera wyszukiwana w tekscie
- dowyswietlenia db 'Ilosc wystapien litery `%c` pliku %s: %i', 13, 10, 0 ; napis wyswietlany w formacie 'printf'
- section '.code' code readable writeable executable ; kod egzekwowany
- proc main ; procedura main
- cinvoke fopen, nazwapliku, tryb ; otwarcie pliku
- mov [plik], eax ; przekopiowanie pliku do zmiennej plik
- test eax, eax ; sprawdzenie czy plik sie otworzyl
- jz .end ; jezeli nie. to skok na koniec
- .petla: ; etykieta definiuje petle przechodzaca przez caly pli
- cinvoke fgetc, [plik] ; pobranie znaku z pliku
- cmp eax, -1 ;EOF ; jezeli nastepny znak nie zostal pobrany
- je .eof ; to skok do etykiety gdy koniec pliku
- cmp al, [litera] ; porownanie wczytanego z plu znaku z litera ktorej szukamy
- jne .petla ; jezeli jest rozna to skok do poczatku petli
- inc [licznik] ; w innym wypadku zwiekszenie licznika
- jmp .petla ; powrot do poczatku petli
- .eof: ; etykieta definiujaca zachowanie w przypadku konca pliku
- movzx eax, [litera] ; przekopiowanie litery do rejestru eax
- cinvoke printf, dowyswietlenia, eax, nazwapliku, [licznik] ; wywolanie wyswietlenia w formacie 'printf'
- cinvoke fclose, [plik] ; zamkniecie pliku
- cinvoke getch ; odpowiednik wstrzymanie wykonywania
- xor eax, eax ; wyzerowanie rejestru eax
- .end:
- ret ; koniec
- endp ; koniec procedury
- section '.idata' import data readable writeable ; definicje importow bibliotek
- library msvcrt, 'msvcrt.dll' ; importujemy biblioteke msvcrt
- import msvcrt,\ ; a z niej funkcje do:
- fopen, 'fopen',\ ; operacji na plikach: otwieranie pliku
- fclose, 'fclose',\ ; pobieranie znaku z pliku
- fgetc, 'fgetc',\ ; zamykania pliku
- printf, 'printf',\ ; wyswietlania w konsoli
- getch, '_getch' ; oraz do wstrzymania programu
- ; test.txt
- Litwo! Ojczyzno moja! ty jestes jak zdrowie.
- Ile cie trzeba cenic, ten tylko sie dowie,
- Kto cie stracil. Dzis pieknosc twa w calej ozdobie
- Widze i opisuje, bo tesknie po tobie.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement