Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
clasgh6637
0 / 0 / 0
Регистрация: 23.01.2016
Сообщений: 9
1

Контроллеры клавиатуры. Не загорается *lock

19.06.2016, 14:48. Просмотров 1271. Ответов 15
Метки нет (Все метки)

Пожалуйста помогите. Все работает кроме самого важного. Не загорается индикатор Numlock, и не выключаются клавиши caps и scroll. Задание и листинг ниже.
При нажатии клавиши HOME включить индикатор NumLock и отключить индикаторы ScrollLock и CapsLock. Если введен символ 0, 2 или 4, вывести на дисплей его значение, увеличенное в два раза.
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
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
model small
.stack 100h
.data
  Press    db 'Nagmite lubuyu klavishu', 10, 13, '$'
  PressedHome  db 'Nazhata klavisha HOME!', 10, 13, '$'
  PressedNums  db ' vvedeno. Udvoennoe znachenie'
  TheEnd    db 10, 13, 'konec', 10, 13, '$'
  error     db 10, 13, 'oshibka kontrollera*', 10, 13, '$'
.code
start:
  mov  ax, @data
  mov ds, ax
  lea  dx, Press
  mov  ah, 9h
  int  21h
  mov  ah, 8h
  int  21h
  cmp al, 0
  jne ascii 
  int 21h
  cmp al, 47h
  jne konec
;************************ Ѓ‹ЋЉ 1 ************************
  lea  dx, PressedHome
  mov  ah, 9h
  int  21h
  cli
  xor  cx, cx
wait1:
  in  al, 64h
  test  al, 10b
loopnz  wait1
  jnz er
  mov  al, 0EDh
  out  60h, al
  xor  cx, cx
wait2:
  in  al, 64h
  test  al, 10b
loopnz  wait2
  jnz er
  mov  al, 010b
  out  60h, al
  sti
  jmp exit  
;*********************************************************
ascii:
  cmp al, 30h
  jz nums
  cmp al, 32h
  jz nums
  cmp al, 34h
  jz nums
  jmp konec
; ******************** Ѓ‹ЋЉ 2 *******************************
nums:
  mov ah, 02h
  mov dl, al
  int  21h
  mov cl, al
  lea  dx, PressedNums
  mov  ah, 9h
  int  21h  
  mov al, cl
  mov bl, 30h
  sub al, bl
  shl al, 1
  add al, bl
  mov ah, 02h
  mov dl, al
  int  21h  
  jmp exit
;*********************************************************
konec:
  lea  dx, TheEnd
  mov  ah, 9h
  int  21h
  jmp exit
er:
  lea  dx, error
  mov  ah, 9h
  int  21h
exit:
  mov ah, 0
  int   16h
  mov ax, 4C00h
  int   21h
end start
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.06.2016, 14:48
Ответы с готовыми решениями:

Дан массив чисел. включить режим работы клавиатуры Caps/Lock, используя ком
Всем программистам здравствуйте! нужна ваша помощь очень! надо сделать вот такое задание. ДЛя...

Как заменить ScroLL Lock на Caps Lock
Как заменить чтобы вместо кнопки ScroLL Lock проверялась клавиша Caps Lock. Вот отрывок кода:...

Поменял клавиатуру на ноутбуке и светодиод на Caps Lock не загорается
Поменял клавиатуру, все кнопки работают. Но светодиод, на клавише Caps Lock, не загорается при...

Вывести на экран в символическом виде состояние NUM LOCK, CAPS LOCK и SCROLL LOCK
Помогите решить задачку на турбо си Выводить на экран в символическом виде состояние NUM LOCK,...

Acer aspire 5552G-N974G64Mikk Проблема с Caps Lock, Num Lock, Scroll Lock
Вообщем у меня такая же проблемма http://www.cyberforum.ru/notebooks/thread552722.html ...

15
R71MT
5792 / 1548 / 320
Регистрация: 29.07.2014
Сообщений: 2,575
Записей в блоге: 5
19.06.2016, 14:58 2
Лучший ответ Сообщение было отмечено clasgh6637 как решение

Решение

Цитата Сообщение от clasgh6637 Посмотреть сообщение
Не загорается индикатор Numlock, и не выключаются клавиши caps и scroll
Эта программа будет работать только под чистым досом. Где тестируешь её?
1
clasgh6637
0 / 0 / 0
Регистрация: 23.01.2016
Сообщений: 9
19.06.2016, 16:49  [ТС] 3
компилирую и линкую на TASM, запускаю из DOS BOXa

Добавлено через 1 час 47 минут
В DOS BOX не будет работать?
0
R71MT
5792 / 1548 / 320
Регистрация: 29.07.2014
Сообщений: 2,575
Записей в блоге: 5
19.06.2016, 17:06 4
..я дос-бокс не юзаю, поэтому точно не могу сказать.
Раньше лампочками моргал загружаясь с флопа под чистым досом. В NTVDM не получалось..
0
19.06.2016, 17:06
clasgh6637
0 / 0 / 0
Регистрация: 23.01.2016
Сообщений: 9
19.06.2016, 17:11  [ТС] 5
Посмотри по коду все ли в порядке, если не затруднит мб где то напортачено?
0
R71MT
5792 / 1548 / 320
Регистрация: 29.07.2014
Сообщений: 2,575
Записей в блоге: 5
19.06.2016, 17:47 6
..вроде всё на месте
0
Catstail
Модератор
24406 / 12342 / 2244
Регистрация: 12.02.2012
Сообщений: 20,058
19.06.2016, 22:50 7
Во-первых, для наглядности код нужно окружать тэгами ASM:

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
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
model small
.stack 100h
.data
Press db 'Nagmite lubuyu klavishu', 10, 13, '$'
PressedHome db 'Nazhata klavisha HOME!', 10, 13, '$'
PressedNums db ' vvedeno. Udvoennoe znachenie'
TheEnd db 10, 13, 'konec', 10, 13, '$'
error db 10, 13, 'oshibka kontrollera*', 10, 13, '$'
.code
start:
mov ax, @data
mov ds, ax
lea dx, Press
mov ah, 9h
int 21h
mov ah, 8h
int 21h
cmp al, 0
jne ascii
int 21h
cmp al, 47h
jne konec
;************************ Ѓ‹ЋЉ 1 ************************
lea dx, PressedHome
mov ah, 9h
int 21h
cli
xor cx, cx
wait1:
in al, 64h
test al, 10b
loopnz wait1
jnz er
mov al, 0EDh
out 60h, al
xor cx, cx
wait2:
in al, 64h
test al, 10b
loopnz wait2
jnz er
mov al, 010b
out 60h, al
sti
jmp exit
;*********************************************************
ascii:
cmp al, 30h
jz nums
cmp al, 32h
jz nums
cmp al, 34h
jz nums
jmp konec
; ******************** Ѓ‹ЋЉ 2 *******************************
nums:
mov ah, 02h
mov dl, al
int 21h
mov cl, al
lea dx, PressedNums
mov ah, 9h
int 21h
mov al, cl
mov bl, 30h
sub al, bl
shl al, 1
add al, bl
mov ah, 02h
mov dl, al
int 21h
jmp exit
;*********************************************************
konec:
lea dx, TheEnd
mov ah, 9h
int 21h
jmp exit
er:
lea dx, error
mov ah, 9h
int 21h
exit:
mov ah, 0
int 16h
mov ax, 4C00h
int 21h
end start
Во-вторых, вот хорошая статья
0
clasgh6637
0 / 0 / 0
Регистрация: 23.01.2016
Сообщений: 9
20.06.2016, 16:47  [ТС] 8
За правку спасибо) я читал статью наподобие этой, сделал как по учебнику. Не работает. А сдать надо рабочую.
0
Constantin Cat
3603 / 1154 / 382
Регистрация: 28.02.2015
Сообщений: 2,533
Завершенные тесты: 1
21.06.2016, 10:32 9
Лучший ответ Сообщение было отмечено clasgh6637 как решение

Решение

Цитата Сообщение от clasgh6637 Посмотреть сообщение
Не работает. А сдать надо рабочую.
Делаете загрузочную флешку с ДОСом, перезапускаете комп с флешки, дальше все должно работать.
1
Ferrari F1
793 / 522 / 157
Регистрация: 27.01.2015
Сообщений: 3,025
Записей в блоге: 1
Завершенные тесты: 1
21.06.2016, 10:48 10
Constantin Cat, R71MT, можете пожалуйста сказать, какие у вас есть соображения, чтобы решить подобную задачу не под досом, а под windows 7, скажем?
0
Constantin Cat
3603 / 1154 / 382
Регистрация: 28.02.2015
Сообщений: 2,533
Завершенные тесты: 1
21.06.2016, 10:57 11
Лучший ответ Сообщение было отмечено clasgh6637 как решение

Решение

Цитата Сообщение от R71MT Посмотреть сообщение
Раньше лампочками моргал загружаясь с флопа под чистым досом. В NTVDM не получалось..
Лампочки, принадлежать системе, она показывает пользователю, что и как с клавой. Боюсь, что сама ОСь, не даст Вам это сделать. Сделать загрузочную флешку можно практически за пару минут, темже Rufus'ом, закачать туда ДОС и код, и перезагрузившись запустить свой код. "И овцы сыты, и волки целы".
1
Убежденный
Ушел с форума
Эксперт С++
16149 / 7296 / 1182
Регистрация: 02.05.2013
Сообщений: 11,637
Записей в блоге: 1
Завершенные тесты: 1
21.06.2016, 11:07 12
Цитата Сообщение от Ferrari F1 Посмотреть сообщение
какие у вас есть соображения, чтобы решить подобную задачу не под досом, а под windows 7, скажем?
Посмотри вот эти темы (слова "драйвер" не пугаться, драйверы там не нужны):

Драйвер манипулирования лед лампочек на клавиатуре c++
Хитрая работа с Num Lock

Там и исходники есть рабочие, и детальное описание принципов работы.
1
clasgh6637
0 / 0 / 0
Регистрация: 23.01.2016
Сообщений: 9
23.06.2016, 10:41  [ТС] 13
Всем спасибо, за внимание к этой теме. Этот вариант программы будет работать только в MS DOS. Меня и моего преподавателя это устроит. Тема закрыта.
0
shmkv
1849 / 445 / 63
Регистрация: 21.07.2015
Сообщений: 1,190
24.06.2016, 14:30 14
Цитата Сообщение от Ferrari F1 Посмотреть сообщение
можете пожалуйста сказать, какие у вас есть соображения, чтобы решить подобную задачу не под досом, а под windows 7, скажем?
1. Использовать полноценную виртуальную машину (а не "затычки" вроде досбокс).
2. Писать виндовое приложение.
0
Ferrari F1
793 / 522 / 157
Регистрация: 27.01.2015
Сообщений: 3,025
Записей в блоге: 1
Завершенные тесты: 1
24.06.2016, 16:39 15
shmkv, Убежденный, спасибо Вам большое, ребята, за ваши ответы. Хотел бы в дальнейшем окунуться в мир программирования под windows

Добавлено через 4 минуты
А еще такой вопрос чисто практический: есть ли какая-то нужда в изучении всех этих биосовских и досовских прерываний, как-то применяются они для написания дров для современных осей?
0
shmkv
1849 / 445 / 63
Регистрация: 21.07.2015
Сообщений: 1,190
24.06.2016, 18:20 16
Цитата Сообщение от Ferrari F1 Посмотреть сообщение
как-то применяются они для написания дров для современных осей?
Если честно, то все давно уже написано. Вакансий для системных программистов сейчас мало. Ну в целом это даст некоторое представлений о работе с оборудованием.

Добавлено через 1 минуту
Ну и по вопросу: в современных ОС прерывания BIOS (а DOS тем более) не используются. С устройствами идет прямая работа через регистры и прямой доступ к памяти.
0
24.06.2016, 18:20
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.06.2016, 18:20

Клавиатура мигает всеми тремя индикаторами Caps Lock, Scroll Lock и Num Lock и соответственно не работает!
Здравствуйте парни и девушки! Столкнулся с такой проблемой! Имеется клавиатура Genius Ergomedia...

Работа с клавиатурой (клавиши num lock, caps lock, scroll lock)
определить состояние статуса клавиш " num lock, caps lock,scroll lock " с отображением и их...

Клавиатурный сервис. Озвучивание клавиатуры, индикация Lock-клавиш
Всем привет, в общем нужно переписать программу под win32. Задание было таким: Клавиатурный...


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

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

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