ВВЕДЕНРР•
В В В В В В В В РњРѕР№ курсовойпроект посвящается созданию программы, рисующей линии междуконтурными точками, расставляемыми вместах, РіРґРµ была нажата левая кнопкамыши. Рто простейший пример, способный показать, что длядемонстрации некоторых функций работы мыши актуальным являетсяприменение языка программирования «Ассемблер».
Мышь – устройство ввода, получившееочень большую популярность. Труднопредставить себе современный компьютер без мыши или эквивалентного ейуказывающего устройства. В качестве эквивалентного устройства может бытьпланшетка или разного рода сенсорные площадки, где управление осуществляетсяпластмассовым карандашом или непосредственно пальцем пользователя.
1 ОБЩРР™ РАЗДЕЛ
Устройство дляручного РІРІРѕРґР° графической информации РІ вычислительную машину, лишь РјРЅРѕРіРѕ позжеполучившее СЃРІРѕС‘ современное название, было придумано, сконструировано изапатентовано Дугласом Рнгельбартом РёР· Стэнфордского университета РІ середине60-ых РіРѕРґРѕРІ прошлого века. Рнгельбарт, известный также как автор графическогопользовательского интерфейса Рё РѕРґРёРЅ РёР· первых разработчиков гипертекстовой«РЅРёРІС‹», был пионером, так что дальше довольно РіСЂРѕРјРѕР·РґРєРѕРіРѕ инеудобного прототипа его мысль РЅРµ пошла. Честь превращениямыши РёР· РєРѕСЂРѕР±РєРё РЅР° РґРІСѓС… наружных колёсах РІ конструкцию, которую сегодня уже начинают забывать — коробочку СЃ шариком, такжевращавшим пару роликов, РЅРѕ помещённых внутри — принадлежит работникамлаборатории Xerox PARC, сделавшим это РІ начале 70-ых РіРі. Наконец, облекли мышкув привлекательную внешне форму Рё выпустили РЅР° массовый рынок исследователишвейцарского РќРР СЃ труднопроизносимым названием (сокращаемым РґРѕ EPFL),работавшие РІ организованной РёРјРё Рё знакомой сегоднякаждому компании Logitech.
 Шли РіРѕРґС‹, менялисьвнешний РІРёРґ Рё количество РєРЅРѕРїРѕРє (РІ конструкции Рнгельбарта была только однаклавиша, Рё этот вариант был сравнительно популярен,РІ частности, РЅР° платформе Mac), Р° принцип работы манипулятораоставался прежним. Шарик собиралпыль, механическая конструкция была инерционной Рё неточной, Рё неудивительно, чтов РѕРґРёРЅ прекрасный день РІ чью-то светлую голову пришла идеяизбавиться РѕС‚ механики, переложивзадачу слежения Р·Р° движениями СЂСѓРєРё пользователяна плечи электроники Рё оптики. Ранний период развитияварианта мыши, получившей название оптической, связываютс именем неутомимого американского предпринимателяСтивена Кирша (известного, РІ частности, как основатель Infoseek Corp.). Рто онпридумал Рё запатентовал РІ начале 80-ых РіРѕРґРѕРІ манипулятор,определявший направление движения СЃ помощью простого оптического сенсора. Мышь Киршамогла работать только РЅР° специальном металлическом РєРѕРІСЂРёРєРµ, покрытом сеткойтёмных полос: РѕРЅР° освещала РєРѕРІСЂРёРє Рё следила Р·Р° яркостьюотражений, определяятраекторию РїРѕ пересечениям полос. В
Ранняяэта конструкция так Рё РЅРµ получиламассового признания. Потребовалисьещё почти двадцать лет развитияэлектроники, для того чтобыоптические мыши смогли составить конкуренцию СЃРІРѕРёРј механическим предкам.Впрочем, современные оптические мыши устроены РІРѕ РјРЅРѕРіРѕРј схоже СЃ киршевской. Онивключают три основных элемента: светодиод, освещающий рабочую площадку,оптический сенсор РІ РІРёРґРµ простейшей матрицы светочувствительных элементов(похожей РЅР° матрицу РІ цифровых фотоаппаратах, РЅРѕ значительно меньшего разрешения — примерно 16 С… 16 пикселей), Рё сигнальныймикропроцессор (DSP), умеющий распознавать образы. «Р¤РѕС‚ографируя" поверхность РїРѕРґ СЃРѕР±РѕР№ полторы тысячи раз РІ секунду, оптическаямышь СЃ помощью чипа DSP улавливает смещениякартинки Рё подаёт соответствующие сигналы компьютеру. Работают такие мышипрактически РЅР° любой поверхности, исключаялишь зеркальные, полированные Рё поверхности СЃ крупноволокнистой фактурой.Точность позиционирования, почтинулевая инерционность, отсутствиенеобходимости РІ чистке — РІСЃС‘ это помогло оптическим мышам вытеснить своихпредшественниц СЃ рабочих столов.  Рздесь РјС‹ РїРѕРґС…РѕРґРёРј Рє тому, СЃ чего всёсобственно Рё началось. Уже знакомаявам компания Logitech представила наминувшей неделе компьютерную мышь РЅРѕРІРѕР№ конструкции. Строго РіРѕРІРѕСЂСЏ, Logitech MX1000 Laser Cordless Mouse относится Рє оптическому племени, РЅРѕ вместо светодиода РІ нейустановлен миниатюрный полупроводниковый лазер, улучшена разрешающая способность фотосенсора. Принцип действия осталсяпрежним, так что посвящать емуотдельный абзац нет необходимости. Чем лазернаямышь лучше оптической? Абсолютной неприхотливостью: РѕРЅР° СЃРїРѕСЃРѕР±РЅР° работать дажена зеркале благодаря свойствамлазерного излучения Рё новойоптической системе. Тем же самым РѕРЅР° обязанаи непревзойдённой точности: MX1000 различает РІ 20 раз больше деталей, чемобычная оптическая мышь. Стоит такаямашинка почти 80 долларов. Р’РѕРїСЂРѕСЃ РІ том, считать ли лазерную мышь LogitechРЅРѕРІРѕР№ ветвью РЅР° эволюционном древе (авторитет компании — аргумент РІ пользу) илиэто обычный маркетинговый С…РѕРґ СЃ добавлением РЅРёРєРѕРјСѓ РЅРµ нужной функции, для того чтобы выделитьсясредь толпы производителей? Р’ самом деле, зачем вам двадцатикратное улучшение ибез того более чем приемлемой точности?
В В В В В В В В
2 РћРџРРЎРђРќРР• УСТРОЙСТВА
2.1 РћРџРРЎРђРќРР• МЫШР
        Популярность мышек заставила производителей серьезнозадуматься о модернизации своихпродуктов. В результате мы получили несколько типов мышек: механических,оптических, беспроводных оптических, беспроводных механических. В механическихмышках для определения расстояния, на которое она переместилась, используются механические системы оповещения, в которых механическое вращение вертикальной,горизонтальной и диагональной осей преобразуютсяв сигналы, передаваемые на контроллер. В оптических мышках используются мощный светодиод, по отражению луча которого отповерхности, на которой находитсямышка рассчитывается расстояния, накоторое она переместилась,. Наличием колесика прокрутки уже трудно кого-либоудивить, зато в списках рейтингов можно увидеть мультимедийные мышки,сочетающие в себе все приемущества передовых разработок. При использованиитакой мышки каждый палец задействован в работе дляее удобства и ускорения. Теперь безлишних движений мыши вы можете сворачивать, разворачивать, закрывать окна,управлять проигрывателем музыки иливидео. При просмотре изображений вы можете без затрудненияпролистывать их, изменять размеры ит. п.
Мышь состоит из 3-х частей: внешнейоболочки (обычно пластмассовой, в области которой находятся кнопки и колесики прокрутки), блока микросхем(имеет прямое подключение к портукомпьютера, передает сигналы от мыши), механической или оптической части(служит для определения расстояния, на которое мышь переместилась).
        Современная мышь смогла избавить нас от рутинной работы,лишних движений и таких неприятныхвещей как чистка механических элементов от накопившейсягрязи…
В В В В В В В В РќРµ труднодогадаться, что для такого набора функций понадобятсянестандартные драйверы, (система может установить СЃРІРѕРё версии, РЅРѕ онипредназначены для использования лишь стандартных функций. РџРѕ-умолчанию (РІ самыхпоследних версиях операционных систем,таких как WindowsXP, WindowsLonghorn) эти драйверы РјРѕРіСѓС‚ использоватьлевую, правую РєРЅРѕРїРєРё, колесико прокрутки Рё РґРѕ РґРІСѓС… РєРЅРѕРїРѕРє навигации для упрощенияработы РІ сети Рнтернет.). РС… можно найти РІ РєРѕСЂРѕР±РєРµ СЃ устройством. Рти драйверыпозволяют мышку работать корректно ииспользовать полный спектр функций, предусмотренных производителем. Р’ панелиуправления РЅР° вкладке «Мышь» становятсядоступными настройки новых функций.
2.2 ПРОГРАММНАЯ МОДЕЛЬ МЫШР
В В В В В Р’СЃРµ общение СЃ мышью РІ DOSвыполняется через прерывание Р—Р—h, обработчик которого устанавливает драйвер мыши, загружаемый обычнопри запуске СЃРёСЃВтемы. Современные драйверы поддерживают около 60 функций,позволяющих настраивать разрешениемыши, профили ускорений, виртуальные координаты, дополнительные обработчикисобытий Рё С‚. Рї. Большинство этих функций требуВются редко,сейчас рассмотрим основные.
INT33h, РђРҐ=0: Рнициализация мыши Р’С…РѕРґ:В В В В РђРҐ = OOOOhВыход:В В РђРҐ = OOOOh, если мышь или драйвер мыши РЅРµ установлены
АХ = OFFFFh, если драйвер и мышь установлены
ВХ = числокнопок:
2 или OFFFFh — РґРІРµ
3 — три
0000 — РґСЂСѓРіРѕРµ количество Выполняется аппаратный Рё программный СЃР±СЂРѕСЃ мыши Рё драйвера.
INT33h, AX=1: Показать РєСѓСЂСЃРѕСЂ Р’С…РѕРґ:В В В В РђРҐ — 000 lh
INT33h, AX= 2: Спрятатькурсор Вход:    АХ = 0002h
Драйвер мыши поддерживает внутреннийсчетчик, управляющий видимостью РєСѓСЂСЃРѕСЂР° мыши.Функция 2 уменьшает значениесчетчика РЅР° единицу, Р° функция 1 увеличивает его, РЅРѕ только РґРѕ значения 0. Если значение счетчика — отрицательВРЅРѕРµ число, РѕРЅ спрятан,если ноль — показан. Рто позволяетпроцедурам, используВющим РїСЂСЏРјРѕР№ вывод РІ видеопамять,вызывать функцию 2 РІ самом начале Рё 1 РІ СЃР°ВРјРѕРј конце, РЅРµ заботясь отом, РІ каком состоянии был курсормыши Сѓ вызвавшей эту процедурупрограммы.
INT33h, AX= 3: Определить состояние мыши Р’С…РѕРґ:В В В В РђРҐ — РћРћРћР—hВыход:В В Р’РҐ — состояниекнопок:
бит 0. нажаталевая кнопка
бит 1: нажатаправая кнопка
бит 2: нажатасредняякнопка
РЎРҐ
DX
Х-координата
Y-координата
Возвращаемые координаты совпадают скоординатами пикселов соответствуВющей точки РЅР° экране РІ большинстве графическихрежимов, «роме 04, 05, ODh, 13h, РіРґРµ РҐ-координату мыши нужно разделить РЅР° 2, чтобыполучить номер столВбца соответствующей точки РЅР° экране. Р’ текстовых режимахoР±Рµ координаты надо разделить РЅР° 8для полученияномера строки Рё столбца соответственно.
Р’ большинстве случаев эта функция РЅРµ используетсяв npoграммах, так как для того, чтобы реагировать РЅР° нажатие РєРЅРѕРїРєРё или перемещение мыши РІ заданнуюобласть, требуетсявызывать это прерывание постоянно,что РїСЂРёРІРѕРґРёС‚ Рє трате процессорного времени. Функции 5 (определить положениекурсора РїСЂРё послеВднем нажатии РєРЅРѕРїРєРё), 6 (определить положение курсорапри последнем отпусВкании РєРЅРѕРїРєРё) Рё OBh(определить расстояние,пройденное мшью) РјРѕРіСѓС‚ помочь оптимизировать работу программы, самостоятельно «следящей»за всеми переВдвижениями мыши, ногораздо эффективнее указать драйверу контролировать ее передвижения (чем РѕРЅ, собственно, Рё занимается постоянно)Рё передавать управВление РІ программу, как только выполнится заранее определенное условие, наприВмер пользовательнажмет РЅР° левую РєРЅРѕРїРєСѓ мыши. Такой сервис обеспечивает функция 0РЎh — установитьобработчик событий.
INT33h, AX= 0Сh: Установить обработчик событий Вход:     АХ = 000Ch
ES:DX= адрес обработчика СХ = условие вызова
бит 0: любое перемещение мыши
бит 1: нажатиелевой кнопки
бит 2:отпускание левой кнопки
бит 3: нажатиеправой кнопки
бит 4:отпускание правой кнопки
бит 5: нажатиесредней кнопки
Р±РёС‚ 6: отпускание средней РєРЅРѕРїРєРё РЎРҐ = 0000h — отменить обработчик
Обработчик событий должен быть оформлен, как дальняяпроцедура (то есть завершаться командой RETF). РќР° РІС…РѕРґРµ РІ процедуру обработчика РђРҐ содержит условие вызова, Р’РҐ — состояние РєРЅРѕРїРѕРє, РЎРҐ, DX — РҐ- Рё РЈ-координаты РєСѓСЂСЃРѕСЂР°, SI, DI — счетчикипоследнего перемещения погоризонтали Рё Вертикали (единиВцы измерениядля этих счетчиков — РјРёРєРё, 1/200РґСЋР№РјР°), DS — сегмент данных драйвера мыши. Перед завершениемпрограммы установленный обработчик СЃРѕВбытий должен быть обязательно удален (вызов функции 0РЎhСЃ РЎРҐ= 0). так как иначе РїСЂРё первом же выполнении условия управление будет передано РїРѕ адресу РІ памяти, СЃ которого начиналсяобработчик.
Функция0РЎhиспользуетсятак часто, что Сѓ нее появилосьнесколько модифиВкаций — функция 14h, дающаявозможность установить одновременно три РѕР±СЂР°Вботчикас разными условиями, Рё функция 18h, также позволяющаяустановить
3 РАЗРАБОТКА АЛГОРРРўРњРђ УПРАВЛЕНРРЇ МЫШЬЮ
        Схема обработкипрерываний:
Внешнее устройство
Процессор
Контроллер прерываний
Шина данных
Внешнее устройство
Внешнее устройство
Внешнее устройство
NMI
INTA
INTR
        Обработкапрерываний осуществляется с помощью специального процессора, производящего предварительную обработку запросов на прерывания. Выбираетсязапрос с наибольшим приоритетом, а затем уже обращаетсяк процессору, т.е. на выходе INTRподключен контроллер прерываний, а к нему уже подключается внешнее устройство. Немаскируемое прерывание связано с процессором. Таймер обращается к процессору напрямую.Запрос на прерывание внешнее устройство посылает на контроллер прерываний,который затем посылает запрос по линии INTRна процессор, анализирующий флагпрерывания, если он равен 1, то полинии INTAидетподтверждение готовности обработать запрос. После этого через шину данных контроллерпрерываний формирует команду INTс соответствующим номером прерывания.Далее процессор обрабатывает эту команду и передает управление на обработчикпрерывания, который взаимодействуетс устройством, вызвавшим это прерывание через шину данных и адреса, а такжечерез порты, к которым подсоединено устройство и его контроллер.
4 РАЗРАБОТКА РРЕАЛРР—РђР¦РРЇ ПРОГРАММНОГО ОБЕСПЕЧЕНРРЇ
      Для работы моей программытребуется IBMсовместимый компьютер на базе процессораIntelи любая возможнаятехническая конфигурация длязапуска операционной системы DOS. Программа занимает не более 500 байт оперативной памяти. Также потребуетсяпредварительно откомпилированный исполняемыйфайл программы. Пользователю нужно запустить программу и нажать левую кнопкумышки в разных местах экрана дляпроверки работоспособности программы. Если между точками в которых былипроизведены нажатия рисуются лини, то программа работает корректно.
В В В В В В Рсходный РєРѕРґ программы представлен РІ приложении Рђ.
      Блок-схема представлена в приложении Б.
В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В
5 ОТЛАДКА Р РСПЫТАНРР• ПРОГРАММЫ
        Перед запускомпрограммы следует убедиться в том,что к компьютеру подсоединена мышь, включить компьютер, запустить программу в16-битной среде, нажать левую кнопку мыши в разных местах экрана. Программаможет работать некорректно при условии несоблюдениявышеуказанных условий.