![]() |
|
|
![]()
|
|
| newalex |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 92 Регистрация: 15.11.2005 Репутация: нет Всего: нет |
Нужно написать резидент на асме, который бы реагировал на сочетнаие клавиш Alt+ чего нить или Ctrl+... Под реакцией понимается вывод сообщения на экран.
Я вроде знаю как резиденты писать, знаю как сочетания ловить, но чего-то не получается... Хотелось бы увидеть исходный текст для последующего анализа. Можно без комментариев. Заранее благодарен. |
|||
|
||||
| newalex |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 92 Регистрация: 15.11.2005 Репутация: нет Всего: нет |
Извиняюсь, что тему неправильно записал
|
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: нет Всего: 454 |
Вешаешь резидент на клавиатурное прерывание (IRQ1, Int 09h). Если извлекается скан-код нужной клавиши - смотришь Shift Status в Low Memory (а можешь и сам отслеживать), если состояние модификаторов тоже требуемое - выставляешь флаг. По этому флагу обработчик DOS Idle (Int 28h - его ты тоже напишешь) выводит на экран надпись. Все вроде...
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| newalex |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 92 Регистрация: 15.11.2005 Репутация: нет Всего: нет |
Вот написал программу. Резидент, срабатывает на комбинацию Alt+1, но текст не выводит, а фигню какую-то пишет. Подскажите, что не так
Это сообщение отредактировал(а) newalex - 16.11.2005, 18:43 |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: нет Всего: 454 |
Изволь исправить постинг, используя тег "Код" и структурирующие отступы/табуляции - мне в plain text рыться влом.
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| newalex |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 92 Регистрация: 15.11.2005 Репутация: нет Всего: нет |
Исправил... Резидентные программы равно как и ассемблер стал более детально изучать только три дня назад, так что просьба помочь. Догадываюсь, что есть какие-то детали, но их, увы, не знаю.
|
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: нет Всего: 454 |
Первая и главная ошибка - из обработчика 9 прерывания НЕЛЬЗЯ вызывать функции ДОС! а у тебя через 21h выводится мессага...
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| newalex |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 92 Регистрация: 15.11.2005 Репутация: нет Всего: нет |
За этим я вопрос и задал. Прошу наставить меня на путь истинный. Я же написал, что плохо в ассемблере разбираюсь. Помогите кодом, пожалуйста...
Заранее благодарен |
|||
|
||||
| makwen |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 163 Регистрация: 9.11.2005 Где: Киев Репутация: нет Всего: 1 |
Akina:
"Первая и главная ошибка - из обработчика 9 прерывания НЕЛЬЗЯ вызывать функции ДОС! а у тебя через 21h выводится мессага... " Почему нельзя? Я менял 9 прирывание, и внем выводил на экран скан коды нажатых клавиш, и все прикрасно работало! Конечно, можно было писать прямо в видео память, но впадло... |
|||
|
||||
| newalex |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 92 Регистрация: 15.11.2005 Репутация: нет Всего: нет |
Господа, мне поможет кто-нибудь или нет?
|
|||
|
||||
| Lonley |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 597 Регистрация: 7.10.2003 Где: северные ворота М урманск Репутация: нет Всего: 4 |
код не претендует на оригигальность
просто недавно писал правда выгрузку так и не реализовал ленивый Я
Добавлено @ 16:22 а этот копирует экран Нортона (в чем работаешь) в файл
-------------------- Земную жизнь пройдя до половины, Я очутился в сумрачном лесу, Утратив правый путь во тьме долины. Каков он был, о, как произнесу, Тот дикий лес, дремучий и грозящий, |
||||
|
|||||
| newalex |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 92 Регистрация: 15.11.2005 Репутация: нет Всего: нет |
Спасибо за примеры. Посмотрел пока только первый. Чего-то у меня на кнопочки не срабатывает
|
|||
|
||||
| newalex |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 92 Регистрация: 15.11.2005 Репутация: нет Всего: нет |
Нельзя ли поподробнее Это сообщение отредактировал(а) newalex - 17.11.2005, 20:53 |
|||
|
||||
| newalex |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 92 Регистрация: 15.11.2005 Репутация: нет Всего: нет |
Ребят, ну подскажите кто-нибудь нуждающемуся. Исправьте то, что я выше сам выкидывал. Программа то простая должна быть! А я уже три дня сделать не могу... уделите пять минут времени, пожалуйста.
|
|||
|
||||
| makwen |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 163 Регистрация: 9.11.2005 Где: Киев Репутация: нет Всего: 1 |
Вот че-та у меня завалялось! Может пригодится....
.model small stack 256h .486p .data old_off8 dw 0 old_seg8 dw 0 buffer db 00 a dw 00 b db 'Hello $' .code start : off_1ch equ 09h*4 main proc mov ax,@data mov ds,ax xor ax,ax cli mov ax,0 mov es,ax ; sochranjaem starij vektor mov ax,es:[off_1ch]; smewenie starogo vektora 1ch v ax mov old_off8,ax; sochranenija -=- mov ax,es:[off_1ch+2] mov old_seg8,ax ;zapis' novogo vektora v tablizu vektorov pririvanija mov ax,offset new_1ch mov es:off_1ch,ax push cs pop ax mov es:off_1ch+2,ax sti vost_1: jmp vost_1 vost: mov ah,09h lea dx,b int 21h cli xor ax,ax mov es,ax mov ax,old_off8 mov es:off_1ch,ax mov ax,old_seg8 mov es:off_1ch+2,ax sti mov ah,04ch int 21h main endp new_1ch proc push ax push di push es in al,60h cmp al,01 ; ESC je vost mov bl,al pop es pop di in al,61h mov ah,al or al,080h out 61h,al xchg ah,al out 61h,al mov al,20h out 20h,al pop ax iret new_1ch endp end start end |
|||
|
||||
![]()
|
| Правила форума "Asm: Общие вопросы" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Asm: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |