Поиск:

Ответ в темуСоздание новой темы Создание опроса
> состояние клавиш... 
:(
    Опции темы
alexmikt
Дата 30.10.2009, 23:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 2.10.2009

Репутация: нет
Всего: нет



Помогите пожалуйста с решением задачки.....

Написать программу, определяющую состояние клавиш Ins, CapsLock, NumLock, ScrollLock и выполняющую следущие действия: вывод на экран соответствующего сообщения, если не одна из них не нажата; вывод на экран названий нажатых клавиш.

заранее благодарен!
PM MAIL   Вверх
Goodwin98
Дата 31.10.2009, 00:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 1.7.2009
Где: Deeptown

Репутация: нет
Всего: 5



Смотри в сторону функции 2 int 16h.
Или проверяй байт по аддресу 0000h:0417h
PM MAIL ICQ   Вверх
piritus
Дата 31.10.2009, 00:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 226
Регистрация: 3.1.2007
Где: Сибирь

Репутация: нет
Всего: 3



Код

.186
.model    small
.stack    100h

.data 
    msgON     db "ON",13,10,"$"
    msgOFF   db "OFF",13,10,"$"
    msgCL     db "CapsLock   - ","$"
    msgNL    db "NumLock    - ","$"
    msgSL     db "ScrollLock - ","$"
    
.code
IsCapsLockOn proc
    xor        ax,ax    ; Zero out the content of the AX register  
    mov    ah,02h  ; Keyboard shift status function  
    dw    16CDh   ; Issue the interrupt  
    shr        al,06h  ; Move the 7th bit to the rightmost position  
    and    al,01h  ; Mask all other bits out  
    ret             ; Return to the calling procedure
IsCapsLockOn endp
IsNumLockOn proc
    xor        ax,ax   ; Zero out the content of the AX register  
    mov        ah,02h  ; Keyboard shift status function  
    dw      16CDh   ; Issue the interrupt  
    shr        al,05h  ; Move the 6th bit to the rightmost position  
    and     al,01h  ; Mask all other bits out  
    ret             ; Return to the calling procedure
IsNumLockOn endp
IsScrollLockOn proc
    xor        ax,ax   ; Zero out the content of the AX register  
    mov    ah,02h  ; Keyboard shift status function  
    dw      16CDh   ; Issue the interrupt  
    shr    al,04h  ; Move the 5th bit to the rightmost position  
    and    al,01h  ; Mask all other bits out  
    ret             ; Return to the calling procedure
IsScrollLockOn endp

start:
    mov        ax,@data        
    mov        ds,ax        
    
;---------- Test CapsLock ----------
    mov        dx,offset msgCL 
    mov        ah,9              
    int        21h    
    call    IsCapsLockOn
    test    al,al
    jne CLON_p

    mov        dx,offset msgOFF    
    jmp        PrintCL
    
CLON_p:
    mov        dx,offset msgON  

PrintCL:
    mov        ah,9              
    int        21h                 
;-----------------------------------

;---------- Test NumLock -----------
    mov        dx,offset msgNL 
    mov        ah,9              
    int        21h    
    call    IsNumLockOn
    test    al,al
    jne NLON_p

    mov        dx,offset msgOFF    
    jmp        PrintNL
    
NLON_p:
    mov        dx,offset msgON  

PrintNL:
    mov        ah,9              
    int        21h                 
;-----------------------------------

;--------- Test ScrollLock ---------
    mov        dx,offset msgSL 
    mov        ah,9              
    int        21h    
    call    IsScrollLockOn
    test    al,al
    jne SLON_p

    mov        dx,offset msgOFF    
    jmp        PrintSL
    
SLON_p:
    mov        dx,offset msgON  

PrintSL:
    mov        ah,9              
    int        21h                 
;-----------------------------------

    mov        ax,0C07h    
    int        21h            
    
    mov        ax, 4C00h    
    int        21h        
end start


--------------------
PM MAIL ICQ   Вверх
alexmikt
Дата 1.11.2009, 09:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 2.10.2009

Репутация: нет
Всего: нет



Спасибо огромное!!!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm для Windows/DOS"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm для Windows/Dos | Следующая тема »


 




[ Время генерации скрипта: 0.0648 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.