статус клавиш num, caps и scroll lock

Ответить

Код подтверждения
Введите код в точности так, как вы его видите. Регистр символов не имеет значения.

BBCode ВКЛЮЧЁН
[img] ВКЛЮЧЁН
[url] ВКЛЮЧЁН
Смайлики ОТКЛЮЧЕНЫ

Обзор темы
   

Развернуть Обзор темы: статус клавиш num, caps и scroll lock

Re: статус клавиш num, caps и scroll lock

Alex_Burn » 26 апр 2008, 18:06

Спасибо большое всем за помощь!!! Разобрался.

Оставляю потомкам следующий код. Циклическое переключение светодиодов клавиатуры.

[Syntax="ASM"]

.model tiny
.code
org 100h ; COM-программа

start proc near
mov ah,2 ; функция 02 прерывания 1Ah
int 1Ah ; получить текущее время
mov ch,dh ; сохранить текущую секунду в CH
mov cl,0100b ; CL = состояние светодиодов клавиатуры

main_loop:
call change_LEDs ; установить светодиоды в соответствии с CL

shl cl,1 ; следующий светодиод,
test cl,1000b ; если единица вышла в бит 3,
jz continue
mov cl,0001b ; вернуть ее в бит 0,
continue:
mov ah,1 ; проверить, не была ли нажата клавиша,
int 16h
jnz exit_loop ; если да - выйти из программы
push cx
mov ah,2 ; функция 02 прерывания 1Ah
int 1Ah ; получить текущее время
pop cx
cmp ch,dh ; сравнить текущую секунду в DH с CH
mov ch,dh ; скопировать ее в любом случае,
je continue ; если это была та же самая секунда - не
; переключать светодиоды,
jmp short main_loop ; иначе - переключить светодиоды

exit_loop:
mov ah,0 ; выход из цикла - была нажата клавиша
int 16h ; считать ее
ret ; и завершить программу
start endp

; процедура change_LEDs
; устанавливает состояние светодиодов клавиатуры в соответствии с числом в CL
change_LEDs proc near
call wait_KBin ; ожидание возможности посылки команды
mov al,0EDh
out 60h,al ; команда клавиатуры EDh
call wait_KBin ; ожидание возможности посылки команды
mov al,cl
out 60h,al ; новое состояние светодиодов
ret
change_LEDs endp

; процедура wait_KBin
; ожидание возможности ввода команды для клавиатуры
wait_KBin proc near
in al,64h ; прочитать слово состояния
test al,0010b ; бит 1 равен 1?
jnz wait_KBin ; если нет - ждать,
ret ; если да - выйти
wait_KBin endp
end start

[/Syntax]

Под ХР не работает, но с загрузочной дискетки работает замечательно. По слухам под 98-ю Винду тоже работает. Может кому проигодится.

Еще раз всем спасибо!

Re: статус клавиш num, caps и scroll lock

airyashov » 23 апр 2008, 10:30

скопировать на неё так же программу, дискету в дисковод, в биосе первое загрузка с дискеты (или F8/Esc/F12/F11 для выбора бут меню если есть, для разных матерей по разному) и затем запустить программу.
если подробнее надо можно и подробнее написать

Re: статус клавиш num, caps и scroll lock

Alex_Burn » 23 апр 2008, 09:03

&quot писал(а): чистый DOS - это загрузочная дискете, либо какой-нить реанимационный диск, либо NERO создайте загрузочный CD с DOS. Загружаете компутер с такого носителя и проверяйте программы.
Нельзя ли по подробней как это осуществить.
Ну, загрузочную дискету я уже создал.
Можно ли описать мне мои дальнейшие действия?

Re: статус клавиш num, caps и scroll lock

airyashov » 23 апр 2008, 08:56

чистый DOS - это загрузочная дискете, либо какой-нить реанимационный диск, либо NERO создайте загрузочный CD с DOS. Загружаете компутер с такого носителя и проверяйте программы.

Re: статус клавиш num, caps и scroll lock

Alex_Burn » 22 апр 2008, 19:57

Пробовал запускать через DOSBox и код любезно предоставленный airyashov, и код уважаемого BBB, но, к сожалению, никакого эффекта программы на индикаторы клавы. :(
Может быть, у кого-нибудь будут еще мысли по данному вопросу? :confused:
Я пока пошел вешаться... :(

Re: статус клавиш num, caps и scroll lock

Alex_Burn » 22 апр 2008, 17:22

&quot писал(а): DOS Box 0.72 в помощь...
Пробовал, прога из поста 4 данной темы на индикаторы не влияет

Re: статус клавиш num, caps и scroll lock

somewhere » 22 апр 2008, 16:55

DOS Box 0.72 в помощь...

Re: статус клавиш num, caps и scroll lock

Alex_Burn » 22 апр 2008, 14:43

Ну, г-н airyashov писал что прога пашет под чистый DOS.

Вот я и подумал, возможно ли не запускать винду, а заходить через DOS (в смысле, через загрузочную дискету, если, конечно данное действие возможно)

Я пытался решить данную проблему следующим путем:

Скачал эмулятор DOS. Но он почему-то не работает. Можно работать только на виртуальной дискете, а на HDD заходить не хочет, говорит что-то типа 'Invalid Drive C:'. Правда я пытался эмулировать DOS на ноуте, где у меня гибкого дисковода нет, может в этм проблема. Хотя, виртуалбно он есть.

В общем, мне хочется увидеть работоспособность проги, но пока не выходит... :-(

Re: статус клавиш num, caps и scroll lock

BBB » 22 апр 2008, 14:17

Alex_Burn писал(а):Пардон за тупой вопрос, но как проги из под DOS запускать? (Просто я этого никогда не делал)
Вопрос не совсем ясен. Уточните.

Re: статус клавиш num, caps и scroll lock

Alex_Burn » 22 апр 2008, 13:39

&quot писал(а): Не знаю, насколько необходимо сделать это все через ассемблер
Ну желательно конечн в АСМе
&quot писал(а):Под Win98 - нормально отрабатывает.
Где же я 98-ю Винду-то возьму?.. :(

Пардон за тупой вопрос, но как проги из под DOS запускать? (Просто я этого никогда не делал)

Вернуться к началу