Temat: System plików FAT12
Prowadzący Wykonawcy:
mgr inż. Arkadiusz Chrobot Marcin Młynarczyk
Kamil Zwoliński
Wstęp.
Zadaniem szóstych ćwiczeń laboratoryjnych było zapoznanie się z zarządzaniem i posługiwaniem się informacjami zapisanymi na dyskietce w systemie plików FAT12.
Wykonanie.
System plików jest abstrakcyjną strukturą, której zadaniem jest ułatwienie zarządzania i posługiwania się informacjami zapisanymi na dyskietce. W przypadku systemu DOS jest to system FAT12. Informacje na dyskietce są przechowywane w sektorach o pojemności 512B. Sektory są zorganizowane w ścieżki, które mają postać okręgów. Ścieżki są koncentrycznie ułożone po stronach elastycznego dysku. Aby odczytać dane z dyskietki należy podać: numer sektora na ścieżce, numer ścieżki na stronie i numer głowicy obsługującej stronę.
Pierwszy sektor dyskietki zawiera MBR (Master Boot Rekord). MBR jest to rekord zawierający informacje o organizacji logicznej nośnika, takie jak: wielkość sektorów w bajtach, liczba sektorów na ścieżce, maksymalna ilość plików w katalogu głównym, liczba sektorów zajmowanych przez tablicę alokacji pliku, liczba kopii tablicy alokacji i inne. Za MBR znajdują się tablice alokacji plików FAT. Za tablicami FAT znajduje się obszar katalogu głównego dyskietki. Każda pozycja tego katalogu jest strukturą zawierającą nazwę pliku wraz z rozszerzeniem, jego atrybuty, czas i datę jego utworzenia lub aktualizacji, numer pierwszej JAP (Jednostka Alokacji Pliku) przydzielonej plikowi, oraz rozmiar pliku.
W zadaniu 1 należało napisać program, który odczyta zawartość MBR i wyświetli na ekran takie informacje, jak: wielkość sektora w bajtach, liczba sektorów w JAP, liczba kopii tablicy FAT, maksymalna liczba plików w katalogu głównym, liczba sektorów zajętych przez tablicę FAT, liczba stron dysku, liczba sektorów na ścieżce.
W tym programie używaliśmy przerwań BIOSu $13. W wierszach od 23 do 44 stworzyliśmy procedurę odczyt, która odczytuje sektor z dyskietki. W wierszu 26 do rejestru ah zostaje przypisany numer funkcji (02 w kodzie szesnastkowym) odczytującej sektor z dyskietki. W wierszu 27 do rejestru al przypisujemy 1, czyli ilość sektorów które chcemy odczytać. W wierszu 28 do rejestru ch przypisujemy numer cylindra. W wierszu 29 do rejestru cl przypisujemy 1 (numer sektora na ścieżce, który chcemy odczytać). W wierszu 30 do rejestru dh przypisujemy numer głowicy obsługującej stronę. W wierszu 31 do rejestru dl przypisujemy numer napędu. W wierszu 32 do rejestru es zapisujemy adres segmentu bufora, w wierszu 33 do rejestru bx adres offsetu bufora. Bufor jest rekordem odpowiadającym strukturze MBR. W wierszu 34 wywołujemy przerwanie. W wierszu 35 zostaje wykonane sprawdzenie czy podczas odczytu sektora nie wystąpił błąd, poprzez sprawdzenie ostatniego bitu w rejestrze flags (0-brak błędu, 1-wystąpił błąd). Wykonuje się to przez porównane zawartości rejestru flags ze stałą fcarry, która ma wartość 0001 (w kodzie szesnastkowym). Wykorzystuje się tu operator logiczny AND, który zwraca 1 jeśli obie porównywane wartości są prawdziwe.
Wnioski.
W ciągu dwóch ćwiczeń laboratoryjnych udało nam się rozwiązać zadanie 1. Napisany przez nas program działał poprawnie.