Поиск:

Ответ в темуСоздание новой темы Создание опроса
> определение состояния клавиш Caps Lock, Num lock 
:(
    Опции темы
ROKI
Дата 17.2.2009, 17:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Привет всем !!! Как можна сделать так, чтобы при включении  клавиш Caps Lock, Num Lock, Scroll Lock, выводилось соответствующее сообщение, и при выключении также.

P.S. 
Как можно реализовать такое задание:

Напишите программу которая бы вводила с помощью одной из функций  прерывания Int21h строки символов в нижнем регистре, превращала введенные символы в верхний регистр и отображала на экране монитора только символы в верхнем ригестре.

Зарание спасибо !!
PM MAIL   Вверх
Akina
Дата 17.2.2009, 18:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20580
Регистрация: 8.4.2004
Где: Зеленоград

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



Цитата(ROKI @  17.2.2009,  18:55 Найти цитируемый пост)
Как можна сделать так, чтобы при включении  клавиш Caps Lock, Num Lock, Scroll Lock, выводилось соответствующее сообщение, и при выключении также.

DOS? Linux? Windows?

Цитата(ROKI @  17.2.2009,  18:55 Найти цитируемый пост)
Напишите программу которая бы вводила с помощью одной из функций  прерывания Int21h строки символов в нижнем регистре, превращала введенные символы в верхний регистр и отображала на экране монитора только символы в верхнем ригестре.

А в чём проблема? 
Код

  lea bx,convert_table
repeat:
  mov ah,1
  int 21h
  xlat al,convert_table
  mov ah,2
  mov dl,al
  int 21h
  jmp repeat



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
ROKI
Дата 17.2.2009, 19:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата

DOS? Linux? Windows?


DOS

Цитата

Код

lea bx,convert_table
repeat:
  mov ah,1
  int 21h
  xlat al,convert_table
  mov ah,2
  mov dl,al
  int 21h
  jmp repeat


Большое спасибо за идею !! Можно уточнить, "convert_table"  ето введенная строка ?
PM MAIL   Вверх
Akina
Дата 17.2.2009, 21:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20580
Регистрация: 8.4.2004
Где: Зеленоград

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



Цитата(ROKI @  17.2.2009,  20:15 Найти цитируемый пост)
"convert_table"  ето введенная строка ?

Нет, это таблица замены

Добавлено через 2 минуты и 21 секунду
Цитата(ROKI @  17.2.2009,  18:55 Найти цитируемый пост)
Как можна сделать так, чтобы при включении  клавиш Caps Lock, Num Lock, Scroll Lock, выводилось соответствующее сообщение, и при выключении также.

смотреть 0:417h в обработчике int 28h, и при изменении сигналить.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
ROKI
Дата 17.2.2009, 23:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата

Нет, это таблица замены


Если я правильно понял, то эта таблица готовится зарание, а мне нужно вводить символы из клавиатуры

Цитата

смотреть 0:417h в обработчике int 28h, и при изменении сигналить.

 smile 

Это сообщение отредактировал(а) ROKI - 17.2.2009, 23:02
PM MAIL   Вверх
Mikl_
Дата 18.2.2009, 05:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(ROKI )
Напишите программу которая бы вводила с помощью одной из функций  прерывания Int21h строки символов в нижнем регистре, превращала введенные символы в верхний регистр и отображала на экране монитора только символы в верхнем ригестре.
Смотришь на ASCII-кодировку символов и замечаешь закономерность кодам больших латинских букв "A" = 41h "B" = 42h ... "Z" = 5Ah соответствуют коды маленьких латинских букв "a" = 61h "b" = 62h ... "z" = 7Ah то есть содержимое 5-го бита в кодировке 0-соответствует большим латинским, а 1 -- маленьким, отсюда код
Код
repeat: mov ah,1
  int 21h
  cmp ah,1; если нажали на клавишу Esc 
  jz a2; выходим из программы
  cmp al,'a'; введенный символ из диаппазона маленьких латинских?
  jb a1; если нет -- выводим на экран без преобразования
  cmp al,'z'
  ja a1
  and al,11011111b;
a1:  mov ah,2; выводим символ на экран
  mov dl,al
  int 21h
  jmp repeat
a2: ...
для маленьких русских букв допиши программу сам smile 
PM MAIL   Вверх
ROKI
Дата 18.2.2009, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



За второе задание спасибо!!! С меня "+". А можно еще пример для работы с Caps Lock ?
PM MAIL   Вверх
Mikl_
Дата 19.2.2009, 04:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(ROKI)
чтобы при включении  клавиш Caps Lock, Num Lock, Scroll Lock, выводилось соответствующее сообщение, и при выключении также.
Скан-коды Caps Lock = 3Ah, Num Lock = 45h, Scroll Lock = 46h пример с Caps Lock  остальные по аналогии
Код
.data
trigger dw 2
CapsLockOn db 'CapsLock включили',0Ah,'$'
CapsLockOff db 'CapsLock выключили',0Ah,'$'
table dw CapsLockOn,CapsLockOff ; адреса сообщений
.code
repeat: mov ah,1
  int 16h
  cmp ah,1; если нажали на клавишу Esc 
  jz a2; выходим из программы
  cmp ah,3Ah; нажат CapsLock?
  jnz repeat
  xor trigger,2; переключаем тригер Caps Lock 0 - включен 2 - выключен
  mov bx,trigger
  mov ah,9
  mov dx,table[bx]
  int 21h
  jmp repeat
a2: ...


Это сообщение отредактировал(а) Mikl_ - 19.2.2009, 12:29
PM MAIL   Вверх
ROKI
Дата 19.2.2009, 20:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



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

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

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


 




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


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

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