
- •Информатика лабораторные работы Методические указания
- •Информатика
- •Перевод чисел из одной системы счисления в другую
- •Арифметические операции в позиционных системах счисления
- •4. Контрольные вопросы
- •5. Библиографический список
- •Информатика
- •Элементы схем алгоритмов
- •Символы
- •Пояснительный текст
- •Соединительные линии
- •Основные типы алгоритмических структур
- •Линейная структура
- •Разветвленная структура
- •4. Контрольные вопросы
- •5. Библиографический список
- •Информатика
- •Элементы схем алгоритмов
- •Символы
- •Пояснительный текст
- •Соединительные линии
- •Основные типы алгоритмических структур
- •Циклическая структура
- •4. Контрольные вопросы
- •5. Библиографический список
- •Информатика
- •4. Контрольные вопросы
- •5. Библиографический список
- •Информатика
- •Запуск, редактирование и отладка программы
- •4. Контрольные вопросы
- •5. Библиографический список
- •Информатика
- •Константы
- •Переменные
- •Сводная таблица описания типов данных
- •Операции языка QuickBasic
- •4. Контрольные вопросы
- •5. Библиографический список
- •Информатика
- •4. Контрольные вопросы
- •5. Библиографический список
- •Информатика
- •Функции обработки символьных строк
- •4. Контрольные вопросы
- •5. Библиографический список
- •Информатика
- •4. Контрольные вопросы
- •5. Библиографический список
- •Информатика
- •4. Контрольные вопросы
- •5. Библиографический список
- •Информатика
- •4. Контрольные вопросы
- •5. Библиографический список
- •Информатика
- •Условные операторы
- •4. Контрольные вопросы
- •5. Библиографический список
- •Информатика
- •4. Контрольные вопросы
- •5. Библиографический список
- •Информатика
- •4. Контрольные вопросы
- •5. Библиографический список
- •Информатика
- •4. Контрольные вопросы
- •5. Библиографический список
- •Информатика
- •4. Контрольные вопросы
- •5. Библиографический список
- •Информатика
- •4. Контрольные вопросы
- •5. Библиографический список
- •Информатика
- •4. Контрольные вопросы
- •5. Библиографический список
- •Информатика
- •4. Контрольные вопросы
- •5. Библиографический список
- •Информатика
- •4. Контрольные вопросы
- •5. Библиографический список
- •Информатика
- •4. Контрольные вопросы
- •5. Библиографический список
- •Информатика
- •4. Контрольные вопросы
- •5. Библиографический список
- •Информатика
- •4. Контрольные вопросы
- •5. Библиографический список
- •Информатика
- •4. Контрольные вопросы
- •5. Библиографический список
- •Информатика
- •Работа с субд Microsoft Access 2000
- •Панель кнопок перехода
- •4. Контрольные вопросы
- •5. Библиографический список
- •Информатика
- •Средства архивации файлов
- •4. Контрольные вопросы
- •5. Библиографический список
4. Контрольные вопросы
Назначение и синтакис операторов и функций: INP, OUT, OPEN COM, STICK, STRIG, INP, OUT, WAIT?
Вопросы по процедуре выполнения индивидуального задания.
5. Библиографический список
Бобровский С. Программирование на языке QBASIC для школьников и студентов. — М.: Десс; Инфорком-Пресс, 1999. - 208 с.
Зельднер Г.А. Программируем на языке QuickBASIC 4.5. - М: ABF, 1996. - 432 с.
Введение в программирование на языке Microsoft BASIC: Учебное пособие / Ю.Я. Максимов, С.В. Осипов, А.В. Потемкин, Щ.С. Симоненков. - М.: ”Диалог-МИФИ”,1991. - 176 с.
Министерство образования
Российской Федерации
Тульский государственный университет
Кафедра “Инструментальные и метрологические системы”
Информатика
ЛАБОРАТОРНАЯ РАБОТА № 24
Программирование интерфейса с манипулятором типа "мышь"
для студентов очного обучения
Тула 2000 г.
1. Цель и содержание работы
Целью работы является изучение принципов обеспечения интерфейса с драйвером “мыши”.
Полученные знания и навыки необходимы для выполнения других лабораторных работ, а также практической деятельности.
2. Порядок выполнения работы
Изучить теоретическую часть.
Получить задание у преподавателя.
Выполнить задание.
Оформить отчет.
Защитить работу.
3. Теоретическая часть
Использование манипулятора “мышь” может быть оправдано только в графических программах, которые, в свою очередь, имеют узкую область применения (проектирование, рисование и т.п.). Большинстово же программ ориентированы на текстовый режим экрана.
Процедура MOUSE, использующая прерывание INT 33H:
'$INCLUDE: 'interupt.bi'
DECLARE SUB mouse (G1%, G2%, G3%, G4%)
DEFINT A-Z
SUB mouse (m1, m2, m3, m4)
'______________________________________________________
'Эта процедура обеспечивает интерфейс с драйвером мыши
'm1, m2, m3, m4 - параметры, передаваемые в драйвер мыши
'и возвращаемые оттуда. Они соответствуют регистрам
'процессора AX, BX, CX, DX
'______________________________________________________
n = &H33: 'прерывание 33H
inreg.ax = m1 'входные регистры
inreg.bx = m2
inreg.cx = m3
inreg.dx = m4
CALL interrupt(n, inreg, outreg)
m1 = outreg.ax 'выходные регистры
m2 = outreg.bx
m3 = outreg.cx
m4 = outreg.dx
END SUB
Основные функции прерывания 33Н, и примеры к ним:
Функция 0 показывает текущее состояние драйвера мыши | |||||||
На входе: G1% = 0 |
На выходе: G1%=статус драйвера мыши (-1: установлен, 0: не установлен) G2%=число кнопок мыши (2 или 3 кнопки) | ||||||
Пример: 'Определение состояния драйвера мыши G1% = 0: G2% = 0 CALL mouse(G1%, G2%, G3%, G4%) IF G2% AND 2 THEN PRINT "Двухкнопочная мышь" IF G2% AND 3 THEN PRINT "Трехкнопочная мышь" IF NOT G1% THEN PRINT "Драйвер мыши не установлен" | |||||||
Функция 1 вызывает появление курсора мыши на экране | |||||||
На входе: G1% = 1 |
На выходе: Ничего | ||||||
Пример: 'Включить курсор мыши G1% = 1 CALL mouse(G1%, G2%, G3%, G4%) | |||||||
Функция 2 удаляет курсор мыши с экрана | |||||||
На входе: G1% = 2 |
На выходе: Ничего | ||||||
Пример: 'Выключить курсор мыши G1% = 2 CALL mouse(G1%, G2%, G3%, G4%) | |||||||
Функция 3 читает статус кнопок мыши и координаты курсора | |||||||
На входе: G1% = 3 |
На выходе: G2% = cтатус кнопок G3% = горизонтальная координата курсора G4% = вертикальная координата курсора | ||||||
Пример: 'Прочитать координаты курсора и статус кнопок DO G1% = 3 CALL mouse(G1%, G2%, G3%, G4%) LOCATE 1, 1 PRINT "Координаты мыши : X ="; G3%; "Y = "; G4%; "" IF G2% AND 1 THEN LOCATE 3, 1: PRINT "Левая кнопка" IF G2% AND 2 THEN LOCATE 3, 1: PRINT "Правая кнопка" IF G2% AND 4 THEN LOCATE 3, 1: PRINT "Средняя кнопка" LOOP | |||||||
Функция 4 устанавливает новую текущую позицию курсора мыши | |||||||
Экранный режим |
Разрешение |
Экранный режим |
Разрешение | ||||
0 |
640200 |
9 |
640350 | ||||
1 |
640200 |
10 |
640350 | ||||
2 |
640200 |
11 |
640480 | ||||
7 |
640200 |
12 |
640480 | ||||
8 |
640200 |
13 |
640200 | ||||
На входе: G1% = 4 G3% = новая горизонтальная координата Х G4% = новая вертикальная координата Y |
На выходе: Ничего | ||||||
Пример: 'Установить курсор мыши в верхнем левом углу экрана G1% = 4: G3% = 0: G4% = 0 CALL mouse(G1%, G2%, G3%, G4%) | |||||||
Функция 5 определяет какая кнопка была нажата и ее координаты | |||||||
На входе: G1% = 5; G2% = статус кнопки (0-левая; 1-правая; 2-средняя) |
На выходе: G1% = статус кнопки; G2% = номер нажатой кнопки; G3% = горизонтальная координата курсора в момент последнего нажатия; G4% = вертикальная координата курсора в момент последнего нажатия | ||||||
Пример: 'Прочитать координату нажатой левой кнопки DO G1% = 5: G2% = 0: CALL mouse(G1%, G2%, G3%, G4%) IF G1% AND 1 THEN LOCATE 1, 1: PRINT "Нажата левая кнопка X ="; G3%; "" LOOP | |||||||
Функция 6 - прочитать статус отпущенной кнопки | |||||||
На входе: G1% = 6; G2% = статус кнопки (0-левая; 1-правая; 2-средняя) |
На выходе:G1% = статус кнопки; G2% = номер отпущенной кнопки; G3% = горизонтальная координата курсора в момент последнего нажатия; G4% = вертикальная координата курсора в момент последнего нажатия | ||||||
Пример: 'Прочитать координату отпущенной левой кнопки DO G1% = 6: G2% = 0: CALL mouse(G1%, G2%, G3%, G4%) IF NOT G1% THEN LOCATE 1, 1: PRINT "Нажата левая кнопка X ="; G3%; "" LOOP | |||||||
Функция 7 - ограничить горизонтальное (Х) перемещение курсора | |||||||
На входе: G1% = 7; G2% = минимальная горизонтальная координата курсора; G3% = максимальная горизонтальная координата курсора |
На выходе: Ничего | ||||||
Пример: 'Ограничить горизонтальное перемещение курсора между 100 и 200 G1% = 7: G2% = 100: G3% = 200 CALL mouse(G1%, G2%, G3%, G4%) | |||||||
Функция 8 - ограничить вертикальное (Y) перемещение курсора | |||||||
На входе: G1% = 8; G2% = минимальная вертикальная координата курсора; G3% = максимальная вертикальная координата курсора |
На выходе:Ничего | ||||||
Пример: 'Ограничить вертикальное перемещение курсора между 100 и 200 G1% = 8: G2% = 100: G3% = 200 CALL mouse(G1%, G2%, G3%, G4%) |