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

Смена изображения курсора мыши клавишей "пробел"

23.11.2020, 15:50. Показов 2627. Ответов 10
Метки tasm (Все метки)

Студворк — интернет-сервис помощи студентам
Привет. У меня следующая проблема. Курсор меняется нажатием на пробел, но при повторном нажатии не меняется на предыдущий. Найти, Не могу понять, в чем проблема. Помогите, пожалуйста. (код прилагается)
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
252
253
254
255
256
257
258
259
260
261
.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 0000000000000000b
       dw 0000000000000000b
       dw 0011111000011111b
       dw 0000000000000000b
       dw 0000000000000000b
       dw 0000000111000000b
       dw 0000000000000000b
       dw 0000000000000000b
       dw 0000000000000000b
       dw 0100000000000001b
       dw 0010000000000010b
       dw 0001000000000100b
       dw 0000100000001000b
       dw 0000010000010000b
       dw 0000001111100000b
       dw 0000000000000000b
       
mask_a  dw 16 dup(0ffffh)
        dw 8000h,0c000h,0a000h,9000h
        dw 0a800h,0b400h,0ba00h,0bd00h
        dw 0be80h,0bf40h,0bfa0h,0bfd0h
        dw 0bfe0h,0ae00h,0a300h,0e300h
.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
mouse_curcor_m  endp
 
.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
 
mouse_curcor_a 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
     call mouse_curcor_a
     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
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.11.2020, 15:50
Ответы с готовыми решениями:

Смена курсора мыши по нажатию клавиши на 1,2,3
Здравствуйте. Задача такая : в программе надо сменять курсор по нажатию клавиш на клавиатуре 1,2,3. Максимум что я смог это просто смена...

В рабочей части окна при движении мыши с нажатой левой клавишей мыши рисовать траекторию движения курсора мыши
В рабочей части окна при движении мыши с нажатой левой клавишей мыши рисовать траекторию движения курсора мыши.При нажатии правой клавиши...

Смена курсора мыши
Вопрос: Как в PascalABC.NET поменять курсор мыши на свой(допустим загрузить его из изображения) Пишу игру танчики, и нужно поменять...

10
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8659 / 4494 / 1669
Регистрация: 01.02.2015
Сообщений: 13,905
Записей в блоге: 12
23.11.2020, 15:56
У вас что-то напутано с логикой (алгоритмом) в строках 205-215.
Там нет распознавания пробела и в программе не вижу описания переменной "тип актуального курсора мыши".
0
0 / 0 / 0
Регистрация: 31.01.2020
Сообщений: 20
23.11.2020, 16:05  [ТС]
А Вы не могли бы подсказать, как это должно быть реализовано?
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8659 / 4494 / 1669
Регистрация: 01.02.2015
Сообщений: 13,905
Записей в блоге: 12
23.11.2020, 16:24
Это не моя программа. Лучше вы расскажите, как вы организовали смену курсора при нажатии пробела.
0
0 / 0 / 0
Регистрация: 31.01.2020
Сообщений: 20
23.11.2020, 16:35  [ТС]
Ну у меня в 166 строке вызывается моя процедура начального курсора, затем в 92-й строке у меня идет определение, была ли нажата клавиша, если нажалась, то меняется на новый

Добавлено через 6 минут
но у меня скорее смена курсора при нажатии на любую клавишу, кроме ESC
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8659 / 4494 / 1669
Регистрация: 01.02.2015
Сообщений: 13,905
Записей в блоге: 12
23.11.2020, 16:38
Цитата Сообщение от UltraMo Посмотреть сообщение
в 92-й строке у меня идет определение, была ли нажата клавиша, если нажалась, то меняется на новый
Assembler
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
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
 
mouse_curcor_a endp
Мы смотрим в одинаковые исходники?

Добавлено через 1 минуту
Цитата Сообщение от UltraMo Посмотреть сообщение
но у меня скорее смена курсора при нажатии на любую клавишу, кроме ESC
Тогда приводите её в соответствие с условием - нажатие "пробела".
0
0 / 0 / 0
Регистрация: 31.01.2020
Сообщений: 20
23.11.2020, 16:38  [ТС]
да, 92 строка call define_cursors, здесь определяется, была ли нажата клавиша
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8659 / 4494 / 1669
Регистрация: 01.02.2015
Сообщений: 13,905
Записей в блоге: 12
23.11.2020, 16:53
Сдавайте так.
Вы столь уверенно говорите, что я даже засомневался в собственных знаниях.
Всё будет хорошо.
0
0 / 0 / 0
Регистрация: 31.01.2020
Сообщений: 20
23.11.2020, 17:22  [ТС]
Вы преувеличиваете)
Цитата Сообщение от ФедосеевПавел Посмотреть сообщение
Сдавайте так.
Так у меня обратная смена курсора не работает, как при любом нажатии клавиши его сделать?
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8659 / 4494 / 1669
Регистрация: 01.02.2015
Сообщений: 13,905
Записей в блоге: 12
23.11.2020, 18:53
Лучший ответ Сообщение было отмечено UltraMo как решение

Решение

В том месте, где проверяете нажатие клавиш после проверки нажатия на ESC
Assembler
1
2
3
4
5
6
7
8
9
10
11
    cmp al, 20h
    jne no_change
    cmp [mes_er], 'м'
    je  any
    call mouse_curcor_a
    jmp common_m
any:
    call mouse_curcor_m
common_m:
    xor [mes_er], 1
no_change:
1
0 / 0 / 0
Регистрация: 31.01.2020
Сообщений: 20
23.11.2020, 19:47  [ТС]
Благодарю
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.11.2020, 19:47
Помогаю со студенческими работами здесь

MVVM смена курсора мыши
Здравствуйте, уважаемые! Подскажите пожалуйста, как из ViewModel изменить курсор мыши в приложении? Вот что я попытался...

Смена фона при наведении курсора мыши на ячейку таблицы
Создать функцию, которая будет изменять фон слоя в соответствии с фоном ячейки при наведении курсора мыши на ячейку таблицы. В качестве...

Смена картинки в PictureBox при покидании его курсора мыши
Появилась проблема при смене картинки. При наведении мыши, картинка меняется (это сделал так): Private Sub PictureBox4_MouseMove(ByVal...

Смена изображения при наведении курсора на ссылку
есть кусок кода: <img src=li.gif><a href=one.htm>ONE</a> <img src=li.gif><a href=two.htm>TWO</a> <img src=li.gif><a...

Смена цвета картинки (SVG) и ссылки (буквы) при наведении курсора мыши
Здравствуйте, я никогда до этого не работал с svg. У меня есть ссылка <a href="http://gmail@gmail.com"...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru