- •Лабораторная работа № 1.
- •Функция 0ен
- •Функция 1ан
- •Функция 2fh
- •Функция 36н Определяет параметры диска
- •Функция 39н
- •Функция 3ан Удаляет каталог с диска
- •Функция 3вн Меняет текущий каталог на заданный
- •Функция 3сн Создаёт хендл (новый файл) на диске
- •Функция 3dн Открывает хендл (открывает файл) на диске
- •Функция 3ен
- •Функция 3fh
- •Функция 40н
- •Функция 41н
- •Функция 42н
- •Функция 43h
- •Функция 47н
- •Функция 4ен
- •Функция 4fh
- •Функция 56н
- •Функция 57н
- •Функция 5ан
- •Прерывание 25н
- •Прерывание 26н
- •Пример выполнения работы Создать новую директорию new_dir на диске а:, сделать ее текущей, записать туда файл newfile.Txt и в него записать сообщение - "Это вновь созданный файл".
- •Порядок выполнения работы
- •Вопросы по теме работы
- •Лабораторная работа № 2
- •Функция 00н
- •Функция 01н
- •Функция 02н
- •Функция 03н
- •Функция 04н
- •Флаг переноса установлен
- •Функция 05н
- •Пример выполнения работы
- •Порядок выполнения работы
- •Варианты заданий. Не использовать функции dos !!!.
- •Вопросы по теме работы.
- •Приложение а. Функция disk_status
- •Приложение в. Параметры 360к дискеты.
- •Лабораторная работа № 3
- •Основные сведения
- •Функция Назначение
- •Функция 00н
- •Функция 01h
- •Функция 02h
- •Функция 03h
- •Пример выполнение работы
- •Контрольные вопросы
- •Лабораторная работа № 4
- •Основные сведения
- •Функция 00h
- •Функция 01h
- •Функция 02h
- •Система команд матричного принтера
- •Система команд принтера фирмы Epson.
- •Команды форматирования текста
- •Команды печати графических изображений.
- •Пример выполнения работы.
- •Порядок выполнения работы
- •Варианты заданий.
- •Контрольные вопросы
- •Лабораторная работа № 5 Таймер и генерация звука.
- •Форматы управляющих команд таймера.
- •Использование каналов в ibm pc.
- •Генерация звука.
- •Частоты нот для второй октавы
- •Варианты заданий.
- •Вопросы по теме работы.
- •Лабораторная работа № 6 Работа с драйвером мыши.
- •Обращение к драйверу мыши из ассемблера
- •Функции драйвера мыши.
- •Функция 00h
- •Показать курсор
- •Функция 06н
- •Функция 07h
- •Функция 08h
- •Функция 09h
- •Функция 0Ah
- •Функция 0Bh
- •Функция 0Сh
- •Функция 0Dh
- •Функция 0Eh
- •Функция 0Fh
- •Функция 10h
- •Функция 13h
- •Функция 15h
- •Функция 16h
- •Функция 17h
- •Функция 18h
- •Программирование с использованием драйвера мыши.
- •Пример выполнения работы.
Порядок выполнения работы
Написать программу на языке ассемблера согласно варианту задания. Максимально использовать дружественный интерфейс с пользователем, обеспечить выдачу сообщений о всех возможных ошибках ( см. процедуру disk_status в Приложении А ).
Варианты заданий. Не использовать функции dos !!!.
1. Написать программу FORMAT, форматирующую в дисководе А двустороннюю дискету на 360К. (Использовать прерывание 13Н). При обнаружении сбойных секторов программа должна выводить соответствующее сообщение и прекращать работу. (см. Приложение В).
2. Написать программу, форматирующую 41 дорожку 360К- дискеты, с размером сектора, отличным от 512 байт, записывающую и читающую информацию в любой сектор этой дорожки.
3. Написать программу, форматирующую какую-нибудь (например 41-ю) дорожку дискеты, используя обратную нумерацию секторов, записывающую и читающую информацию в любой сектор этой дискеты.
4. Написать программу, восстанавливающую только что удаленный файл. (удаления файла программа не производит. Имя файла известно).
5. Написать программу, создающую новый файл и копирующую в него какой-либо существующий. (Использовать прерывание 13Н).
6. Написать программу, дописывающую к одному файлу - другой и удаляющую второй файл. (Использовать прерывание 13Н ).
7. Написать программу, позволяющую запустить себя 3 раза (не более) и еще одну - ее инсталлирующую. Работа программы состоит в выводе на экран строки «Hello, world !». Возможна следующая схема ( для инсталлятора ):
- найти первый свободный кластер ;
- записать во все байты его первого сектора число 3 ;
- пометить этот кластер в FAT1 и FAT2 как плохой (для программы).
- искать плохие кластеры, первый сектор которых содержит либо 1, либо 2, либо 3 ;
- если таких нет - завершить работу ;
- уменьшить это значение на 1 ;
- если результат больше 0, записать его в сектор, вывести на экран «Hello, world !» и завершить работу ;
- если результат равен 0, пометить кластер как свободный, вывести строку и завершиться.
8. Написать программу, размещающую файл LAB9.TXT в последовательных кластерах, начиная со второго свободного.
9. Написать программу, сохраняющую в файле DISK.SAV FAT и корневой каталог. ( INT 13H).
10. Написать программу, запрашивающую имя файла и изображающую его расположение в FAT.
11. Написать программу, посекторно копирующую одну дискету на другую. ( Использовать прерывание 13Н ).
12. Написать программу, которая, прячет n-й кластер файла LAB9.TXT по следующей схеме :
- кластер помечается в FAT как плохой;
- его номер в FAT и его номер в цепочке ( n ) заносятся в первый свободный кластер дискеты;
- этот кластер помечается как плохой;
- корректируются FAT1 и FAT2.
13. Написать программу, запрашивающую номер кластера и некоторое число num, и добавляющую этот кластер в список кластеров файла LAB9.TXT так, чтобы его порядковый номер в списке был num. (Запрос номера кластера и числа num осуществить средствами DOS ).
14. Написать программу «замок/ключ». Программа запрашивает режим : 0 - «замок», 1 - «ключ» . «Замок» помечает второй кластер файла LAB9.TXT как последний, а все остальные превращает в файлА00000А.000. «Ключ» восстанавливает файл. (Файл занимает последовательные кластеры).
15. Написать программу, которая переписывает файл LAB9.TXT так, чтобы он весь был расположен на одной стороне дискеты.