- •Лабораторная работа № 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.Опрос положения и клавиш мыши при помощи функции 03h.
2.Написание драйвера событий мыши и установка его при помощи функции 0Сh.
Наиболее популярен второй способ. Драйвер событий является особой функцией, срабатывающей при определенном событии мыши. В приведенном примере драйвер записан как функция handle far proc.
Драйвер событий должен отвечать определенным требованиям которые нужно учитывать. Требования следующие:
1. Состояние регистров после срабатывания функции-драйвера должно оставаться неизменным. Это означает что при входе в драйвер необходимо сохранить регистры в стеке ,а при выхода из драйвера восстанавливаться из стека (см. начало и конец примера).
2. При входе в драйвер мыши регистр DS указывает на сегмент данных обработчика прерывания 33h.
Это означает что для правильного доступа к данным необходимо загрузить в DS сегмент данных программы (не забудьте спасти старое значение в стеке).
Исходя из этих требований алгоритм работы драйвера заключается в следующем:
1) Спасти регистры в стеке.
2) Установить в DS сегмент данных программы.
3) Обработать событие.
4) Восстановить регистры.
5) Возврат (retf).
Пример выполнения работы.
Программа проверяет наличие мыши если она есть выводит символ b и устанавливает свой обработчик события, иначе выдается символ а. Обработчик события по нажатию левой кнопки мыши выдает слово "Привет" в позиции курсора мыши.
cseg segment ;0бъявление сегментов
assume cs:cseg,ds:cseg,es:cseg
handle proc far ; Процедура обработки события
;Сохранение регистров в стеке
push ds
push bx
push сx
push dx
push si
push di
push ax
; Переключение на сегмент данных программы
mov ax, cseg
mov ds,ax
вычисление позиции курсора мыши
shr CX,1; в cx - колонка *8, в dx - строка*8
shr CX,1; получим строку и колонку
shr CX,1; разделим cx и dx на 8 при помощи
shr DX,1 ; сдвига вправо на 3
shr DX,1
shr DX,1
;Позиционирование текстового курсора в позицию курсора мыши
mov dh, dl ; dh - строка
mov dl, cl ; dl - колонка
mov ah, 02h; ah - номер функции (02h)
int 10h
;Вывод слова Привет
mov сx,7
mov di,offset mystr
11: mov al,[di]
int 29h
inc di
loop 11