Maciej Paczkowski 9696327 stycznia 2006r.doc

(35 KB) Pobierz
Maciej Paczkowski 96963

Maciej Paczkowski  96963              27 stycznia 2006r.

Marcin Ruszczyk     88889

AiR

 

 

 

PROJEKT

OPROGRAMOWANIE MIKROKOMPUTERÓW

 

Ćwiczenie nr 9

 

Zaprojektować menedżera plików i katalogów. Programo powinien pozwalać użytkownikowi na proste operacje jak ukrywanie/odkrywanie plików i katalogów oraz szyfrowanie i odszyfrowywanie plików.

 

 

W skład projektu wchodzi 8 plików:

MENADZER.C                  - główny program

SZUK1.ASM                      - funkcja szukaj_plik()

SZUK2.ASM                      - funkcja szukaj_nastepny_plik()

SZYFRUJ.ASM                  - funkcja szyfruj_plik()

UKRYJ.ASM                       - funkcja ukryj()

UKRYTY.ASM              - funkcja czy_ukryty()

ZM_ROBO.ASM              - funkcja zmien_roboczy()

ROBO.ASM              - funkcja podaj_roboczy()

 

Opis poszczególnych funkcji:

 

ú         extern int szukaj_plik(char t[], char dta[], char nazwa[], unsigned int atrybut);     

 

Funkcja napisana w asemblerze służy do znalezienia nazwy pierwszego pliku pasującego do zdanych kryteriów. W nazwa[] podajemy zmienną gdzie ma się przez referencję wpisać nazwa pliku. Natomiast int atrybut oznacza atrybut z jakimi ma szukać danych plików.

Użyte są następujące funkcje DOSowe przerwania INT 21h:

1ah – deklarowanie nowego adresu bloku DTA

4eh – znalezienie pierwszego lepszego pliku, gdzie nazwa znajduje się na 30-tej pozycji bloku DTA

 

 

ú         extern int szukaj_nastepny_plik(char t[], char dta[], char nazwa[], unsigned int atrybut);   

 

Funkcja działa jak poprzednia i służy do znalezienia następnego pasującego pliku na podstawie poprzedniego szukania zapisanego w bloku DTA.

Użyte są następujące funkcje DOSowe przerwania INT 21h:

1ah – deklarowanie nowego adresu bloku DTA

4eh – znalezienie pierwszego lepszego pliku, gdzie nazwa znajduje się na 30-tej pozycji bloku DTA

 

 

ú         extern int szyfruj_plik(char nazwa[], char klucz[], char buforek[], int id_pliku); 

 

Funkcja szyfruje/odszyfrowuje dany plik (pierwsze 256bajtów) funkcją XOR wg sześciobajtowego podanego przez użytkownika klucza w char klucz[]. W zmiennej char nazwa[] wpisujemy nazwę pliku do zaszyfrowani/odszyfrowania.

Użyte są następujące funkcje DOSowe przerwania INT 21h:

3D02h – otwarcie  pliku

4202h –  sprawdzenie rozmiaru pliku

4201h –  sprawdzenie aktualnej pozycji

4200h –  ustaw poczatek wskaźnika pliku na zero

3Fh – odczyt z pliku 

40hzapis do pliku

3Eh – zamkniecie pliku

 

 

ú         extern unsigned int czy_ukryty(char nazwa[]);

 

Funkcja sprawdza i zwraca atrybut jako wartość funkcji. Wynikiem może być 0,2,16 oraz 18.

0 – oznacza normalny plik

2 – oznacza ukryty plik

16 – oznacza katalog

18 – oznacza ukryty katalog

W zmiennej char nazwa[] podajemy nazwę pliku do sprawdzenia.

 

Użyta jest jedynie jedna funkcja przerwania IT 21h:

4300hodczytanie atrybutów w CX

 

 

ú         extern int ukryj(char nazwa[]); 

 

Funkcja odczytuje atrybut skrytości a następnie zmienia go na przeciwny. W funkcji nazwa[] dajemy nazwę pliku do ukrycia.

Użyte są następujące funkcje DOSowe przerwania INT 21h:

4300hodczytanie atrybutów do CX

4301h – zmiana atrybutów 

 

 

ú        
extern int zmien_roboczy(char nazwa[]);

 

Funkcja zmienia katalog roboczy na inny podany w nazwie char nazwa[].

Użyta funkcja DOSowa:

3B00h – zmiana katalogu roboczego

 

 

ú         extern int podaj_roboczy(char sciezka[]);

 

Funkcja zwraca nazwę katalogu roboczego do łańcucha sciezka[].

Użyta funkcja DOSu:

4700h – podaj katalog roboczy

 

 

 

Dodatkowo w programie znajdują się trzy funkcje napisane w C:

 

ú         void daj_nazwe(int numer, char nazwa_pliku[]);

Funkcja podaje nazwę pliku o danym numerze w katalogu, jeśli nie ma takiego numeru pliku to zwraca nazwę ostatniego pliku jaki wystąpił.

 

ú         int ile_plikow(void);

Funkcja zwraca ilość plików w katalogu (korzysta z poprzedniej funkcji)

 

ú         void rysuj(void);

Funkcja rysuje ramkę.

 

 

 

Obsługa programu:

Do obsługi programu służą przyciski:

- przesuwa o jedną pozycję do góry

- przesuwa o jedną pozycję w dół

F1 – ukrywa/odkrywa dany plik/katalog

F2 – szyfruje/odszyfrowuje dany plik wg podanego klucza. Po podaniu klucza program pyta się o zatwierdzenie (N/T)

ESC – wyjście z programi

ENTER – po naciśnięciu można „wejść” do danego katalogu

Zgłoś jeśli naruszono regulamin