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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.12.2018, 01:54   #1
Alexis_777
Пользователь
 
Регистрация: 08.11.2017
Сообщений: 48
Радость Работа с мышкой и видеопамятью

Здравствуйте. Помогите пожалуйста разобраться.
Нашёл пример, который выводит координаты мышки х и у.
Не могу понять часть кода, отвечающую за вывод координат.
Разобрался только до этой части кода:
Код:
mov ax,3
int 33h

mov ax,cx
Дальше не пойму..
Прошу прокомментировать как происходит вывод координаты х или у.
Код:
begin:
mov ax,3	
int 10h		
mov ax,0b800h	
mov ds,ax	
start:

mov ax,3	
int 33h
cmp bx,1
je l1

jmp l4
l1:

mov si,0
mov ax,0778h	;07 - cvet serii, 78 - simv x
;mov al.'x'
mov [ds:si],ax	  ; output

add si,6

mov ax,3
int 33h

mov ax,cx
mov cl,100
div cl
mov ch,ah
mov cl,al
;mov ax,0F30h
mov al,'0'
add al,cl
mov ah,07h
mov [ds:si],ax	;X first symbol

mov ax,0

add si,2
mov al,ch
mov cl,10
div cl
mov ch,ah
mov cl,al
mov ax,0F30h
add al,cl
mov ah,07h
mov [ds:si],ax	  ;output X second symbol

mov ax,0
add si,2
mov ax,0F30h
add al,ch
mov ah,07h
mov [ds:si],ax	  ;output X third symbol

mov si,160
mov ax,0779h
mov [ds:si],ax	   ;output y

mov ax,3
int 33h

add si,6
mov ax,dx
mov cl,100
div cl
mov ch,ah
mov cl,al
mov ax,0F30h
add al,cl
mov ah,07h
mov [ds:si],ax	;output Y first symbol

mov ax,0
add si,2
mov al,ch
mov cl,10
div cl
mov ch,ah
mov cl,al
mov ax,0F30h
add al,cl
mov ah,07h
mov [ds:si],ax	  ;output X second symbol


mov ax,0
add si,2
mov ax,0F30h
add al,ch
mov ah,07h
mov [ds:si],ax	  ;output X third symbol


mov ax,3
int 33h
cmp bx,3
je l3

cmp bx,2
je begin

mov si,6
jmp l1

l4:
jmp start

l3:

mov ax,4c00h
int 21h
Alexis_777 вне форума Ответить с цитированием
Старый 10.12.2018, 20:48   #2
Alexis_777
Пользователь
 
Регистрация: 08.11.2017
Сообщений: 48
По умолчанию

В общем мне нужно сделать вывод координат в процессе перемещения мыши. Процесс вывода
координат мыши включается нажатием левой, а выключается нажатием правой кнопки мыши. Выход – по нажатию клавиши «q».
Может кто делал такое или может помочь?
Alexis_777 вне форума Ответить с цитированием
Старый 10.12.2018, 21:18   #3
jillitil
Форумчанин
 
Аватар для jillitil
 
Регистрация: 17.10.2018
Сообщений: 184
По умолчанию

Проблема в чём? Вывести значения с регистров AX, BX, CX, DX можете? Дёргаете мышиное прерывание 0х33, результаты в регистрах.

INT 33,0 Сброс оно же инит
INT 33,1 Показать крыса
INT 33,2 Скрыть крыса
INT 33,3 Узнать его положение и кнопки:CX =(X) (0..639) DX = (Y) (0..199) BX-кнопки

Работа с клавиатурой 0х16, функция 1.
ZF = 0 if a key pressed (even Ctrl-Break)
AX = 0 if no scan code is available
AH = scan code
AL = ASCII character or zero if special function key
jillitil вне форума Ответить с цитированием
Старый 10.12.2018, 22:30   #4
Alexis_777
Пользователь
 
Регистрация: 08.11.2017
Сообщений: 48
По умолчанию

Как эта часть кода координаты определяет? не могу понять.. Объясните пожалуйста кто знает
Код:
  mov ax,3
int 33h

mov ax,cx
mov cl,100
div cl
mov ch,ah
mov cl,al
;mov ax,0F30h
mov al,'0'
add al,cl
mov ah,07h
mov [ds:si],ax	;X first symbol

mov ax,0

add si,2
mov al,ch
mov cl,10
div cl
mov ch,ah
mov cl,al
mov ax,0F30h
add al,cl
mov ah,07h
mov [ds:si],ax	  ;output X second symbol

mov ax,0
add si,2
mov ax,0F30h
add al,ch
mov ah,07h
mov [ds:si],ax	  ;output X third symbol
Alexis_777 вне форума Ответить с цитированием
Старый 10.12.2018, 23:09   #5
jillitil
Форумчанин
 
Аватар для jillitil
 
Регистрация: 17.10.2018
Сообщений: 184
По умолчанию

Код:
 
mov ax,3
int 33h   ;опрос состояния крыса.

mov ax,cx  ; X координату в АХ
mov cl,100 
div cl         ; оределяется есть ли сотки в Х.   Х/100. Загнать в AL сотки, в AH остаток от деления
mov ch,ah  
mov cl,al
;mov ax,0F30h
mov al,'0'   ; Добавляем значение АСКИ символа "ноль" для вывода на экран
add al,cl     ; + сделано.
mov ah,07h  ; цвет символа
mov [ds:si],ax	; вывод первой цифры из разряда сотен

mov ax,0

add si,2   ; переместить указатель вывода на экран на след позицию.
mov al,ch  
mov cl,10  ; теперь находится порядок десятков ...
div cl
mov ch,ah
mov cl,al
mov ax,0F30h
add al,cl
mov ah,07h
mov [ds:si],ax	  ;output X second symbol   .... вывод разряда

mov ax,0  ; и последнее - единицы
add si,2
mov ax,0F30h
add al,ch
mov ah,07h
mov [ds:si],ax	  ;output X third symbol
jillitil вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
"Работа с видеопамятью и мышью" в ассемблере rusfin01 Фриланс 2 22.12.2012 13:53
Работа с видеопамятью и мышью Osanve Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 15 29.10.2011 15:48
Работа на прямую с видеопамятью asmars Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 17 01.08.2011 16:05
Перехват прерываний от клавиатуры и работа с видеопамятью sunlightik Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 26.02.2010 00:32
Работа с видеопамятью IgorArhangel Общие вопросы C/C++ 0 20.12.2008 22:46