Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ctrl+Alt+Shift, Как проверить 
:(
    Опции темы
sharq
Дата 19.12.2005, 14:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Perl Liker
**


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

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



Есть резидентная программа на асме, как сделать, чтобы некоторая функция активизировалась, только после нажатия комбинации Ctrl+Alt+Shift.

Я пробовал считывать последовательно с порта нажатие и отжатие этих клавиш, но событие не проходило... оставил только по нажатию Ctrl, тогда работает.

Код

        in  AL, 60h ; read port 60h - SCAN code key
        cmp AL, 29 ; ctrl down
        ; je CTRLDOWN
        ; jmp STOP
        
        ; CTRLDOWN:
            ; in  AL, 60h ;
            ; cmp AL, 157 ; ctrl up
            ; je ALT
            ; jmp STOP
            
            ; ALT:
                ; cmp AL, 56 ; alt down
                ; je ALTDOWN
                ; jmp STOP
                
                ; ALTDOWN:
                    ; cmp AL, 184 ; alt down
                    ; je SHIFT
                    ; jmp STOP
                    
                    ; SHIFT:
                        ; cmp AL, 42 ; shift up
                        je PROCESS
                        jmp STOP
        
        PROCESS:
            mov CS:flag, 1
            jmp STOP
        
        STOP:
            ...


В чем ошибка? Может не так надо?



--------------------
[color=gray]There's More Than One Way To Do It[/color]
PM MAIL WWW ICQ Skype   Вверх
Akina
Дата 19.12.2005, 14:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Код

xor ax,ax
mov es,ax
mov al, byte ptr es:[417h]
test al,00001100b
jz not_Ctrl_Alt_Shift
and al,00000011b
jz not_Ctrl_Alt_Shift
Ctrl_Alt_Shift:
; .....
not_Ctrl_Alt_Shift:
; .....



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

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


 
**


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

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



А чем флаги БИОС не устраивают ?

И на память они мапятся...

PM MAIL WWW ICQ   Вверх
Akina
Дата 19.12.2005, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



sharq
Кстати... а ихде ты это вот - in AL, 60h - делаешь? в программе, что ли???


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

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


 
**


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

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



Ctrl_Alt_Del — ему Shift нужен...

А для CtrlAltDel перехватчик в INT 9 свой есть — он досюда не пустит
 
Добавлено @ 14:24 
Или ему надо INT 9 перехватывать и делать в памяти свой флаг...
 
Добавлено @ 14:27 
Вот простой перехватчик INT 9 — маленький такой KeyRus...


Это сообщение отредактировал(а) SergeCpp - 3.3.2008, 15:30
PM MAIL WWW ICQ   Вверх
Akina
Дата 19.12.2005, 16:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(SergeCpp @ 19.12.2005, 15:23)
Ctrl_Alt_Del — ему Shift нужен...

Спасибо. Опечатка. На автомате. Опять же привычка smile


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

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


Perl Liker
**


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

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



Akina спасибо за решение, но меня интересует, как сделать это через порт, используя in AL, 60h

Цитата(Akina @ 19.12.2005, 15:22)
Кстати... а ихде ты это вот - in AL, 60h - делаешь? в программе, что ли???

Именно, смотри мой пост здесь.

smile



--------------------
[color=gray]There's More Than One Way To Do It[/color]
PM MAIL WWW ICQ Skype   Вверх
SergeCpp
Дата 19.12.2005, 17:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


 
**


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

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



Тебе надо INT 9 перехватывать и делать в памяти свой флаг...

Вот простой перехватчик INT 9 — маленький такой KeyRus...

Или будет бяка...

INT 9 и твоя прога подерутся!

Сильно!


Это сообщение отредактировал(а) SergeCpp - 3.3.2008, 15:34
PM MAIL WWW ICQ   Вверх
Akina
Дата 19.12.2005, 18:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(sharq @ 19.12.2005, 18:15)
меня интересует, как сделать это через порт, используя in AL, 60h

Что значит как... не хочешь смотреть low memory - сам детекти нажатие-отпускание модификаторов и тести по флагу:

Код

in AL, 60h
cmp al,Left_Shift_ScanCode
jne next_1
or byte ptr cs:Shift_Status,1
next_1:
cmp al,Right_Shift_ScanCode
jne next_2
or byte ptr cs:Shift_Status,1
next_2:
cmp al,Left_Alt_ScanCode
jne next_3
or byte ptr cs:Shift_Status,2
next_3:
cmp al,Right_Alt_ScanCode
jne next_4
or byte ptr cs:Shift_Status,2
next_4:
cmp al,Left_Ctrl_ScanCode
jne next_5
or byte ptr cs:Shift_Status,4
next_5:
cmp al,Right_Ctrl_ScanCode
jne next_6
or byte ptr cs:Shift_Status,4
next_6:
; ...

типа такого... но где смысл?


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

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

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

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


 




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


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

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