PDA

View Full Version : حرفه ای: استفاده هم زمان از ماوس و کیبرد(حرفه ای)



ali682344
شنبه 22 آبان 1389, 11:51 صبح
سلام
من بیشتر سایت هایی که در مورد اسمبلی بود رو گشتم ولی هیچ منبعی توضیح نداده بود که چطور میشه در یک برنامه هم از ماوس استفاده کرد وهم از کیبرد

مثلا وقتی از وقفه موس استفاده می کنم من باید حتما کلیکی بکنم تا قسمت کیبرد کار کنه:عصبانی++::عصبانی++::افسرد ::افسرده:


ممنون میشم اگه توضیح بدین که راه حل این مشکل چیه؟
یک نمونه سورس هم باشه که دیگه :قلب:

nader2250
شنبه 22 آبان 1389, 18:33 عصر
این مشکل من هم هست لطفا کمک کنید

tdkhakpur
شنبه 22 آبان 1389, 19:55 عصر
در حالت کلی برای برسی کلیدهای ماوس احتیاج به حلقه تکرار دارید تا مدام این کنترل را برای بررسی کلیدهای ماوس انجام بدید در این میان میتوانید کلیدهای صفحه کلید را هم بررسی کنید.
کد زیر نحوه استفاده از سه کلید ماوس رو نشان میده کافیست در میان حلقه - کدی جهت بررسی فشار دگمه های صفحه کلید هم اضافه کنید این کار رو میتواندی با وقفه 16h صفحه کلید و تابع 2 انجام بدید که هیچ حالت مکثی ندارد.


;---------------------------------------------------
gotoxy macro x,y ;move cursor
mov dl,x
mov dh,y
mov bx,0
mov ah,02h
int 10h
endm
;---------------------------------------------------
putstr macro buffer ;print string
mov ah,09h
mov dx,offset buffer
int 21h
endm
;---------------------------------------------------
initmouse macro
mov ax,0
int 33h
endm
;---------------------------------------------------
showmouse macro
mov ax,1
int 33h
endm
;---------------------------------------------------
hidemouse macro
mov ax,2
int 33h
endm
;---------------------------------------------------
getmouse macro key, x, y
mov ax,3
int 33h
mov key, bx ; 0=no btn, 1=left btn, 2=right btn, 3=left right btn
mov bl, 8
mov ax, cx
div bl
mov x, ax
add x, 1
mov ax, dx
div bl
mov y, ax
add y, 1
endm
;---------------------------------------------------
;extrn proc1:far
stacksg segment para stack 'stack'
stacksg ends
datasg segment para 'data'
key dw ?
x dw ?
y dw ?
lx db ?
ly db ?
text0 db 'press mouse left and right btn to exit', '$'
text1 db 'left btn pressed ', '$'
text2 db 'right btn pressed ', '$'
text3 db 'left and right btns pressed ', '$'
datasg ends
codes segment para 'code'
main proc far
assume ss:stacksg, ds:datasg, cs:codes
mov ax, datasg
mov ds, ax
;------------ ur programm
initmouse
showmouse
putstr text0
again:
getmouse key, x, y
mov dl, byte ptr x
mov dh, byte ptr y
mov lx, dl
mov ly, dh
gotoxy lx, ly
cmp key, 1
jne l1 ; not left btn
putstr text1
jmp again
l1:
cmp key, 2
jne l2 ; not right btn
putstr text2
jmp again
l2:
cmp key, 3
jne again
putstr text3
hidemouse
;------------ end of program
mov ax, 4c00h
int 21h
main endp
codes ends
end main