Форум программистов, компьютерный форум, киберфорум
Наши страницы

Assembler, MASM, TASM

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
kolorimage
6 / 6 / 0
Регистрация: 16.09.2010
Сообщений: 86
#1

Некорректно работает программа (мышь + вывод на дисплей) - Assembler

16.09.2010, 18:58. Просмотров 1150. Ответов 10
Метки нет (Все метки)

Здравствуйте господа!
У меня проблема с программой, очень нужна помощь .
Программа должна работать следующим образом:
при нажатии на экране, в том месте появляется символ "l" .
Но моя программа только выводить знак "=" в одном и том же месте ..

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
; mouse test
 
data segment
   
    a db 'l'  ;вот это должно выводится
    x db 0   ;координата х и у соответственно 
    y db 0
ends
name "mouse"
 
org 100h
 
start:
mov ah,00h
mov al,03h
int 10h
mov ax, 1
int 33h
 
bb:
check_mouse_buttons:
mov ax, 3
int 33h  
mov x,cl 
mov y,dl
cmp bx, 1  ; если нажата левая кнопка мыши
je  displey
jmp bb 
 
displey: 
 
mov ah,13h
mov al,0
mov bl,00100100b
mov cx,1
mov bp, offset a 
mov dh,offset x
mov dl,offset y
int 10h
 jmp bb
endp
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.09.2010, 18:58
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Некорректно работает программа (мышь + вывод на дисплей) (Assembler):

Некорректно работает программа - Assembler
Добрый вечер ! мне нужно найти произведение всех нечетных элементов массива , но почему то программа с произведением не работает (в...

Вывод на дисплей одного из трех текстовых сообщений, в зависимости от нажатой клавиши. - Assembler
Здравствуйте. Помогите пожалуйста выполнить задание по Assembler'у. Тема "Программирование внешних устройств". На форуме нашел похожее, но...

Программа в досе определяет мышь и рисует линии от предидущего щелчка к следующему - Assembler
Вообще прошу помощи по написанию программы, точнее если быть точным по дописанию. Собственно программа в досе определяет мышь и рисует...

VMWARE WORKSTATION и игры: мышь работает некорректно - Эмуляторы
Всем привет... помогите пожалуйста разобраться ! Установил VMWARE WORKSTATION 9 , все супер , всё работает , всё поддерживает ! Да и...

Мышь работает через раз, то есть запустил ОС - мышь не работает, перезагрузил - мышь работает - Windows 7
Установлена Windows 7 со всеми последними обновлениями. Все всегда замечательно работало. Но с недавних пор мышь стала работать через раз....

вывод 8 строк на дисплей Nokia5110 под ATmega. Всё работает - AVR
Всем доброго времени суток!!! Программирую не первый десяток лет, паяю – еще больше. С недавнего времени и микрококнтроллеры. Но...

10
Tronix
157 / 104 / 5
Регистрация: 22.08.2010
Сообщений: 215
16.09.2010, 19:09 #2
В строчке 37 и 38 не должно быть слова offset. Мы же передаем не указатель, а сами значения переменных. Дальше не смотрел.
1
kolorimage
6 / 6 / 0
Регистрация: 16.09.2010
Сообщений: 86
16.09.2010, 19:15  [ТС] #3
Цитата Сообщение от Tronix Посмотреть сообщение
В строчке 37 и 38 не должно быть слова offset. Мы же передаем не указатель, а сами значения переменных. Дальше не смотрел.
вот ..поменял.
уже символы ставятся, но присутствует смещение, то есть символы появляются намного левее чем был нажат курсор
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
; mouse test
 
data segment
   
    a db 'l'  
    x db 0
    y db 0
ends
name "mouse"
 
org 100h
 
start:
mov ah,00h
mov al,03h
int 10h
 
mov ax, 1
int 33h
bb:
check_mouse_buttons:
mov ax, 3
int 33h  
mov x,cl
mov y,dl
shr y,3
shr x,3
cmp bx, 1  ; both buttons
je  hide
jmp bb 
 
 hide: 
 
mov ah,13h
mov al,0
mov bl,00100100b
mov cx,1
mov bp, offset a 
mov dh,y
mov dl,x
int 10h
 jmp bb
endp
0
Tronix
157 / 104 / 5
Регистрация: 22.08.2010
Сообщений: 215
16.09.2010, 19:25 #4
Функция 3h прерывания 33h возвращает для текстового режима "виртуальные" координаты. Чтобы получить обычные X и Y, нужно оба значения в CX и DX поделить на 8. То есть после 23 строки нужно вставить что-то типа
Assembler
1
2
shr cx,3
shr dx,3
1
kolorimage
6 / 6 / 0
Регистрация: 16.09.2010
Сообщений: 86
16.09.2010, 19:42  [ТС] #5
ОО)
Спасибо..работает.
А еще один вопрос..
я делаю эту программку в EMU8086, и она отлично работает, но когда я компилирую ее или в этом ему или в тасме то у виндовс ХР работать ничего не хочет. Почему?
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
; mouse test
 
data segment
   
    a db 'l'  
    x db 0
    y db 0
ends
name "mouse"
 
org 100h
 
start:
mov ah,00h
mov al,03h
int 10h
 
mov ax, 1
int 33h
bb:
check_mouse_buttons:
mov ax, 3
int 33h
shr cx,3
shr dx,3  
mov x,cl
mov y,dl  
 
cmp bx, 1  ; both buttons
je  hide
jmp bb 
 
 hide: 
 
mov ah,13h
mov al,0
mov bl,00100100b
mov cx,1
mov bp, offset a 
mov dh,y
mov dl,x
int 10h
 jmp bb
endp
0
Tronix
157 / 104 / 5
Регистрация: 22.08.2010
Сообщений: 215
16.09.2010, 19:45 #6
Не знаю, у меня в WinXP sp3 работает в виндах. А что TASM говорит? Выдает ошибки или все нормально компилирует, но когда запускаеш прогу - черное окно и все?
1
kolorimage
6 / 6 / 0
Регистрация: 16.09.2010
Сообщений: 86
16.09.2010, 19:50  [ТС] #7
Компилирует без ошибок, при запуске черное окно и все, я щелкаю по нему но ставится символ не хочет..
0
Tronix
157 / 104 / 5
Регистрация: 22.08.2010
Сообщений: 215
16.09.2010, 20:03 #8
Цитата Сообщение от kolorimage Посмотреть сообщение
Компилирует без ошибок, при запуске черное окно и все, я щелкаю по нему но ставится символ не хочет..
Мммм... А какая венда? Не семерка случайно? А так не знаю, может проверить свойства - иногда по умолчанию стоит выделение области экрана мыши. Если ее отключить - должно работать.
Ну или остается DosBox.
1
Миниатюры
Некорректно работает программа (мышь + вывод на дисплей)  
kolorimage
6 / 6 / 0
Регистрация: 16.09.2010
Сообщений: 86
16.09.2010, 20:13  [ТС] #9
у меня винда7 на ней стоит VM Ware WS на а на ней уже вин ХР)
у меня в этом окне есть возможность выделять экран..
пробовал открыть свойства нтвдм.ехе но я не могу найти свойство выделения..
0
Tronix
157 / 104 / 5
Регистрация: 22.08.2010
Сообщений: 215
16.09.2010, 20:28 #10
Цитата Сообщение от kolorimage Посмотреть сообщение
у меня винда7 на ней стоит VM Ware WS на а на ней уже вин ХР)
у меня в этом окне есть возможность выделять экран..
пробовал открыть свойства нтвдм.ехе но я не могу найти свойство выделения..
Не-не, запускаеш прогу - появляется окно с черным экраном, в самом верху в левом углу окна есть маленькая иконка. Клацаеш по ней левой и выбираешь свойства.
1
Миниатюры
Некорректно работает программа (мышь + вывод на дисплей)  
kolorimage
6 / 6 / 0
Регистрация: 16.09.2010
Сообщений: 86
16.09.2010, 20:41  [ТС] #11
ООО!
Спасибо большое!
все отлично работает!
1
16.09.2010, 20:41
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.09.2010, 20:41
Привет! Вот еще темы с ответами:

Некорректно работает программа - Delphi
Сам код: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, ...

Программа работает некорректно - Delphi
После выполнения программы видает ошибку: "Access violation... Write of address..." Задча программы: В строке символов определить...

Некорректно работает программа - C++ Builder
Когда нет файла настроек (cfg) программа ставит флаг на пункте "Выход" и передает его кнопке,этот пункт не должен передаваться кнопке,он...

Программа работает некорректно - Free Pascal
Здравствуйте! Возникла проблема с программой, она работает не так как надо. Нужно из одного типизированного файла переписать в другой...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru