- •Лабораторная работа № 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
- •Программирование с использованием драйвера мыши.
- •Пример выполнения работы.
Функция 00н
Сброс дисковой подсистемы.
*Вход:
АН = 00Н
DL - номер флоппи-диска ( 0 - А, 1 - В и т.д. )
*Выход:
Если функция завершилась успешно :
Флаг переноса ( CF ) сброшен
АН - 00Н
Если функция завершилась с ошибкой :
Флаг переноса установлен АН - код ошибки ( см. ниже )
*Примечание.
Эта функция используется после неудачной операции записи, чтения, проверки или форматирования перед повтором этой операции.
Функция 01н
Возвращает код состояния дисковой подсистемы.
*Вход:
АН = 01Н DL - дисковод ( 0 - А и т.д. )
*Выход:
АН -00Н
AL - код ошибки
00Н - нет ошибки
01Н - неверная команда
02Н - не найден адресный маркер
03Н - диск защищен от записи
04Н - сектор не найден
06Н - дискета была сменена
08Н - ошибка ПДП
09Н - пересечена граница 64К при ПДП
0СН - неизвестный тип носителя
20Н - сбой контроллера
40Н - ошибка при поиске дорожки
*Примечание.
Возвращает код ошибки предыдущей операции с диском, см. Приложение А.
Функция 02н
Чтение сектора.
*Вход:
АН = 02Н
AL - число секторов
СН - цилиндр
CL - сектор
DH - сторона
DL - дисковод
ES:BX - сегмент :смещение буфера
*Выход:
Если функция завершилась успешно :
Флаг переноса сброшен
АН - 00Н
AL - число прочитанных секторов
Если функция завершилась с ошибкой :
Флаг переноса установлен АН - код ошибки ( см. выше )
* Примечание.
Ошибка может быть вызвана тем, что BIOS не ожидает разгона двигателя дисковода. Рекомендуется, в случае возникновения ошибки, повторять операцию трижды, рекалибруя перед этим дисковод ( функция 00Н).
Функция 03н
Запись сектора.
*Вход:
АН = 03Н
AL - число секторов
СН - цилиндр
CL - сектор
DH - сторона
DL - дисковод
ES:BX - сегмент: смещение буфера
*Выход:
Если функция завершилась успешно :
Флаг переноса сброшен
АН - 00Н
AL - число записанных секторов
Если функция завершилась с ошибкой :
Флаг переноса установлен АН - код ошибки ( см. выше )
*Примечание.
См. Примечание к функции 02Н
Функция 04н
Проверка сектора.
*Вход:
АН = 04Н
AL - число секторов
СН - цилиндр
CL - сектор
DH - сторона
DL - дисковод
ES:BX - сегмент: смещение буфера
*Выход:
Если функция завершилась успешно :
Флаг переноса сброшен
АН - 00Н
AL - число проверенных секторов
Если функция завершилась с ошибкой :
Флаг переноса установлен
АН - код ошибки ( см. выше )
* Примечание.
Для ранних версий BIOS буфер по адресу ES:BX обязателен.
Функция 05н
Форматирование дорожки.
*Вход:
АН = 05Н
AL - число цилиндров
СН - цилиндр
DH - сторона
DL - дисковод
ES:BX - сегмент : смещение списка адресных полей
*Выход:
Если функция завершилась успешно :
Флаг переноса сброшен
АН - 00Н
Если функция завершилась с ошибкой :
Флаг переноса установлен АН - код ошибки ( см. выше )
*Примечание.
Список адресных полей состоит из набора 4-байтовых записей, по одной на сектор :
Байт Содержимое
0 цилиндр
1 сторона
2 сектор
3 код величины сектора
00Н - 128 байт в секторе
01Н - 256 байт в секторе
02Н - 512 байт в секторе
0ЗН - 1024 байта в секторе
Например, для форматирования дорожки с девятью секторами по 512 байт, ES:BX должен указывать на 36-байтовый массив
DB 0,0,1,2, 0,0,2,2, 0,0,3,2
DB 0,0,4,2, 0,0,5,2, 0,0,6,2
DB 0,0,7,2, 0,0,8,2, 0,0,9,2
Таблица параметров дискеты ( DPT ). При загрузке BIOS создает DPT ( Diskette Parameter Table ), которая содержит характеристики необходимые контролеру НГМД. Таблица состоит из 11 байт :
Байт |
Содержание |
для 360К |
0 |
Задержка для переключения, разгрузки головки чтения/записи |
df |
1 |
Использование прямого доступа к памяти и время загрузки головок ч/з |
02 |
2 |
Задержка перед выключением двигателя |
25 |
3 |
Код размера сектора (0 - 128 байт, 1 - 256 байт, 2 - 512 байт, 3 - 1024 байта) |
02 |
4 |
Номер последнего сектора на дорожке |
09 |
5 |
Длина межсекторного промежутка для чтения/записи |
02 |
6 |
max длина передаваемых данных, если не задана длина сектора |
ff |
7 |
Длина межсекторного промежутка для операции форматирования |
50 |
8 |
Байт-заполнитель для форматирования ( обычно F6H ) |
f6 |
9 |
Время установки головки ч/з |
0f |
10 |
Время запуска двигателя в 1/8 С |
08 |
Третья колонка - значения для 360К дисковода (в 16-й системе счисления). Наиболее полезная информация - размер сектора. Если нужно форматировать дорожку с нестандартным размером сектора (не 512 байт), необходимо перед форматированием изменить соответствующее значение в DPT. (После форматирования — восстановить). Вектор 1ЕН содержит не адрес подпрограммы обработки этого прерывания, а адрес DPT.