![]() |
|
![]() ![]() ![]() |
|
xach |
|
||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 22.10.2004 Где: СПб Репутация: нет Всего: нет |
у меня есть резидентная прога которая вешает свой обработчик на 9h - прерывание (от клавы то бишь) как мне перехватывать нажатия клавиш не поганя информацию для всех последующих обработчиков?
этот вариант не катит (экспериментально убедился =) ) addr - адрес дефольтного обработчика... если делать всё самому то бишь сбрасывать флаг прерывания:
и не вызывать дефольтный обработчик, а ставить
тогда всё прекрасно работает...вотъ... ![]() З.Ы. всё под чистым досом!!! З.З.Ы. возможно любое решение. не обязательно с прерыванием, можно и с какой-либо функций дос...лишь бы работало... заранее мерси! |
||||||
|
|||||||
xach |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 22.10.2004 Где: СПб Репутация: нет Всего: нет |
вот начирикал!
прога в резиденте на escape выводит нолик в левой верхней части экрана. загвоздка в том, что в вин98 отлично пашет (реально клава свободна для ввода команд и т.д.), а под чистым досом подвешивает всё! написана на фасме.
есть идеи? |
|||
|
||||
ksili |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2069 Регистрация: 3.11.2005 Где: Красноярск Репутация: нет Всего: 17 |
Дык она точно резидентно загружается? по-моему нет. поэтому в винде она просто висит в памяти как один из процессов. А в ДОСе многозадачности нет, вот она одна и выполняется
Добавлено через 2 минуты и 36 секунд Если приведённый код и есть вся программа, то в ней нету корректного завершения программы. Правда я на фасме не писал -------------------- Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с) |
|||
|
||||
xach |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 22.10.2004 Где: СПб Репутация: нет Всего: нет |
не-не-не!..она возвращает управление volcov commander-у а потом уже виснет...а в винде всё тоже верно, ибо окно-то консольное однозадачное!..хоть и эмуляция.
она и не должна завершаться...загрузочная часть заканчивается int 27h и dos оставляет прогу в резиденте, то бишь просто не даёт никому записаться по этому адресу. а всю работу делает обработчик прерывания...вотъ... Это сообщение отредактировал(а) xach - 21.12.2007, 09:48 |
|||
|
||||
ksili |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2069 Регистрация: 3.11.2005 Где: Красноярск Репутация: нет Всего: 17 |
Как она может виснуть, если она уже вернула управление в DOS? Или систему вешает сам установленный обработчик при первом нажатии клавиши?
-------------------- Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с) |
|||
|
||||
xach |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 22.10.2004 Где: СПб Репутация: нет Всего: нет |
да, как только жмёшь на клавишу - виснет...даже не выводит символ...а в консоли винды всё ок...
|
|||
|
||||
ksili |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2069 Регистрация: 3.11.2005 Где: Красноярск Репутация: нет Всего: 17 |
а это что такое? Разве так надо возвращаться из обработчика прерывания? -------------------- Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с) |
|||
|
||||
dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 2 Всего: 158 |
||||
|
||||
ksili |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2069 Регистрация: 3.11.2005 Где: Красноярск Репутация: нет Всего: 17 |
Вот здесь
во время выполнения программы [cs:addr]конечно указывает на обработчик, но ведь потом же программа выгружается и cs может измениться. По-моему, адрес перехода в стандартный обработчик надо указывать по-другому -------------------- Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с) |
|||
|
||||
xach |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 22.10.2004 Где: СПб Репутация: нет Всего: нет |
ksili, dumb, спасибо всё заработало. я и вправду забыл про 100h начального смещения...пишешь его всё время, а потом уже и забываешь что это значит...
![]() [eof] |
|||
|
||||
dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 2 Всего: 158 |
|
|||
|
||||
drwatson |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 17.3.2006 Репутация: нет Всего: нет |
у меня похожая задача: надо по нажатию ctrl+alt+p сделать так чтобы дос перестал реагировать на клаву и начал заново реагировать при повторном нажатие ctrl+alt+p. Само сабой программа резидентная. Вот только не пойму почему постоянно вылетает из доса с ошибкой:
![]() Мой код:
|
|||
|
||||
airyashov |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 284 Регистрация: 1.7.2008 Репутация: 1 Всего: 6 |
одна из ошибок которую вижу это флаги из стека убрать при выходе по метке exit Это сообщение отредактировал(а) airyashov - 28.4.2009, 08:04 -------------------- icq:3(один)7748666 mail:airyashov( а )inbox.ru |
||||
|
|||||
drwatson |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 17.3.2006 Репутация: нет Всего: нет |
||||
|
||||
drwatson |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 17.3.2006 Репутация: нет Всего: нет |
Ну раз тут так хорошо помогают, позволю себе задать еще один вопрос. А как теперь эту резидентную программу корректно выгрузить? И еще желательно освободить память. А то я просто восстанавливаю вектор девятого прерывания, но программа работает не стабильно.
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Asm для Windows/DOS" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Asm для Windows/Dos | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |