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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.10.2013, 19:59   #1
Blind Guard
Форумчанин
 
Регистрация: 14.03.2012
Сообщений: 139
Вопрос Переключение светодиодов клавиатуры

Здравствуйте.
Пробую написать циклическое переключение светодиодов клавиатуры. Пускаю в DOS Box, но со светодиодами ничего не происходит, буду благодарен за любую помощь.

Код:
.model small
.stack 100h
.data 

old_irq	dw ?, ?
string2 db "Status byte from keyboard is: "
string2_1 db ?,?,10, 13,"$"

.code
start:  
		mov     ax,@data
        mov     ds, ax
        mov     es, ax
		
		mov ax, 3509h					;remember adress old ISR
		int 21h
		mov word ptr (old_irq), es
		mov word ptr (old_irq+2), bx
		
		push ds
		mov dx, offset irq9				;install new ISR
		mov ax, seg irq9
		mov ds, ax
		mov ax, 2509h 
		int 21h
		pop ds

m3:		call kbdrdy		;check keyboard freedom
		mov al, 0EDh	;print code command SetLED
		out 60h, al		
		call kbdrdy
		mov cx, 2000h	;getch
m6:		loop m6
		mov al, 00000111b ;all on
		out 60h, al
		call kbdrdy
		mov cx, 2000h
m7:		loop m7		
		mov al, 0EDh
		out 60h, al
		call kbdrdy
		mov cx, 2000h
m8:		loop m8
		mov al, 00000000b	;all off
		out 60h, al
		mov cx, 0ffffh
m5:		loop m5
		
m4:		jmp m3
		
		mov ax, 4c00h
		int 21h		

kbdrdy proc 			;check keyboard freedom
		pusha
		mov cx, 0FFFFh
kbdsta:	in al, 64h
		test al, 00000010b
		loopnz kbdsta
		popa
		ret
kbdrdy endp 



print_byte proc   ;al contains byte to print
        pusha
		lea di, string2_1
        mov ah, 0
        mov bl, 16
        div bl
        
        cmp al, 10
        jae p1
        add al, '0'
        jmp p2
p1:     add al, 'A'-10
p2:     mov [di], al
        inc di        
        mov al, ah
        cmp al, 10
        jae p3
        add al, '0'
        jmp p4
p3:     add al, 'A'-10
p4:     mov [di],al
		popa
        ret
endp print_byte


irq9 proc far	   ; new intercept manager
		pusha
		call kbdrdy
		in al, 60h
		call print_byte
		
		lea dx, string2
		mov ah, 09h
		int 21h
		
		mov cx, 0a000h
m10:	loop m10		
		popa
		mov di, bx
		
		mov bx, word ptr (old_irq)
		push bx
		mov bx, word ptr (old_irq+2)
		push bx
		mov bx, di
		retf		
endp irq9
end     start
Blind Guard вне форума Ответить с цитированием
Старый 02.10.2013, 21:11   #2
Blind Guard
Форумчанин
 
Регистрация: 14.03.2012
Сообщений: 139
По умолчанию

Может ли быть проблема в том, что запускаю на ноуте?
Blind Guard вне форума Ответить с цитированием
Старый 03.10.2013, 00:27   #3
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

...cкорее проблема у dosbox-а в прямом доступе к портам в ОС, в которой вы его запускаете. Может укажем или дальше на гуще гадать будем?
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 03.10.2013, 00:44   #4
Blind Guard
Форумчанин
 
Регистрация: 14.03.2012
Сообщений: 139
По умолчанию

Windows 7 x64
версия DOS Box 0.74 если это важно
Blind Guard вне форума Ответить с цитированием
Старый 03.10.2013, 09:01   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от raxp
cкорее проблема у dosbox-а в прямом доступе к портам в ОС, в которой вы его запускаете.
категорически согласен.
можно попробовать поднять настоящую виртуальную машину с MS DOS, но даже в этом случае я не уверен, что этой машине будет Windows, под которой она работает, достутучаться до реальных физических портов.

Гарантировано поможет загрузка на вашем ноуте реальной MS DOS с дискеты (или диска/флешки и т.д.), но, не уверен, старая добрая MS DOS сможет загрузиться на новом железе (со всякими UFI, SSD, raid и т.д. и т.п.). Можно попытаться также загрузиться с операционкой, версией старой Windows, не столько жёстко блокирующей доступ к железу

p.s. а стоит ли овчинка выделки? Так ли уж нужно помигать светодиодами при таких трудностях?
p.p.s. если Вы под windows сидите, так и пишите программы под неё. Не исключаю, что Win API предоставляет программам возможность управлять светодиодами...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 03.10.2013, 09:09   #6
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Цитата:
но, не уверен, старая добрая MS DOS сможет загрузиться на новом железе (со всякими UFI, SSD, raid и т.д. и т.п.)
С RAID вполне могут быть проблемы, а с SSD не должно быть - вряд-ли кто-то принципиально менял ATA команды, лежащие в основе работы БИОС-а с жесткими дисками. Зато не стоит забывать, что NTFS DOS-у не знаком

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

Последний раз редактировалось DiemonStar; 03.10.2013 в 09:13.
DiemonStar вне форума Ответить с цитированием
Старый 03.10.2013, 09:26   #7
Blind Guard
Форумчанин
 
Регистрация: 14.03.2012
Сообщений: 139
По умолчанию

Спасибо за ответы, буду пробовать.
Blind Guard вне форума Ответить с цитированием
Старый 03.10.2013, 10:15   #8
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

...что-то вроде этого вам надо (код для скролл-лока 145):
Код:
invoke keybd_event,eax, 0, 0,                                                                      
invoke keybd_event,eax, 0, KEYEVENTF_KEYUP, 0
http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 03.10.2013, 16:15   #9
Blind Guard
Форумчанин
 
Регистрация: 14.03.2012
Сообщений: 139
По умолчанию

Запустил в DOS'е и всё нормально работает.
Blind Guard вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Зажигание светодиодов от кнопки Faton 11 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 7 22.06.2012 10:35
Переключение звуковух ) Fragman Общие вопросы Delphi 5 28.08.2010 00:03
переключение раскладки клавиатуры по кнопкам Alt и Shift Slash3 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 10.03.2009 13:08
принадлежит ли число, введённое с клавиатуры отрезку (а;в). Границы отрезка вводятся с клавиатуры Maria, Russia Помощь студентам 3 17.02.2009 22:01
Переключение клавиатуры в Turbo pascal 7.1 TrunV Помощь студентам 2 16.01.2009 01:09