Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.10.2012, 16:21   #1
qwe12355
 
Регистрация: 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	







	;из 10чной в 16ную
	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


	;из 10чной в 16ную
	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
	;собсна сам вывод матрицы в бп+2 число на 1 больше чем позиция первого символа
	mov ds:[42h],021eh
	mov ds:[40h],0930h
	push dx
	

	








	;поставіть курсор на 2 строку
	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	;пропустить наращивание dx если он перерастает 4f
	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
	;div
	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:

	
	


	;intput string
	mov ah,0ah
	lea dx,BUFR
	int 21h	

	
	mov ax,04c00h
	int 21h


end begin
qwe12355 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[C++] Работа с мышью koshkarjov Помощь студентам 0 14.10.2010 22:36
Работа с мышью Amery Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 28.05.2008 21:19