Форум программистов, компьютерный форум, киберфорум
Assembler: DOS/Real Mode/16-bits
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/34: Рейтинг темы: голосов - 34, средняя оценка - 4.76
steep22

Работа с манипулятором «мышь»

19.07.2012, 00:36. Показов 6705. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте,
помогите пожалуйста добрые люди
надо практику сдать через 2 дня
помогите!

Добавлено через 13 секунд
Тема 4. РАБОТА С МАНИПУЛЯТОРОМ «МЫШЬ»

Программа работы:

1. Ознакомиться с принципами определения наличия драйвера «мыши» и самого устройства
2. Изучить функции прерывания 33h
3. Написать программы, показывающие перемещение мыши по экрану в текстовом и графическом режимах.


Краткие пояснения к изучаемому материалу

При работе на ПК часто используется манипулятор «мышь». Для организации взаимодействия с этим манипулятором необходим специальный драйвер. Загрузка драйвера осуществляется двумя путями. С помощью команды вида DEVICE= в файле конфигурации CONFIG.SYS или путем загрузки резидентной программы (например в файле автозапуска AUTOEXEC.BAT). Поддержка работы манипулятора «мышь» осуществляется через функции прерывания 33h.

Определение наличия драйвера и мыши в ПК
Чтобы проверить установку драйвера, необходимо посмотреть содержимое вектора прерывания 33h. Это можно сделать, вызвав функцию 35h прерывания 21h. Она позволяет получить вектор прерывания, номер которого должен быть помещен в регистр AL. На выходе в регистрах ES:BX будет содержаться вектор прерывания. Если этот вектор равен 0000:0000, то драйвер мыши не установлен.

Assembler
Assembler
1
2
3
4
5
mov ah, 35h
mov al, 33h
int 21h
cmp  bx,0
je Met_no_driver
C, C++
C++
1
2
3
4
_AH = 0x35;
_AL = 0x33;
geninterrupt(0x21);
if (_BX==0)
Pascal
Pascal
1
2
3
4
5
6
Var Regs : Register;
.  .  .
Regs.AH:=$35;
Regs.AL:=$33;
MsDos(Regs);
If Regs.BX=0 then
В некоторых компьютерах в векторе 33h записана точка входа в программу, которая сразу же содержит команду возврата IRET (код этой команды 0CFh). Тогда для проверки установки драйвера необходимо выполнить проверку вида:
cmp byte ptr ES:[BX], 0CFh ; косвенная адресация, проверяется содержимое
; ячейки, адрес которой находится в ВХ
je Met_no_driver
Теперь необходимо убедиться в том, что манипулятор подключен к компьютеру. Чтобы это сделать, необходимо вызвать функцию 0 прерывания 33h. Если манипулятор не подключен, то в регистре АХ вернется значение 0.

Assembler
Assembler
1
2
3
4
xor ah, ah
int 33h
cmp ax,0
je Met_no_mouse
C, C++
C++
1
2
3
4
5
6
_AX = 0;
geninterrupt(0x33);
a_x = _AX;
if (a_x==0) 
  { puts(“Мышь не подключена”);
     exit(1);   }
Pascal
Pascal
1
2
3
4
5
6
Regs.AX:=0;
Intr($33,Regs);
If Regs.AX=0 then 
  begin 
      write(“Мышь не подключена”);
      exit(1)   end;
Функции прерывания 33h:
0 – проверяет, установлена ли мышь, переустанавливает драйвер и возвращает число кнопок манипулятора АХ = 0 мышь не установлена
АХ = -1 мышь установлена
ВХ - число кнопок
1 – показывает курсор мыши на экране Не возвращает никаких значений
2 – скрывает курсор мыши Не возвращает никаких значений
3 – возвращает текущую позицию мыши и состояние ее кнопок ВХ - состояние кнопок
СХ – горизонтальная координата
DХ - вертикальная координата

Приведем фрагмент программы на языке С, которая показывает перемещение курсора мыши и отображает в центре экрана ее текущие координаты. Для выхода из программы – нажать левую кнопку.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
void main ()
{   int old_x = 0, old_y = 0, a_x, b_x, c_x,d_x; 
    _AH = 0x35;_AL = 0x33;
    geninterrupt(0x21);
b_x = _BX;
asm {  cmp byte ptr ES:[BX], 0CFh   
jne Met_near  }
b_x = 0;
Met_near:
    If (b_x == 0) { puts (“Не установле драйвер мыши”);   exit(1);   }
    _AX = 0;
    geninterrupt(0x33);
a_x = _AX;
if (a_x==0)   { puts (“Мышь не подключена”);     exit(1);   }
 
clrscr();
_AX = 1;    
geninterrupt(0x33); //вывод курсора мыши
 
while (_AX = 3, geninterrupt(0x33), c_x = _CX, d_x = _DX, _BX != 2)
      {    if (c_x != old_x) || (d_x != old_y)    { old_x = c_x ; old_y = d_x ; }
else continue;
    
    _AX = 2;
        geninterrupt(0x33); //скрыть курсора мыши
        gotoxy(30,10); printf (%3d”, c_x);
        gotoxy(30,11); printf (%3d”, d_x);
  
_AX = 1;    
geninterrupt(0x33); //вывод курсора мыши
           }
_AX = 0;    
geninterrupt(0x33); //переустановка драйвера мыши
    clrscr();
}
Добавлено через 12 часов 42 минуты
народ скиньте у кого что есть,помогите плиз
спасибо
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.07.2012, 00:36
Ответы с готовыми решениями:

Составить программу по управлению манипулятором «мышь»
Помогите пожалуйста. Составить программу по управлению манипулятором «мышь». Если координаты курсора «мышь» лежат в диапазоне...

Управление манипулятором мышь - изменение формы курсора в зависимости от координат
Ребят, помогите! Составить программу по управлению манипулятором "мышь". Если координаты курсора "мышь" лежат в диапазоне...

Управление манипулятором мышь: смена курсора при нажатии клавиш
Суть в том, что нужно дописать программу так, чтобы при нажатии клавиши, например, X, курсор мог меняться на стандартный и обратно....

2
650 / 337 / 37
Регистрация: 04.04.2012
Сообщений: 886
19.07.2012, 10:57
Что-то есть здесь и в книге Зубкова.
0
Клюг
 Аватар для Charles Kludge
7677 / 3192 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
19.07.2012, 15:08
https://www.cyberforum.ru/post2768167.html
https://www.cyberforum.ru/asse... 55785.html
https://www.cyberforum.ru/post3033654.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.07.2012, 15:08
Помогаю со студенческими работами здесь

Управление манипулятором «мышь» - изменение формы курсора в зависимости от кординат
Помогите пожалуйста. Составить программу по управлению манипулятором «мышь». Если координаты курсора «мышь» лежат в диапазоне...

Управление манипулятором мышь - изменение формы курсора в зависимости от координат.
Ребят Выручите если кто компетентен в Этом вопросе! Надо Составить программу по управлению манипулятором «мышь». Если координаты...

Составить программу по управлению манипулятором "мышь". Выбор типа курсора организовать по нажатию на клавиши "q","w","r
Составить программу по управлению манипулятором "мышь". Выбор типа курсора организовать по нажатию на клавиши...

Мышь работает через раз, то есть запустил ОС - мышь не работает, перезагрузил - мышь работает
Установлена Windows 7 со всеми последними обновлениями. Все всегда замечательно работало. Но с недавних пор мышь стала работать через раз....

Кинематика управления манипулятором
Управление манипулятором (рис.4) должно обеспечить за время r2 сближение захвата М с движущейся деталью К. Деталь движется...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG-файла с альфа-каналом с помощью библиотеки SDL3_image на Android
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru