- •Лабораторная работа № 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
- •Программирование с использованием драйвера мыши.
- •Пример выполнения работы.
Вопросы по теме работы.
1.Назначение таблицы размещения файлов (FAT).
2. Схема получения списка кластеров, отведенных файлу.
3. Какие функции имеет подпрограмма обслуживания прерывания 13Н ?
4. В чем состоит процесс форматирования дискеты?
5. Как защитить дискету от копирования функциями BIOS ?
6. Как восстановить удаленный с дискеты файл ?
7. Какова структура записи о файле в корневом каталоге ?
8. Что и как изменяет на дискете команда DELETE ( ERASE ) DOS ?
Приложение а. Функция disk_status
- получает код ошибки в регистре AL
- если произошла ошибка - выводится соответствующее сообщение и программа завершается
- если ошибки нет - возвращает управление в вызвавшую программу
disk_status proc near
push ax ; сохраняем
push сx ; используемые
push dx ; регистры
push di ;
push ds ;
push cs ; устанавливаем в DS
pop ds ; сегмент из CS
cmp al,0 ; ошибки нет ?
je st_ok ; выход из подпрограммы
xor di,di ; смещение в списке кодов
mov cx,8 ; рассматриваем 8 возможных кодов ошибки
st_l: cmp al,cs:fs_kod[di] ;найден код в таблице?
je st_out ; да - вывести сообщение
inc di ; иначе - к следующему коду
loop st_l ;
mov di,8 ; если код не опознан
st_out: mov ax,di ; содержимое DI, умно-
mul cs:fs_len ; женное на длину строки
lea dx,fs ; дает смещение соотв.
add dx,ax ; сообщения в таблице fs
mov ah, 9 ; вывод сообщения
int 21h ;
mov ax,4c00h ; завершение программы
int 21h ;
st_ok: pop ds ;
pop di ; восстанавливаем
pop dx ; сохраненные
pop cx ; регистры
pop ax
ret
fs db 10,13, "Неправильная команда",10,13,"$"
db 10,13,"Не найдена адресная метка",10,13, "$"
db 10,13,"Диск защищен от записи", 10,13, "$"
db 10,13,'Сектор не найден ",10,13,"$'
db 10,13, "Произошла замена дискеты ",10,13,"$'
db 10,13, "Неправильный номер дорожки', 10,13,'$'
db 10,13,'Сбой контроллера ",10,13,"$'
db 10,13,'Сбой при поиске дорожки ",10,13,"$'
db 10,13,'Нераспознанная ошибка ",10,13,"$'
fs_len db 31
fs_kod db 1.2,3,4,6,0ch,20h,40h
disk_status endp
Приложение в. Параметры 360к дискеты.
Дискета имеет две стороны (0-1), по 40 дорожек ( 0-39 ) и по 9 секторов на каждой дорожке ( 1-9 ). Любая дискета содержит загрузочный (BOOT ) сектор, две копии FAT и корневой каталог ( ROOT-DIR ). Для 360К дискеты FAT содержит 2 сектора, корневой каталог - 7 секторов.
-
Распределение пространства дискеты
Сторона
Сектор
Дорожка
Содержимое
0
0
1
BOOT
0
0
2
FAT1
0
0
3
FAT1
0
0
4
FAT2
0
0
5
FAT2
0
0
6
ROOT-DIR
0
0
7
ROOT-DIR
0
0
8
ROOT-DIR
0
0
9
ROOT-DIR
1
0
1
ROOT-DIR
1
0
2
ROOT-DIR
1
0
3
ROOT-DIR
1
0
4
данные
…
…
…
данные
Первый байт FAT - идентификатор носителя (media ID), два других всегда FFH, FFH. Для 360К дискеты ID=FDH, под каждый кластер выделяется полтора байта (12 бит). Последний кластер файла содержит значение FF8H - FFFH. Плохой кластер отмечается в FAT значением FF7H. Нумерация кластеров с 2. В каждом кластере по 2 сектора. Корневой каталог состоит из 32 байтных записей о файле. Запись имеет следующую структуру: (см. рисунок -->)
0 ..........………………….….….……..... 31