Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Описание работы. Темы для предварительной проработки




Темы для предварительной проработки

Цель работы

Содержание отчета

Индивидуальные задания

Особенности программирования

5.1. На языке Турбо-Паскаль.

5.1.1. При использовании программного прерывания необходимо:

- подключить модуль Dos, в котором описаны процедура Intr и

тип переменной Registers;

- объявить переменную этого типа, например, reg:Registers;

- к регистрам микропроцессора обращаться, как reg.ah, reg.al

и т.д.;

- процедуру прерывания 13H вызывать следующим образом:

Intr($13,reg).

 

5.1.2. Область памяти, куда считывается содержимое сектора

каталога удобно объявить как массив записей (см. табл. 1):

 

var

sec_cat:array[1..16] of record

name:array[1..8] of char;

name_e:array[1..3] of char;

atr:byte;

rez:array[1..10] of byte;

time,

date,

n_clast:word;

size:longint

end;

 

Необходимые значения сегмента и смещения адреса области памяти

можно задать, используя функции Seg и Ofs:

 

reg.es:=Seg(sec_cat);

reg.bx:=Ofs(sec_cat);

 

5.1.3. Для выделения полей времени и даты использовать выраже-

ния, приведенные на рис. 1 и рис. 2. Символу & в Паскале соответс-

втвует операция AND, а символу >> - Shr (сдвиг вправо).

 

5.2. На языке Турбо-Си.

 

5.2.1. При использовании программного прерывания необходимо:

- подключить библиотеку Dos, в котором описаны процедура Int86x и

тип смеси REGS директивой:

#include <dos.h>

- объявить переменные смеси:

union REGS in,out,sr;

- к регистрам микропроцессора обращаться, как in.h.ah, in.x.ax;

- к сегментным регистрам обращаться, как sr.es;

- процедуру прерывания 13H вызывать следующим образом:

Int86x(0x13,&in,&out,&sr).

5.2.2. Область памяти, куда считывается содержимое сектора

каталога удобно объявить как шаблон структуры(см. табл. 1):

struct sec_cat{

unsigned char name[8];

unsigned char name_e[3];

unsigned char atr;

unsigned char rez[10];

unsigned int time;

unsigned int date;

unsigned int n_clast;

unsigned long size;

};

и определить массив структур

struct sec_cat sec[16];

Тогда необходимые значения сегмента и смещения адреса области

памяти можно задать, используя функции FP_SEG() и FP_OFF():

sr.es=FP_SEG(sec[0].name[0]);

in.x.bx=FP_OFF(sec[0].name[0]);

5.2.3. Для выделения полей времени и даты использовать выраже-

ния, приведенные на рис. 1 и рис. 2.

Индивидуальные задания в данной лабораторной работе определе-

ны в п. 4.

7.1.Тема лабораторной работы.

7.2.Цель работы.

7.3.Индивидуальное задание.

7.4.Текст программы.

7.5.Результаты работы программы.


Лабораторная работа 8 СТРУКТУРА ТАБЛИЦЫ РАЗМЕЩЕНИЯ ФАЙЛОВ FAT

Изучение структуры таблицы размещения файлов и приобретение

практических навыков определения последовательностей кластеров,

принадлежащих одному файлу.

2.1.Организация таблицы размещения файлов FAT.

3.1. Назначение FAT.

Диск использует таблицу размещения файлов (FAT) для отведения

дискового пространства файлам и хранения информации о свободных

секторах. Из соображений безопасности на всех дисках хранятся по

две копии FAT. Они хранятся последовательно начиная с первого сек-

тора FAT. Для дискеты первым сектором FAT будет сектор, следующий

за корневым сектором, т.е. сектор с координатами: дорожка 0, сто-

рона 0, сектор 2. Для жесткого диска первый сектор FAT определяет-

ся с помощью таблицы разделов и таблицы корневого сектора (см.

лаб. раб. "Структура дисков"). Число секторов, занимаемых FAT, оп-

ределяется типом и форматом диска и указывается в таблице корнево-

го сектора.

Таблица размещения файлов хранит информацию о каждом кластере

файла на диске. Кластер - это группа смежных секторов. Величина

кластера,которая для разных типов дисков и форматов может быть

разной, указывается в таблице корневого сектора. Кластеры были

введены с целью уменьшения размера FAT.

3.2. Организация FAT.

Каждая позиция в таблице размещения файлов соответствует опре-

деленной позиции кластера на диске. Обычно файл занимает несколько

кластеров и запись в каталоге файлов содержит номер стартового

кластера, в котором находится начало файла. Посмотрев позицию FAT,

соответствующую первому кластеру, DOS находит номер кластера, в

котором хранится следующая порция файла. Этому кластеру соответс-

твует своя запись в FAT, которая в свою очередь содержит номер

следующего кластера в цепочке. Для последнего кластера, занятого

файлом, FAT содержит значения от FF8H до FFFH. Неиспользуемым (или

освобожденным) кластерам соответствует значение 000, а дефектным

секторам -FF7H. Наконец, значения от FF0H до FF7H приписываются

резервным кластерам.

На рис. 1 приведены элемент корневого каталога, описывающего

файл с именем MYFILE.TXT, и фрагмент таблицы размещения файлов,

определяющей размещение этого файла на диске:

 

номер начального кластера ══╗

╓───────────────────┬─┬───────────────────┬───┬───┬───┬───────╖

║M Y F I L E T X T│a│ │ t │ d │08 │ длина ║

╙─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─╫─┴─┴─┴─┴─╜

╔═════════════════════════╝

00 01 02 03 04 05 06 07 ║8 09 0a 0b 0c 0d 0e 0f

┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌­─┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐

00│ID││ff││03═04═05═ff││00││00││09═0a═0b═15││00││00││00││00│

└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└╫─┘└──┘└──┘└──┘└──┘

╔═══════════════════════╝

┌──┐┌──┐┌──┐┌──┐┌──┐┌­─┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐

10 │00││00││00││00││00││16═17═19││f7││1a═1b═ff││00││00││00││00│

╚═══════╝

Рис. 1

Этот рисунок иллюстрирует основные концепции FAT. Из него видно,

что 2:

-Файл MYFILE.TXT занимает 10 кластеров. Первый кластер - это

кластер 08, последний кластер - 1bH. Цепочка кластеров - 8, 9, 0a,

0b, 15, 16, 17, 19, 1a, 1b. Каждый элемент указывает на следующий

элемент цепочки, а последний элемент содержит специальный код.

- Кластер 18H помечен как плохой и не входит в цепочку распре-

деления.

- Кластеры 6,7, 0cH-14H и 1cH-1fH пусты и доступны для распре-

деления.

-Еще одна цепочка начинается с кластера 2 и кончается класте-

ром 5. Чтобы узнать имя файла, нужно отыскать элемент оглавления с

начальным номером кластера 02.

Для всех гибких дисков размер ячейки таблицы размещения файлов

равен 12 битов, что позволяет обращаться к 4096 кластерам. Что ка-

сается жестких дисков, то они могут использовать MS DOS как c 12-

битными FAT, так и с 16-битными FAT. Тип используемой FAT указан в

таблице разделов.

 

3.3. Работа с FAT.

Рассмотрим особенности работы с 12-битной FAT.

Номер кластера содержит 3 шестнадцатиричные цифры, для хране-

ния которых требуется 1 1/2 байта. Для уменьшения размеров FAT

числа для двух соседних кластеров хранятся в трех последовательных

байтах таблицы. MS-DOS автоматически производит все необходимые

вычисления.

Первые три байта FAT не используются доля номеров кластеров.

Первый байт содержит код, определяющий тип диска, а следующие два

байта равны FFH. Поскольку эти позиции таблицы заняты, то кластеры

нумеруются, начиная с 2, причем кластеры 2 и 3 занимают вторую

тройку байтов таблицы.

Для нахождения следующего кластера файла необходимо произвести

следующие действия:

- Умножить номер кластера на 3.

- Разделить результат на 2 с отбрасыванием дробной части.

- Прочитать 2 байта из FAT с полученным относительно начала

FAT смещением.

- Если исходный номер кластера четный, то взять младшие 12

бит (т.е. наложить маску 0fffH), иначе взять старшие 12 бит (т.е.

сдвинуть на 4 вправо).

 

3.4. Чтение сектора диска в память.

Для чтения содержимого требуемого сектора в указанную область

памяти используется функция 2 прерывания 13h. При этом регистры

имеют следующее назначение:

ah - номер функции;

dl - номер дисковода: 0 - "A", 1 - "B", $80 - жесткий диск;

dh - номер головки (стороны);

ch - номер дорожки (цилиндра);

cl - номер сектора;

al - число секторов;

es - значение сегмента адреса области памяти;

bx - значение смещения адреса области памяти.

Если функция прерывания выполнена без ошибок, то флаг переноса

CF (младший разряд регистра флагов Flags) установлен в 0 и регистр

ah содержит 0. Если флаг переноса установлен в 1, значит была

ошибка и регистр ah содержит код ошибки (байт состояния). В табли-

це 1 приведен формат байта состояния для дискеты.

Таблица 1

Байт состояния дискеты

────────────────────────────────────────────────────────────────

Биты

7 6 5 4 3 2 1 0 Значение

────────────────────────────────────────────────────────────────

....... 1 Неверная команда: неправильный запрос

к контроллеру дискеты

...... 1. Плохой адресный маркер: неверная маркировка

идентификатора сектора или маркер не найден

..... 1.. Плохой сектор: на дискете нет заданного

сектора

.... 1... Ошибка прямого доступа к памяти (DMA)

 

... 1.... Ошибка циклического кода: ошибка в четнос-

ти данных при чтении дискеты

.. 1..... Ошибка контроллера дискеты: неисправность

контролллера дискеты

. 1...... Ошибка поиска: ошибка при перемещении на

заданную дорожку

1....... Тайм-аут: дисковод не отвечает

...... 1 1 Ошибка защиты записи: попытка записи на за-

щищенную дискету

.... 1.. 1 Ошибка границы DMA: попытка обращения за пре-

делы области 64K

───────────────────────────────────────────────────────────────




Поделиться с друзьями:


Дата добавления: 2014-12-07; Просмотров: 398; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.008 сек.