Помощь - Поиск - Пользователи - Календарь
Полная версия: Маска для мыша
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Ассемблер
zloy_pes
Вообщем такая вещь - хочу сделать курсор мышке с помощью маски, но не знаю как её нарисовать. Мне нужно, чтобы от курсора остался только 1 черный пиксель (тот который кончик указателя). Чёто написал, но вместо точки выводится какаято 'мочалка' mad.gif
.model tiny
.data
cmask db 0fh,0fh,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
00,00,00,00,00,00,
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
,00,00,00,00,00
.code
org 100h
start:
mov ax,13h;13h 320x200 256
int 10h
push 0a000h
pop es
call refresh

xor si,si
mov cx,5
ccycle:
push cx
mov ax,320
dec cx
mul cx
mov si,ax
mov cx,0ffh
cycle:
mov es:[si],cl
inc si
loop cycle
pop cx
loop ccycle
;Мышь:
xor ax,ax
int 33h
push ds ;ES:DX -
pop es ;адрес маски
mov dx,offset cmask;(или я не прав?)
mov ax,09h
int 33h
mov ax,01h
int 33h
;мышь загружена
xor ax,ax
int 16h
pop dx
mov ax,03h
int 10h
mov ax,4ch
int 21h
ret

refresh proc;Обновление экрана
mov ax,0f0fh
xor di,di
mov cx,64000
rep stosw
ret
refresh endp

pointprc proc;Процедура рисованя точки
push si
mov ax,320
mul si
mov si,ax
add si,bx
mov byte ptr es:[si],31h
pop si
ret
pointprc endp
end start
Dark
Ошибка здесь
Код

0fh,0fh,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,

00,00,00,00,00,00,
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00



первые 32 бита - маска (ее лучше либо обнулить либо ff)
вторые - рисунок
рисунок - 64*64
каждый !бит! - это точка
т.е. 0f - это 15 точек
а комбинация 0f 0f - 15 точек черного 15 белого потом 15 точек черного 15 белого
лучше уж так

Код

cmask db
0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,

0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,

1h,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0

//понятно что это все в одной строке ;)
zloy_pes
Спасибо! good.gif
zloy_pes
Еще один вопрос по мышке:
AX=0Сh
int 33h
установить одработчик для мышу.
xor ax,ax
int 33h
push ds
pop es
mov dx,offset cmask
mov ax,09h
int 33h
mov ax,01h
int 33h

mov ax,0ch
mov cx,10b
push cs
pop es
mov dx,offset mouse
...
readkey:
xor ax,ax
int 16h
...
mouse proc

ret
mouse endp

По идее должна при нажатии левой кнопки мыши выполнять mouse proc, но она вылетает sad.gif если в mouse proc написать jmp readkey, то указатель мышки после нажатия зависает на месте. Подскажите - как быть - с мышой работаю впервые?
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.