Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СПО / ЛАБ_FS_1.doc
Скачиваний:
25
Добавлен:
03.03.2016
Размер:
558.08 Кб
Скачать

Лабораторна робота №3

Сканування жорсткого диску на предмет пошуку логічних розділів

Мета лабораторної роботи- дослідження структури першого завантажувального сектора (MBR), та алгоритму іменування логічних дисків.

1.Сканування жорсткого диску на предмет пошуку логічних розділів.

Вся інформація, необхідна для початкового завантаження ОС, перебуває в першому секторі жорсткого диска. Ця інформація називається головним записом завантаження — MBR(Master Boot Record). Структура MBR наведена у таблиці 1.1..

Таблиця 1.1 Структура MBR

Зсув

Довжина

Опис

000h

446

Код завантажника

1BEh

64

Таблиця розділів

1BEh

16

Розділ 1

1CEh

16

Розділ 2

1DEh

16

Розділ 3

1EEh

16

Розділ 4

1FEh

2

Сигнатура 55ААh

MBR розташована на початку жорсткого диску за фізичною адресою 0-голівка, 0-доріжка, 1- сектор. При використанні абсолютної адреси номер сектора , за яким розташовано MBR дорівнює нулю. Код читання MBR представлений нижче

//опис шаблону пакета

struct paket{

byte size; //розмір пакету

byte reserw; //резерв

word anzahl; //кількість секторів для читання/запису

dword buf; //буфер, у який здійснюється читання/запис

dword ml; //молодша частина адреси по якій здійснюється читання/запис

dword st; //старша частина адреси по якій здійснюється читання/запис

} Paket;

//ініціалізація елементів пакету

Paket.size=0x10; //розмір пакету дорівнює 16 байтам

Paket.reserw=0; //резерв 0

Paket.anzahl=1; //читаємо один сектор

Paket.buf=(dword)((struct mbr far*)(MBR)); //читаємо у перемінну MBR

Paket.ml=sektor; //sektor = 0

Paket.st=0;

//ініціалізація вхідних параметрів для INT13(читання даних)

_DS=FP_SEG((struct paket far*)(&Paket)); //в DS записуємо сегмент пакета

_SI=FP_OFF((struct paket far*)(&Paket)); //SI записуємо зсув пакета

_AH=0x42; //AH записуємо код функції

_DL=drive; //DL номер жорсткого диску(80h,81h …)

geninterrupt(0x13); //виклик int13h

if(_FLAGS&0x0001)//перевірка на наявність

//Помилка //помилок

}

//Продовження основної програми

Структура MBR містить чотири розділи Partition Table (PT), отже на одному жорсткому диску може бути розташовано до чотирьох основних розділів, один із яких може бути завантажувальним. Якщо розділ є завантажувальним, то розміщений на ньому логічний диск повинен містити готову до роботи копію операційної системи, якій буде передане керування при завантаженні комп'ютера з жорсткого диску.   СтруктураPartition Table наведена у таблиці 1.2.

Таблиця 1.2 Структура елемента Partition Table

Зсув

Довжина(байт)

Опис

00h

1

Ознака активності розділу

01h

1

Початок розділу - голівка

02h

1

Початок розділу - сектор (біти 0-5), доріжка (біти 6,7)

03h

1

Початок розділу - доріжка

04h

1

Код типу розділу

05h

1

Кінець розділу - голівка

06h

1

Кінець розділу - сектор (біти 0-5), доріжка (біти 6,7)

07h

1

Кінець розділу - доріжка

08h

4

Відносний номер першого сектору розділу

0Ch

4

Кількість секторів розділу

У межах основного розділу може розміщатися тільки один логічний диск. Якщо чотирьох розділів не досить для конфігурування системи, використовується розширений розділ. Розширений розділ може містити кілька логічних дисків.

Соседние файлы в папке СПО