Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ВССиТ / МУ-Программирование устройств-ПЗ.docx
Скачиваний:
52
Добавлен:
28.03.2015
Размер:
243.95 Кб
Скачать

4.2 Организация работы с файлами

Язык ассемблера не содержит средств для работы с файлами. При возникновении такой необходимости программа должна включать в себя фрагменты кода, в которых производится обращение к средствам операционной системы (ОС), которые осуществляют взаимодействие с файловой системой. Согласно /1,2/, современному программисту часто приходится сталкиваться с необходимостью программирования под ОС MS DOS. Средства работы с файлами этой ОС в плане совместимости поддерживаются различными реализациями Windows. Можно выделить четыре аспекта работы с файлами из программ на ассемблере:

1) работа с системой файлового ввода-вывода MS DOS, использующей короткие имена;

2) работа с системой файлового ввода-вывода MS DOS, использующей длинные имена файлов (длиной до 255 символов);

3) работа с системой файлового ввода-вывода Win32;

4) использование файлов особого вида, поддерживаемых Win32.

В дальнейшем будут рассмотрены основные функции работы с файлами под управлением MS DOS, использующей короткие имена (до 8 символов). С одной стороны, использование этих функций не требует специальной подготовки и знаний работы под Win32, с другой – даёт достаточно полное представление об особенностях работы с файлами из программ на ассемблере.

4.2.1 Управление дисками и каталогами

В соответствии с /5/, поверхность диска разделена на ряд концентрических колец (дорожек), которые, в свою очередь, делятся радиально на сектора. Дисковые сектора определяются магнитной информацией, которую записывает утилита форматирования диска. Для всех типов дисков в MS DOS размер сектора равен 512 байт. Файл располагается на таком количестве секторов, которое необходимо для его полного размещения. Диск использует таблицу размещения файлов (File Allocation TableFAT) для отведения дискового пространства файлам и хранения информации о свободных секторах. FAT хранит информацию о каждом кластере секторов на диске. Кластер – это группа стандартных секторов размером 512 байт. Каждая позиция в FAT соответствует определённой позиции кластера на диске. Обычно файл занимает несколько кластеров, и запись в каталоге файлов содержит номер стартового кластера, в котором находится начало файла. Просмотрев позицию FAT, соответствующую первому кластеру, MS DOS находит номер кластера, в котором хранится следующая порция файла и т.д. по цепочке.

Каждый диск имеет один корневой каталог, с которого начинается поиск всех каталогов. Корневой каталог может содержать элементы, указывающие на подкаталоги, которые, в свою очередь, могут содержать ссылки на другие подкаталоги. Корневой каталог всегда расположен в определённых секторах диска. Подкаталоги хранятся как обычные дисковые файлы и могут располагаться в любом месте диска. Каталоги имеют различные размеры в зависимости от размера диска и его разбиения на разделы. Как корневой каталог, так и подкаталоги используют 32 байта для хранения информации об одном файле. Описание структуры 32-байтового поля (дескриптора) файла представлено в таблице 4.1.

Точка между именем файла и его расширением не хранится. Все поля выровнены по левой границе, а пустые байты заполняются пробелами. Атрибут файла определяет, является ли он скрытым, защищённым от записи и т.п. Он также определяет специальные элементы каталога: подкаталоги, метка тома. Информация о времени и дате упакована, поэтому для чтения этих значений требуются битовые операции.

Таблица 4.1 – Описание структуры дескриптора файла

Номера байтов

Назначение байтов

0-7

Имя файла

8-10

Расширение файла

11

Атрибут файла

12-21

Зарезервировано

26-27

Начальный кластер

38-31

Размер файла

Начальный кластер указывает на позицию в таблице FAT. Поскольку файл обычно не целиком занимает последний отведённый ему кластер, то в поле «Размер файла» хранится точная длина файла в байтах.

Рассмотрим несколько функций для работы с дисками и каталогами.