Форум программистов, компьютерный форум, киберфорум
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
1 / 1 / 0
Регистрация: 05.04.2012
Сообщений: 22
1

Запрет приема скан-кода с клавиатуры на 10 секунд: программа зацикливается

17.12.2012, 15:34. Показов 1435. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет!

У меня проблема технического характера... Работаю на ноутике i7 Windows 7 x64, данный код не работает даже из под Windows. Пытался запустить через MS-DOS, но без успешно. Знакомый проверял код и сказал, что он циклится.
П.С только учусь писать на Ассемблере, и вот такая беда... Что не могу даже проверить программу... Компьютеров в доме больше нет... Пожалуйста скажите в чем проблема то.

Суть программы в запрете приема скан-кода с клавиатуры на 10сек.
(написано на Турбо Паскале):
Pascal
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
BEGIN
ASM
 
@METKA:
IN AL, 64h     
AND AL, 00000010b    
JNZ @METKA   
 
MOV  AL, 0F5H   
OUT 60h, AL   
 
PUSH DS  
 
MOV DX, 40h  
MOV DS, DX  
MOV DX, DS:[6Ch]   
ADD DX, 180   
@PAUSE:
CMP DX, DS:[6Ch]  
JNZ @PAUSE 
 
MOV CX, 0 
 
@@:
IN AL, 64h   
AND AL, 00000010b   
OUT 60h, AL
    
JZ @PROCEED 
LOOP @@ 
 
@PROCEED:   
 
MOV AL, 0F6H 
OUT 60h, AL  
 
POP DS  
 
END;
END.
 
// Этот код якобы циклится....
// Я решил его подправить, но не могу проверить правильно или тоже шлак... :( 
 
Версия два : 
 
BEGIN
ASM
 
MOV BL, 10
 
@BEGIN 
 
@METKA:
IN AL, 64h     
AND AL, 00000010b    
JNZ @METKA   
 
MOV  AL, 0F5H   
OUT 60h, AL   
 
PUSH DS  
 
MOV DX, 40h  
MOV DS, DX  
MOV DX, DS:[6Ch]   
ADD DX, 180   
@PAUSE:
CMP DX, DS:[6Ch]  
JNZ @PAUSE 
 
MOV CX, 0 
 
@@:
IN AL, 64h   
AND AL, 00000010b   
OUT 60h, AL
    
JZ @PROCEED 
LOOP @@ 
 
@PROCEED:   
 
MOV AL, 0F6H 
OUT 60h, AL  
 
POP DS  
 
DEC BL
JNZ @BEGIN
 
END;
END.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.12.2012, 15:34
Ответы с готовыми решениями:

Обеспечить запрет приёма скан-кодов с клавиатуры на 10 секунд
подскажите кто-нибудь, где я ошибся, я новичёк в ассембдере. begin asm @M1: ...

Подмена скан-кода стандартной клавиатуры
Добрый день уважаемые форумчане. Помогите в вопросе переназначения клавиш клавиатуры, а именно...

Обработка прерывания клавиатуры: замена скан-кода клавиши Del на Ins
Спасите прошу. Есть вот такая программа: Подмена клавиш 3. Замените клавишу Del на Ins. Напишите...

Доработка кода поиска минимума и максимума. Программа зацикливается.
Вобщем Вот задание: Разработать и реализовать алгоритм, который будет искать 3-й минимум и 4-й...

4
0 / 0 / 0
Регистрация: 14.12.2012
Сообщений: 5
17.12.2012, 15:54 2
В первом варианте вместо:
Pascal
1
2
3
@PAUSE:
CMP DX, DS:[6Ch] 
JNZ @PAUSE
Попробуй:
Pascal
1
2
3
@PAUSE:
CMP DX, DS:[6Ch] 
JA @PAUSE
0
Клюг
7674 / 3189 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
17.12.2012, 17:43 3
А кто сказал, что 0F6h - команда разрешения клавы?
Цитата Сообщение от Ralf Brown's Port List
F4h sngl enable keyboard
F5h sngl disable keyboard. set default parameters (no keyboard scanning)
F6h sngl set default parameters
0
1 / 1 / 0
Регистрация: 05.04.2012
Сообщений: 22
17.12.2012, 18:31  [ТС] 4
Вот здесь были описаны коды :

0FFh Сброс клавиатуры и запуск внутреннего теста.

0FEh Повторить последнюю передачу.

0FDh Вызов прерывания IRQ1.

0F6h Привести клавиатуру в исходное состояние и
разрешить сканирование.

0F5h Привести клавиатуру в исходное состояние и
запретить сканирование.

0F4h Сбросить буфер клавиатуры и начать сканирование.

0F3h Задать задержку и скорость ввода символов.
Первоначально клавиатура начинает повторять
нажатую клавишу через 0,5 сек со скоростью
10 повторов в секунду.

Добавлено через 1 минуту
Буду пробывать в 04Fh.
Писец какой-то ... значит не всем интернет ресурсам можно верить....
0
Клюг
7674 / 3189 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
17.12.2012, 18:42 5
Вот поэтому я и не люблю переводные доки. Здесь и здесь(+железо/память).
1
17.12.2012, 18:42
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.12.2012, 18:42
Помогаю со студенческими работами здесь

К примеру, после реализации кода нужно, чтобы программа проработала 5-7 секунд и закрылась
Вобщем когда программа выполнила задачу, нужно чтобы таймер досчитал от 5 до 1 к примеру и бантик...

скан-коды клавиатуры
Как определить скан-код нажатой клавиши? private void Form1_KeyPress(object sender,...

Заменить стандартный обработчик клавиатуры(вывод скан кодов)
Есть программа которая выводит скан код нажатия \ отпускания клавиши, но она использует прерывание...

Вывод скан-кода нажатой клавиши
Здравствуйте, мне надо вывести скан-код нажатой клавиши на экран, с помощью функции (или что это...

Не разберу скан кода по встраиваемым функциям
У Дейтлов есть код: Что может быть написано в области, которая выделена мной красной рамочкой?

Запрет ввода секунд в DTPick
Как в элементе управления DTPick сделать так, чтобы нельзя было вводить секунды (то бишь убрать их...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru