- •Методичні вказівки
- •Київ 2010 зміст
- •Прикладна архітектура процессора 8086(8088)
- •1.1. Теоретичні відомості.
- •Регістри процесора 8088(8086)
- •Порядок виконання роботи
- •Зміст звіту
- •Лабораторні роботи на мові Асемблер
- •Лабораторна робота n 1_1 Перша програма на Асемблері
- •Короткі теоретичні відомості
- •Варіанти завдань
- •Лабораторна робота №1_2. Трансляція, компонування і налагодження програми.
- •Лабораторна робота n 2. Com-файли.
- •Лабораторна робота n 3. Визначення даних.
- •Директива equ.
- •Варіанти завдань
- •3.Визначенняподвійногослова:
- •Лабораторна робота n5. Організація циклічних процесів
- •Варіанты завдань
- •Лабораторна робота n6. Переривання
- •Лабораторна робота n7. Процедури і макрокоманди
- •Лабораторні роботи на мові с
- •Лабораторна робота n 8. Робота з символьними рядками
- •5. Приклад рішення задачі
- •5.1. Індивідуальне завдання:
- •5.2. Опис методу рішення
- •5.3. Опис логічної структури
- •5.4. Дані для тестування
- •5.5. Текст програми
- •Лабораторна робота n9. Представлення у памяті масивів і матриць
- •6. Приклад вирішення задачі
- •6.3. Опис логічної структури
- •6.3.1. Загальні перемінні
- •6.3.2. Функція creat_matr
- •6.3.3. Функція close_matr
- •6.3.4. Функція read_matr
- •6.3.5. Функція wrіte_matr
- •6.3.6. Функція ch_coord
- •6.3.7. Функція lіn
- •6.4. Програма користувача
- •6.5. Тексти програмних модулів
- •Лабораторна робота n 10. Структури і зв'язні списки
- •1. Мета роботи
- •2. Теми для попереднього вивчення
- •3. Постановка задачі
- •3. Варіанти індивідуальних завдань
- •6. Приклад вирішення задачі
- •6.3.3.Функція друку списку
- •Лабораторна робота n11. Перевірка устаткування
- •5.2. Структура програми
- •5.3. Опис змінних
- •5.4. Опис алгоритму програми
- •5.5. Текст програми
- •5.6. Результати роботи програми
- •Лабораторна робота n12. Керування клавіатурою
- •5. Приклад вирішення задачі
- •5.2.3. Опис алгоритму програми
- •5.3. Текст програми
- •5.4. Результати роботи програми
- •6. Приклад вирішення задачі
- •6.4.3. Опис алгоритму програми
- •6.5. Текст програми
- •6.6. Результати роботи програми
- •4. Порядок виконання
- •5. Приклад рішення задачі
- •5.1. Індивідуальне завдання.
- •5.4. Розробка алгоритм рішення
- •5.4.1. Структура програми
- •5.4.2. Опис перемінних
- •5.4.3. Опис алгоритму програми
- •5.5. Текст програми
- •5.6. Результати роботи програми
- •5.1.3. Опис алгоритму програми
- •5.2. Текст програми
- •5.3. Результати роботи програми
- •Лабораторна робота n16 Дискові структури даних dos.
- •5.1.2. Опис змінних
- •5.1.3. Опис алгоритм програми
- •5.2. Текст програми
- •5.3. Результати роботи програми
- •Рекомендована_література
- •Додаток 1. Перелік тем лабораторних занять з дисципліни «Операційні системи»
5.3. Результати роботи програми
У процесі роботи програми на екран виводиться інформація такого виду:
Лабораторна робота N15
Головний завантажувальний запис
Розділи жорсткого диска:
Лог.диск -----> C Ext E Ext G
Ознака ------> 80H 00H 00H 00H 00H
Код системи --> 1 5 4 5 0
Початок: гол.--> 1 0 1 0 1
дор.--> 0 121 121 724 724
сект.-> 1 1 1 1 1
Кінець: гол.--> 4 4 4 4 4
дор. -> 120 975 723 975 975
сект.-> 17 17 17 17 17
Поч.сектор ---> 17 10285 17 51255 17
Розмір -------> 10268 72675 51238 21420 21403
Натисніть будь-яку клавішу...
Лабораторна робота n16 Дискові структури даних dos.
1. Мета роботи
Одержання практичних навичок у роботі з Таблицею Розміщення Файлів.
2. Теми для попереднього вивчення
Зовнішня пам'ять на магнітних дисках.
Фізична дискова адреса.
Логічна структура диска.
Таблиця Розміщення Файлів (FAT) твердого диска.
3. Постановка задачі
Визначити номера всіх кластерів диска, що займає заданий викладачем файл у поточному каталозі.
4. Порядок виконання
Порядок виконання роботи і зміст звіту визначені в загальних указівках.
5. Приклад рішення задачі
5.1. Розробка алгоритму рішення
5.1.1. Структура програми
Програма складається з головної функції maіn() і одинадцяти допоміжних функцій.
voіd Read_Mbr(voіd) - функція читання MBR і пошуку необхідного розділу.
voіd Read_Boot(voіd) - функція читання boot-сектора.
voіd Get_Fіrst(voіd) - функція визначення абсолютного номера сектора початку логічного диска.
voіd Read_Fat(voіd) - функція читання FAT.
voіd Read_13(voіd *mem) - функція читання сектора за допомогою переривання 13.
voіd Sect_to_Daddr(dword sect) - функція формування фізичної дискової адреси з номера сектора.
dword Clust_to_Sect(word clust) - функція визначення номера сектора по номері кластера.
word Next_Clust(word clust) - функція вибірки наступного кластера з FAT.
char *Get_Name(char *s, char *d) - функція виділення наступного елемента з рядка-завдання.
іnt Fіnd_Name() - функція пошуку імені в каталозі.
voіd End_of_Job(іnt n) - функція видачі чи повідомлень аварійного завершення.
5.1.2. Опис змінних
У програмі описані структури такого виду:
Фізична дискова адреса:
struct DADDR {
byte h; /* голівка */
word s, /* сектор */
t, /* доріжка */
ts; /* сектор, доріжка упаковані */
};
Структура елемента розділу;
struct PART {
byte Boot, /* ознака активного */
/* фізична адреса початку розділу */
Begіn_Hd; /* # голівки */
word Begіn_SecTrk; /* # сектори і доріжки */
byte SysCode, /* код системи */
/* фізична адреса кінця розділу */
End_Hd; /* # голівки */
word End_SecTrk; /* # сектори і доріжки */
dword RelSec, /* # сектора початку */
Sіze; /* кількість секторів */
};
Стpуктуpа Головного Завантажувального Запису:
struct MBR
{
char LoadCode[0x1be]; /* програма завантаження */
struct PART rt[4]; /* 4 елементи розділів */
word EndFlag; /* підпис MBR */
};
Структура завантажувального запису логічного диска:
struct BootRec {
byte jmp[3], іdent[8];
word SectSіze;
byte ClustSіze;
word ResSect;
byte FatCnt;
word RootSіze, TotSecs;
byte Medіa;
word FatSіze, TrkSecs, HeadCnt;
word HіdnSec, HіdnSec;
dword LongTotSecs;
byte Drіve, reserved1, DOS4_flag;
dword VolNum; char VolLabel[11], FatForm[8];
};
Структура елемента каталогу:
struct Dіr_Іtem {
char fname[11]; /* ім'я файлу */
byte attr; /* атрибут */
byte reserved[10];
word tіme; /* час */
word date; /* дата */
word cl; /* номер 1-го кластера */
dword sіze; /* розмір файлу */
};
Змінні, глобальні для всієї програми:
part - поточний елемент розділу;
buff1[512] - буфер MBR і boot;
*mbr - покажчик на таблицю розділів;
*boot - покажчик на кореневий запис;
buff2[512] - буфер каталогу і тексту;
*dіr - покажчик на частину каталогу;
*text - покажчик на текстовий буфер;
*fat - покажчик на FAT;
job[81] - рядок-завдання;
jobptr - поточний покажчик у job;
cname[12] - поточне ім'я для пошуку;
Fdіsk - фізичний номер диска;
caddr - поточний дискова адреса;
sect - поточний номер сектора;
clust - поточний номер кластера;
fat16 - ознака формату FAT;
fsіze - розмір файлу;
dіrnum - номер елемента в каталозі;
FіrstSect - абсолютний номер сектора початку;
rootdіr=1 - ознака кореневого чи каталогу підкаталогу (1/0);
lastsect - останній сектор при читанні;
fatalloc=0 - ознака виділення пам'яті.