
- •Федеральное государственное бюджетное
- •1 Используемое оборудование и программное обеспечение 5
- •2 Общая подготовка к выполнению практических заданий 5
- •3 Общий ход выполнения практических заданий 6
- •4 Основные теоретические положения по программированию устройств персональных компьютеров на языке ассемблера 6
- •5 Процесс ассемблирования и выполнения программы 43
- •Введение
- •1 Используемое оборудование и программное обеспечение
- •2 Общая подготовка к выполнению практических заданий
- •3 Общий ход выполнения практических заданий
- •4 Основные теоретические положения по программированию устройств персональных компьютеров на языке ассемблера
- •4.1 Прерывания и механизм их обработки
- •4.2 Организация работы с файлами
- •4.2.1 Управление дисками и каталогами
- •1) Установка/ проверка дискового накопителя по умолчанию.
- •2) Определение доступного дискового пространства.
- •3) Создание/ удаление подкаталога.
- •4) Получение/ изменение текущего каталога.
- •4.2.2 Подготовка файлов к операциям чтения/ записи
- •1) Создание/ удаление файла.
- •2) Открытие/ закрытие файла.
- •3) Получение/ изменение атрибутов файла.
- •4) Переименование файла.
- •4.2.3 Чтение, запись, позиционирование в файле
- •4.2.3 Организация поиска файлов
- •4.3 Управление клавиатурой
- •4.4 Управление выводом информации на дисплей
- •4.4.1 Вывод символов на экран в текстовом режиме
- •4.4.2 Управление курсором
- •4.4.3 Вывод точечной графики
- •4.5 Управление таймером
- •4.5.1 Работа со счётчиком времени суток
- •4.5.2 Генерация звука
- •4.6 Управление прерываниями. Написание собственного прерывания.
- •4.7 Управление «мышью»
- •5 Процесс ассемблирования и выполнения программы
- •5.1 Получение исполняемого модуля
- •5.2 Работа с отладчиком программ turbo debugger
- •1 2 3 5 4
- •6 Программа на языке ассемблера
- •6.1 Структура программы
- •6.2 Примеры программ
- •7 Практическое занятие № 1. Управление дисплеем. Вывод символов ascii на экран
- •7.1 Цель практического занятия
- •7.2 Контрольные вопросы
- •10 Практическое занятие № 4. Управление клавиатурой. Ввод строки символов
- •14 Практическое занятие № 8. Управление мышью
- •14.1 Цель практического занятия
- •14.2 Контрольные вопросы
- •14.3 Практическое задание
- •15 Практическое занятие № 9. Управление прерываниями. Написание собственного прерывания
- •Приложение а
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 Table – FAT) для отведения дискового пространства файлам и хранения информации о свободных секторах. FAT хранит информацию о каждом кластере секторов на диске. Кластер – это группа стандартных секторов размером 512 байт. Каждая позиция в FAT соответствует определённой позиции кластера на диске. Обычно файл занимает несколько кластеров, и запись в каталоге файлов содержит номер стартового кластера, в котором находится начало файла. Просмотрев позицию FAT, соответствующую первому кластеру, MS DOS находит номер кластера, в котором хранится следующая порция файла и т.д. по цепочке.
Каждый диск имеет один корневой каталог, с которого начинается поиск всех каталогов. Корневой каталог может содержать элементы, указывающие на подкаталоги, которые, в свою очередь, могут содержать ссылки на другие подкаталоги. Корневой каталог всегда расположен в определённых секторах диска. Подкаталоги хранятся как обычные дисковые файлы и могут располагаться в любом месте диска. Каталоги имеют различные размеры в зависимости от размера диска и его разбиения на разделы. Как корневой каталог, так и подкаталоги используют 32 байта для хранения информации об одном файле. Описание структуры 32-байтового поля (дескриптора) файла представлено в таблице 4.1.
Точка между именем файла и его расширением не хранится. Все поля выровнены по левой границе, а пустые байты заполняются пробелами. Атрибут файла определяет, является ли он скрытым, защищённым от записи и т.п. Он также определяет специальные элементы каталога: подкаталоги, метка тома. Информация о времени и дате упакована, поэтому для чтения этих значений требуются битовые операции.
Таблица 4.1 – Описание структуры дескриптора файла
Номера байтов |
Назначение байтов |
0-7 |
Имя файла |
8-10 |
Расширение файла |
11 |
Атрибут файла |
12-21 |
Зарезервировано |
26-27 |
Начальный кластер |
38-31 |
Размер файла |
Начальный кластер указывает на позицию в таблице FAT. Поскольку файл обычно не целиком занимает последний отведённый ему кластер, то в поле «Размер файла» хранится точная длина файла в байтах.
Рассмотрим несколько функций для работы с дисками и каталогами.