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

Управление манипулятором мышь: смена курсора при нажатии клавиш

19.12.2017, 13:34. Показов 1832. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Суть в том, что нужно дописать программу так, чтобы при нажатии клавиши, например, X, курсор мог меняться на стандартный и обратно. Долбался долго, да так, что впоследствие психанул и снёс всё к чертям, осталась только эта версия программы. Помогите, пожалуйста, въехать.

Assembler
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
.model small
.stack 256
.data
stat db ?
col  dw ?
row  dw ?
color db 1
flag db 0
rezult db '000$'
mult10 db 10
mesx db 'x=$'
mesy db 'y=$'
mes_er db 'мышь не установлена',13,10,'$'
mes    db 'пpогpамма завеpшена',13,10,'$'
mask_m dw 16 dup(0ffffh)
       ;Это очень позитивный курсор
       dw 007e0h,01ff8h,03ffch,07ffeh
       dw 073ceh,0f3cfh,0f3cfh,0f3cfh
       dw 0ffffh,0ffffh,0ffffh,06006h
       dw 0700eh,03c3ch,01ff8h,007e0h
.code
cursor_on proc near
      mov ax,01
      int 33h
      ret
cursor_on endp
 
cursor_off proc near
      ;mov ax,2
      mov ax,2
      int 33h
      ret
cursor_off endp
 
mouse_stat proc near
      mov ax,3
      int 33h
      ret
mouse_stat endp
 
pixel   proc near
        call cursor_off
    mov ah,0Ch
    mov al,color
    mov bh,0
        int 10h
        call cursor_on
        ret
pixel   endp
 
speed proc near
     mov ax,000fh
     mov cx,64
     mov dx,64
     int 33h
     mov ax,0013h
     mov dx,64
     int 33h
     ret
speed endp
 
text_curc proc near
    mov ax,000AH
    mov bx,01
    int 33h
    ret
text_curc endp
 
write   proc near
    mov bx,3
cicle:
    idiv mult10
    add ah,30h
    mov [si+bx-1],ah
    mov ah,0
    dec bx
    jnz cicle
    mov ah,09
    mov dx,offset rezult
    int 21h
    ret
write   endp
 
go:  mov ax,@data
     mov ds,ax
     mov ax,0
     int 33h
     cmp ax,0
     jne ner
     jmp er
ner:
     mov ax,10h
     int 10h
     mov ax,9
     xor bx,bx
     xor cx,cx
     push ds
     pop es
     lea dx,mask_m
     int 33h
     call speed
     call cursor_on
     call mouse_stat
     mov col,cx
     mov row,dx
 
    mov ah,02
    mov bh,00
    mov dx,017e1h 
    int 10h
    mov ah,9
        lea dx,mesx
    int 21h  
    mov ah,02
    mov bh,00
    mov dx,017e8h
    int 10h
    mov ah,9
        lea dx,mesy
    int 21h  
 
next:
    mov ah,02
    mov bh,00
    mov dx,017e3h
    int 10h
    mov ax,col
    lea si,rezult
    call write
    mov ah,02
    mov bh,0
    mov dx,017eAh
    int 10h
    mov ax,row
    call write
    mov dx,row
    mov cx,col
 
    mov ah,1
    int 16h
    jz nosym    
    mov ah,0
    int 16h
    cmp al,27
    je ex
nosym:
     mov flag,0
     call mouse_stat
     mov stat,bl
     cmp col,cx
     je  rov_lab
     mov col, cx
     mov flag ,1
rov_lab:
     cmp row,dx
     je pix
      mov row ,dx
      mov flag,1
pix:
      mov bl,stat
      and bl,2
      cmp bl,2
      je nextc
       mov bl,stat
       and bl,1
       cmp bl,1
       jne next
       cmp flag,0
       je next
       call pixel
       jmp next
ex:
      call cursor_off
      lea dx,mes
       jmp exit
nextc:
    inc color
    jmp next
er:
     lea dx,mes_er
exit:
      mov ax,3
      int 10h
      mov ah,9
      int 21h
      mov ax,4c00h
      int 21h
 
End go
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.12.2017, 13:34
Ответы с готовыми решениями:

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

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

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

7
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8654 / 4489 / 1669
Регистрация: 01.02.2015
Сообщений: 13,897
Записей в блоге: 12
19.12.2017, 19:22
Приведите исходное условие задачи. Т.к. мне кажется, что речь о клавишах не клавиатуры, а мыши.
0
0 / 0 / 0
Регистрация: 13.04.2017
Сообщений: 10
19.12.2017, 19:32  [ТС]
Оно буквально из уст его задавшего звучало как: "Отредактировать написанную программу, чтобы при нажатии определённой клавиши (тут уже вопрос) курсор менялся со стандартного на пользовательский и наоборот". Ну и не знаю как можно говорить о кнопках мыши тут, если по щелчку правой меняется цвет для рисования, а по щелчку правой происходит само рисование.
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8654 / 4489 / 1669
Регистрация: 01.02.2015
Сообщений: 13,897
Записей в блоге: 12
19.12.2017, 21:08
В строках 144-145 анализ нажатой клавиши. Добавьте между 145 и 146 код обработки клавиши "X" со сменой курсора.

Добавлено через 1 минуту
Формы курсоров и идею возьмите отсюда
Управление манипулятором мышь - изменение формы курсора в зависимости от координат.
1
0 / 0 / 0
Регистрация: 13.04.2017
Сообщений: 10
19.12.2017, 22:54  [ТС]
Спасибо огромное. Я попробовал "поиграть" с кодом, добавил процедур... Не знаю, работает ли, потому что затупил на ошибке:
XXX.asm(67): unmatched endp: mask_m
Мне аж интересно стало, почему на mask_a нет реакции, но mask_m вызывает вопросы. Но выглядит на данный момент так:
Assembler
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
..model small
.stack 256
.data
stat db ?
col  dw ?
row  dw ?
color db 1
flag db 0
rezult db '000$'
mult10 db 10
mesx db 'x=$'
mesy db 'y=$'
mes_er db 'мышь не установлена',13,10,'$'
mes    db 'пpогpамма завеpшена',13,10,'$'
mask_m dw 16 dup(0ffffh)
       ;Это очень позитивный курсор
       dw 007e0h,01ff8h,03ffch,07ffeh
       dw 073ceh,0f3cfh,0f3cfh,0f3cfh
       dw 0ffffh,0ffffh,0ffffh,06006h
       dw 0700eh,03c3ch,01ff8h,007e0h
       
mask_a  dw 16 dup(0ffffh)
            dw 00000h, 04000h, 06000h, 07000h 
            dw 07800h, 07C00h, 07E00h, 07F00h
            dw 07800h, 04800,  00C00h, 00600h
            dw 00700h, 00380h, 00180h, 00000h
.code
cursor_on proc near
      mov ax,01
      int 33h
      ret
cursor_on endp
 
cursor_off proc near
      ;mov ax,2
      mov ax,2
      int 33h
      ret
cursor_off endp
 
define_cursors    proc
        push    ax
        mov     ax,     0009h
        int     33h
        pop     ax
        ret
define_cursors       endp
.code
mouse_curcor_m       proc
        push    ax
        push    bx
        push    cx
        push    es
 
        mov     bx,     0000h
        mov     cx,     0000h
        mov     ax,     seg mask_m
        mov     es,     ax
        mov     dx,     offset mask_m
        call    define_cursors
 
        pop     es
        pop     cx
        pop     bx
        pop     ax
        ret
     mask_m endp
end mouse_curcor_m  
 
.code
mouse_curcor_a      proc
        push    ax
        push    bx
        push    cx
        push    es
 
        mov     bx,     0000h
        mov     cx,     0000h
        mov     ax,     seg mask_a
        mov     es,     ax
        mov     dx,     offset mask_a
        call    define_cursors
 
        pop     es
        pop     cx
        pop     bx
        pop     ax
        ret
     mask_a endp
end mouse_curcor_a
 
mouse_stat proc near
      mov ax,3
      int 33h
      ret
mouse_stat endp
 
pixel   proc near
        call cursor_off
    mov ah,0Ch
    mov al,color
    mov bh,0
        int 10h
        call cursor_on
        ret
pixel   endp
 
speed proc near
     mov ax,000fh
     mov cx,64
     mov dx,64
     int 33h
     mov ax,0013h
     mov dx,64
     int 33h
     ret
speed endp
 
text_curc proc near
    mov ax,000AH
    mov bx,01
    int 33h
    ret
text_curc endp
 
write   proc near
    mov bx,3
cicle:
    idiv mult10
    add ah,30h
    mov [si+bx-1],ah
    mov ah,0
    dec bx
    jnz cicle
    mov ah,09
    mov dx,offset rezult
    int 21h
    ret
write   endp
 
go:  mov ax,@data
     mov ds,ax
     mov ax,0
     int 33h
     cmp ax,0
     jne ner
     jmp er
ner:
     mov ax,10h
     int 10h
     mov ax,9
     xor bx,bx
     xor cx,cx
     push ds
     pop es
     lea dx,mask_m
     int 33h
     call speed
     call cursor_on
     call mouse_stat
     mov col,cx
     mov row,dx
 
    mov ah,02
    mov bh,00
    mov dx,017e1h 
    int 10h
    mov ah,9
        lea dx,mesx
    int 21h  
    mov ah,02
    mov bh,00
    mov dx,017e8h 
    int 10h
    mov ah,9
        lea dx,mesy
    int 21h  
 
next:
    mov ah,02
    mov bh,00
    mov dx,017e3h
    int 10h
    mov ax,col
    lea si,rezult
    call write
    mov ah,02
    mov bh,0
    mov dx,017eAh
    int 10h
    mov ax,row
    call write
    mov dx,row
    mov cx,col
    mov ah,1
    int 16h
    jz nosym    
    mov ah,0
    int 16h
    cmp al,27
    je ex
    cmp al, 2dh     ;x ?
    call mouse_curcor_a
    cmp al, 2eh     ;c ?
    call mouse_curcor_m
    
nosym:
     mov flag,0
     call mouse_stat
     mov stat,bl
     cmp col,cx
     je  rov_lab
     mov col, cx
     mov flag ,1
rov_lab:
     cmp row,dx
     je pix
      mov row ,dx
      mov flag,1
.386
pix:
      mov bl,stat
      and bl,2
      cmp bl,2
      je nextc
       mov bl,stat
       and bl,1
       cmp bl,1
       jne next
       cmp flag,0
       je next
       call pixel
       jmp next
ex:
      call cursor_off
      lea dx,mes
       jmp exit
nextc:
    inc color
    jmp next
er:
     lea dx,mes_er
exit:
      mov ax,3
      int 10h
      mov ah,9
      int 21h
      mov ax,4c00h
      int 21h
 
End go
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8654 / 4489 / 1669
Регистрация: 01.02.2015
Сообщений: 13,897
Записей в блоге: 12
20.12.2017, 00:26
Поздний вечер - спать пора
Assembler
67
mouse_curcor_m endp
1
0 / 0 / 0
Регистрация: 13.04.2017
Сообщений: 10
20.12.2017, 09:04  [ТС]
Спасибо, скомпилилось, но, видимо, я совсем туплю по вечерам и утрам. Не допираю, где я конкретно туплю...

Добавлено через 6 минут
Строку (56) lea dx,mask_m заменил на (56) call mouse_curcor_a. В начале является стрелка. Стрелка на смайлик меняется, а смайлик на стрелку - нет. При том реакция на ВСЕ клавиши. Нуууу, вот даже не знаю.
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8654 / 4489 / 1669
Регистрация: 01.02.2015
Сообщений: 13,897
Записей в блоге: 12
20.12.2017, 18:37
Приведите свежий вариант программы.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.12.2017, 18:37
Помогаю со студенческими работами здесь

Работа с манипулятором «мышь»
Здравствуйте, помогите пожалуйста добрые люди надо практику сдать через 2 дня помогите! Добавлено через 13 секунд Тема 4....

При нажатии клавиш 1 ... 8 выставлять размер курсора в 1 ... 8 линеек
При нажатии клавиш 1 ... 8 выставлять размер курсора в 1 ... 8 линеек

Напишите программу перемещения курсора по консольному окну при нажатии клавиш-стрелок
Напишите программу перемещения курсора по консольному окну при нажатии клавиш-стрелок. Указание: при нажатии функциональных клавиш в память...

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

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


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью 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
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru