Розробити програму обробки даних з маніпулятора “миша”

Інформація про навчальний заклад

ВУЗ:
Інші
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Не вказано

Інформація про роботу

Рік:
2024
Тип роботи:
Курсова робота
Предмет:
Системне програмування та операційні системи

Частина тексту файла (без зображень, графіків і формул):

ЗМІСТ 1 ОПИС АПАРАТНОЇ ЧАСТИНИ МАНІПУЛЯТОРА “МИШІ” ТА ОСНОВНИХ ФУНКЦІЙ КЕРУВАННЯ............................................................................................ 7 2 РОЗРОБКА СТРУКТУРИ ТА АЛГОРИТМІВ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ КЕРУВАННЯ МАНІПУЛЯТОРОМ “МИША”………………..9 3 ТЕКСТ ПРОГРАМИ ПРОТОКОЛЮВАННЯ РОБОТИ З ФАЙЛАМИ…………11 ВИСНОВОК………………………………………………………………………..14 СПИСОК ВИКОРИСТАНОЇ ЛІТЕРАТУРИ…………………………………….15 1 ОПИС АПАРАТНОЇ ЧАСТИНИ МАНІПУЛЯТОРА “МИШІ” ТА ОСНОВНИХ ФУНКЦІЙ КЕРУВАННЯ У всіх сучасних моделях координатно-вказівних пристроїв типу “миша” в якості стандартного прийнятий інтерфейс взаємодії з комп’ютером, який запропонувала компанія Microsoft. Він заснований на програмному перериванні центрального процесора і використанні набору функцій обробки переривань для аналізу інформації, яка отримується від “миші”. Перший варіант “миші” компанії Microsoft з’єднювався із комп’ютером з допомогою спеціальної плати, яка підключалася до системної шини. Наступні моделі маніпуляторів підключалися до комп’ютера через послідовний порт. В той же час існує ще 2 види спеціальних портів для підключення “миші”: InPort компанії Microsoft та PS/2 від IBM, який останнім часом здобув велику популярність. Переміщення “миші” вимірюється в кроках. Крок – це мінімальне переміщення “миші”, яке реєструють її датчики. Драйвер “миші” перетворює підраховану кількість кроків переміщення маніпулятора в число елементів зображення на екрані монітору. При переміщенні “миші” курсор зсовується на пропорційну величину. Для керування маніпулятором миша використовують переривання int 33h. Нижче наведені деякі із функцій для керуванням маніпулятором “миша”: Ax=0000h – ініціалізація “миші”. Виконується апаратний і програмний скид миші. Якщо операція пройшла успішно то Ax=FFFFh, інакше Ax=0000h. Ax=0001h – показати курсор миші Ax=0002h – сховати курсор миші Ax=0003h – оприділити стан миші. В Bx: - біт 0 – вказує чи нажата ліва клавіша “миші” - біт 1 – чи нажата права клавіша “миші” - біт 2 – чи нажата середня клавіша “миші” Ax=0004h – встановити курсор. (Cx=x, Dx=y). Ax=000Ch – встановити обробник миші. Es:Dx – вказуємо адрес обробника Cx – умова виклику. Де біти: 0 – переміщення миші 1 – натискання лівої клавіші миші 2 – відпускання лівої клавіші 3 – натискання правої клавіші миші 4 – відпускання правої клавіші миші 5 – натискання середньої клавіші миші 6 – відпускання середньої клавіші миші 2 РОЗРОБКА СТРУКТУРИ ТА АЛГОРИТМІВ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ КЕРУВАННЯ МАНІПУЛЯТОРОМ “МИША” Для вирішення поставленого завдання необхідно встановити обробник, який буде викликатися при переміщенні миші, а також при натисканні лівої клавіші “миші”. Зробити це можна 2 методами: встановити обробник переривання int 33h вручну за допомогою функцій Ah=35h(25h) (записати/зчитати адрес обробника) переривання int 21h. За допомогою функції ax=000Ch переривання int 33h. Для розв’язання поставленого завдання було обрано другий метод. Отже, при запуску програми переходимо на мітку init. Наступним кроком ініціалізуємо “мишу” за допомогою функції Ax=0000h. Далі перевіряємо чи рівний регістр ax=0000h. Якщо так – то “миша” не ініціалізована і переходимо в кінець програми, де виводимо повідомлення про помилку і виходимо із програми. В іншому випадку показуємо курсор “миші” (функція ax=0001h) і встановлюємо наш обробник переривань, який спрацьовує при переміщення “миші”, а також при нажатті лівої клавіші “миші”. mov ax,0001h int 33h mov ax,000Ch mov Dx, offset mouse_proc mov cx,0000000000000011b int 33h Далі програма зациклюється до тих пір, поки не відмінений цей обробник (обробник відміняється при одночасному нажатті лівої і правої клавіші “миші”)  Рисунок 2.1 Блок-схема процедури обробки миші Із блок-схеми видно, що в обробнику переривання ми перевіряємо (з допомогою функції Ax=0003h) стан миші. Якщо нажата ліва клавіша “миші”, то малюєм символ “*”. Якщо нажаті права та ліва клавіші “миші”, то відміняєм обробник і виходимо із програми. При переміщенні та переміщенні з нажатаю правою клавішею обробник не виконує ніяких дій, тільки передає управління системі. 3 ТЕКСТ ПРОГРАМИ ПРОТОКОЛЮВАННЯ РОБОТИ З ФАЙЛАМИ .model TINY ; код і дані в одному сегменті (64 кб) (com-програма) .code org 100h start: jmp init ;перейти на ініціалізацію миші та обробника миші ;===============Обробник для керування мишею=============== mouse_proc proc far ;======перевірка стану миші mov ax,0003h int 33h ;cx=x dx=y bx-нажаті клавіші(біт 0 –ліва, біт 1 - права) ;======================================================= ;=для текстового режму, щоб взнати положення курсора, потрібно | ;=поділити отримані значення на 8(відповідно зсунути вправо на 3 | ;=позиції) | ;======================================================= shr cx,3 shr dx,3 cmp Bl,3h ; якщо нажаті 2 клавіші je uninst cmp Bl,1h ; якщо нажата ліва клавіша je left jmp exit ; вийти із обробника left: ;=====встановити текстовий курсор в необхідну позицію====== mov Ah,02h mov Bh,0h sub dl,1 mov Dh,Dl mov Dl,cl int 10h ;=================вивести * ====================== mov ah,09h mov Dx,offset left_sym int 21h jmp exit ;==================відмінити обробник==================== uninst: mov ax,000Ch mov Dx, offset mouse_proc mov cx,0000h int 33h mov x,1 ;====================================================== exit: retf mouse_proc endp ;==============ініціалізація миші та обробника================ init: mov ax,0000h ;ініціалізувати мишу int 33h ;Якщо не ініціалізовано мишу, то вихід cmp Ax, 0000h je error_init ;===========миша ініціалізована========================== mov ax,0001h ;показати курсор int 33h ;================встановлення обробника================= ;==========який реагуватиме на переміщення миші============ ;========та натискання лівої клавіші миші=================== mov ax,000Ch mov Dx, offset mouse_proc mov cx,0000000000000011b int 33h ;=========очікувати поки не натиснено ліву і праву клаівіші миші== cycle: cmp x,1 jne cycle ret ;вихід ;========вивід повідомлення при помилці ініціалізації========== error_init: mov ah,09h mov dx,offset err_mes int 21h ret ;===========Дані====================================== err_mes db "error in initialization mouse",0Dh,0Ah,"$" left_sym db "*",0Dh,0Ah,"$" x db 0 end start ВИСНОВКИ В результаті виконання завдання курсового проектування на мові Assembler розроблено програму, яка опрацьовує поточний стан маніпулятора “миші” і при натисканні на ліву клавішу “миші” виводить символ “*” в поточну позицію екрану ЛІТЕРАТУРА Основна: 1. Зубков С.В. Assembler для DOS, Windows и UNIX – 3-е изд., стер. – М.: ДМК Пресс; СПб.: Питер, 2004. – 608с. 2. Костельцев А.В. Построение интерпретаторов и компиляторов. – СПб: Наука и техника, 2001. – 224 с. 3. Системное программное обеспечение. Учебник для вузов/ А.Ю. Молчанов. - СПб: Питер, 2003. – 396 с. 4. А.В.Фролов, Г.В.Фролов. MS-DOS для програмиста №18,19. – М.: Диалог-МИФИ, 1995. – 254 с. 5. Т.Пратт. Языки программирования. Разработка и реализация. – М.: Мир, 1979. 6. Гук М. Дисковая подсистема ПК. - СПб.: Питер, 2001. – 336с.: ил. Додаткова: 1. Бек Л. Введение в системное программное обеспечение. – М.: Мир, 1989. 2. Ф.Льюис, Д.Розенкрац, Р.Стирнз. Теоретические основы проектирования компиляторов. – М.: Мир, 1979. 3. Т.Пратт. Языки программирования. Разработка и реализация. – М.: Мир, 1979.
Антиботан аватар за замовчуванням

20.06.2013 01:06-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!