- •Лабораторная работа № 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).
Поле RW определяет способ загрузки 2-байтных констант через 1-байтный порт. Если в этом поле задано значение 00, то это определяет команду CLC. Команда CLC выполняет фиксацию текущего содержимого счетчика СЕ в буферном регистре OL. Это позволяет узнать состояние счетчика, не влияя на работу таймера. Код канала, для которого выполняется команда, должен быть указан в поле SC. Поля М и BCD при этом не используются.
Если в поле SC задано значение 11, то это определяет команду RBC. Формат команды RBC чтения слова состояния канала (см. рис.2). С помощью этой команды можно выполнять операции чтения состояния каналов либо запоминание регистров счетчиков каналов. Можно выполнять эти операции как для отдельного канала, так и для всех каналов одновременно.
После того, как в управляющий регистр отправлена команда RBC, можно прочитать состояние канала (или каналов) из соответствующего порта, интерпретировав его следующим образом (см. рис. 3).
Использование каналов в ibm pc.
Канал 0 микросхемы используется в качестве системного таймера, он работает в режиме 3. Выход OUT канала 0 подключен к линии запроса на прерывание IRQO и вырабатывает прерывание INT 8h 18.2 раза в секунду ( точное значение - 1193180/65536 раза в секунду, (CR)=0000).
Формат слова состояния канала (рис.3).
При инициализации BIOS устанавливает свой обработчик для прерывания таймера. Он каждый раз увеличивает на 1 текущее значение 4-байтовой переменной, располагающейся в области данных BIOS по адресу 0040:006Сh-счетчик тиков таймера. Если этот счетчик переполняется (прошло более 24 часов), в ячейку 0040:0070h заносится 1.
7 6 5 4 3 2 1 0
рис. 1
7 6 5 4 3 2 1 0
рис.2.
Стандартный обработчик прерывания осуществляет также контроль за работой двигателей НГМД. Если после последнего обращения к НГМД прошло более 2 секунд, обработчик прерывания выключает двигатель.
7 6 5 4 3 2 1 0
рис. 3
Еще одно действие, которое выполняет обработчик прерывания таймера, - вызов пользовательского прерывания 1Ch. После инициализации системы вектор 1Ch указывает на команду IRET.
Канал 1 работает в режиме 2, (CR) = 18 и используется для управления регенерацией памяти. Сигнал на регенерацию появляется каждые 15 мсек (Трег =1/ (1193800/18)= 15*10 ). Выход OUT канала 1 подключен ко входу канала 0 ПДП, который по сигналу таймера производит регенерацию памяти. Увеличение значения счетчика позволяет увеличить производительность процессора, однако, это может привести к потере данных в ОЗУ.
Канал 2 используется для генерации звука. Его выход OUT подключен к входу встроенного динамика. Для генерации сигналов применяется обычно режим 3. Для получения требуемой частоты звучания f, необходимо определить значение регистра (CR) = 1193180/f.
Микросхема таймера использует для обмена информацией следующие порты ввода/вывода:
Адрес |
Операция |
Назначение |
40h |
запись |
Загрузка счетчика канала 0 |
|
чтение |
Чтение счетчика канала 0 |
41h |
запись |
Загрузка счетчика канала 1 |
|
чтение |
Чтение счетчика канала 1 |
42h |
запись |
Загрузка счетчика канала 2 |
|
чтение |
Чтение счетчика канала 2 |
43h |
запись |
Запись управляющего слова в регистр режима канала |
Пример: прочитать слово состояния канала 0.
…
mov al,11100010b ;команда RBC: не запоминать СЕ, читать состояние,
канал 0
out 43h,al ;засылка в управляющий регистр
in ah,40h ;в АН - слово состояния ;канала 0