Регистрация: 13.10.2012
Сообщений: 5
|
Работа с мышью
Есть задача: вывести матрицу любой размерности, в любой точке экрана. Ввод размерности я сделал. Матрицу выводит. Теперь нужно сделать так, чтобы получение начальной координаты и вывод матрицы происходили при откускании ПКМ. Уже долго ковыряюсь, но что-то рабочее с мышью не получается сделать.
Код:
.model small
.stack 100
.data
BUFR db 03h,0,02h dup(?)
BUFR2 db 03h,0,02h dup(?)
string db "Vvedite 4islo:",0Dh,0Ah,'$'
.code
mouse_proc proc far
work: mov ax, 0003h
int 33h
jmp work
ret
endp
begin:
mov ax, @data
mov ds,ax
mov ah,0ah
lea dx,BUFR
int 21h
mov ah,0ah
lea dx,BUFR2
int 21h
lea dx,bufr
mov bx,dx
mov ax,ds:[bx+2]
sub al,30h
sub ah,30h
xchg al,ah
mov cl,al
mov ch,10h
mov dl,al
mov al,00
cmp ah,0
jz go
labb: dec ah
add dl,0ah
cmp ah,0
jnz labb
go: mov bp,dx
mov dx,0000
lea dx,bufr2
mov bx,dx
mov ax,ds:[bx+2]
sub al,30h
sub ah,30h
xchg al,ah
mov cl,al
mov ch,10h
mov dl,al
mov al,00
cmp ah,0
jz go2
labb2: dec ah
add dl,0ah
cmp ah,0
jnz labb2
go2: mov di,dx
mov bx,0000h
mov ax,0000h
int 33h
mov ax,0001h
int 33h
mov ax,000ch
mov cx,0010h
mov dx,offset mouse_proc
int 33h
mov bx,di
mov cx,bp
mov ax,0000
mov dx,0000
mov si,bx
mov di,si
mov ax,bx
mul cx
mov cl,al
mov ax,0200h
mov dl,0dh
int 21h
mov dl,0ah
int 21h
mov ch,00
mov sp,0000
mov ds:[42h],021eh
mov ds:[40h],0930h
push dx
mov ax,0200h
mov dx,021dh
mov ds:[46h],dx
int 10h
mov di,0000
m_loop: mov ax,ds:[40h]
cmp dl,4fh
jz m_exitloop2
jmp contimue
m_exitloop2: jmp next
contimue: push cx
mov bx,0000h
mov bl,0ch
mov cx,0001h
int 10h
pop cx
inc bp
inc dl
inc ch
dec cl
inc ax
mov ds:[40h],ax
push dx
mov dx,ds:[42h]
mov ax,0200h
int 10h
inc dl
cmp dl,51h
jz next
inc dl
inc di
inc di
cmp dl,50h
jz temp
mov ds:[42h],dx
jmp prbIg
temp: mov ds:[42h],dx
prbIg: mov dl,32
int 29h
cmp dl,50h
inc dl
cmp dl,50h
jz next
mov ax,ds:[40h]
pop dx
push dx
mov dx,0000h
mov dl,ch
mov ax,dx
pop dx
mov bx,si
div bl
cmp ah,00h
JNZ cont
mov ax,0200h
add ds:[42h],0100h
sub ds:[42h],di
mov dl,0dh
int 21h
mov dl,0ah
int 21h
mov dx,ds:[42h]
dec dx
int 10h
mov di,0000
jmp cont
next: mov di,0000h
mov ds:[44h],di
mov ds:[44h],bp
mov di,si
sub di,ds:[44h]
mov ax,ds:[40h]
add ax,di
mov ds:[40h],ax
sub cx, di
mov dx, ds:[46h]
inc dh
mov ds:[46h],dx
inc dx
mov ds:[42h],dx
mov dx,ds:[46h]
mov ax,0200h
int 10h
cmp cl,00h
jz m_exitloop
mov bp,0000h
mov ch,00h
jmp m_loop
cont: cmp cl,00
jz m_exitloop
jmp m_loop
m_exitloop:
mov ah,0ah
lea dx,BUFR
int 21h
mov ax,04c00h
int 21h
end begin
|