Re: вопрос по проганью в досе
Keywords: "Ralf Brown's Interrupt List."
---
...Я работаю антинаучным аферистом...
---
...Я работаю антинаучным аферистом...
Как всегда, не в тему высказался.
Искать надо по словам TSR, DOS, ASM, Assembler, Real-mode programming и Hardware Interrupts.
Искать надо по словам TSR, DOS, ASM, Assembler, Real-mode programming и Hardware Interrupts.
Ты сначала посмотри в RBIL, тогда и узнаем, чей ответ лучше.
---
"Люди недалёкие обычно осуждают всё, что выходит за пределы их понимания."
Ларошфуко.
---
"Люди недалёкие обычно осуждают всё, что выходит за пределы их понимания."
Ларошфуко.
В RBIL ничего про практическое применение DOS-прерываний и написание TSR-модулей не сказано.
Вряд ли по словарю можно выучить язык.
Вряд ли по словарю можно выучить язык.
"раньше умел и знал где найти, а сейчас забыл...
может кто-нить помнит или даст ссылочку?"
---
...Я работаю антинаучным аферистом...
может кто-нить помнит или даст ссылочку?"
---
...Я работаю антинаучным аферистом...
Надо оставить прогу в памяти резидентно (прерывание INT 27H).
Могу запостить текст самодельной программы под Dos на ассемблере, которая перехватывает клавиши и записывает их в файл. Во времена доса ей пароли дыбал.
Могу запостить текст самодельной программы под Dos на ассемблере, которая перехватывает клавиши и записывает их в файл. Во времена доса ей пароли дыбал.
Кстати, 27h - устаревшая процедура 

DOS вообще устаревшая система 

1. как в досе сделать, что бы прога запускалась как демон?Нет там понятия демон. Ты можешь повесить собственный обработчик на какое-то прерывание, и он будет выполняться при каждом этом событии. Создается эффект демона.
(кажется когда-то был очень распространен пример программы, которая
следила за нажатием клавиш клавиатуры, и скидывала их в файл...)
2. как эмулировать нажатие клавиш клавиатуры?Записывать байтики в буфер клавиатуры.
(это тоже очень известная шняга была... на ассемблере помнится)
Конечно все эти советы без цифр пустые... Если не найдешь в инете список, на который ссылается КОНТРА, то я могу посмотреть в книжках. Но лучше, найди мне лень эти книги откапывать.
> Keywords: "Ralf Brown's Interrupt List."
Эх, в школьные годы купил этот двухтомник за большие по детским понятиям деньги. Так был рад. Теперь он бесполезен, а отдать кому-то жалко. Ведь когда-то так хотел его купить.
Эх, в школьные годы купил этот двухтомник за большие по детским понятиям деньги. Так был рад. Теперь он бесполезен, а отдать кому-то жалко. Ведь когда-то так хотел его купить.
>Нет там понятия демон. Ты можешь повесить собственный обработчик на какое-то прерывание, и он будет выполняться при каждом этом событии. Создается эффект демона.
ТОлько надо этот обработчик еще в памяти сохранить. 27 прерыванием. Если пишешь на языках уровня повыше, чем ASM, учти, что функции типа halt почему-то не всегда корректно работают. И не забудь необходимую проге память подобрать в директивах компилятора.
ТОлько надо этот обработчик еще в памяти сохранить. 27 прерыванием. Если пишешь на языках уровня повыше, чем ASM, учти, что функции типа halt почему-то не всегда корректно работают. И не забудь необходимую проге память подобрать в директивах компилятора.
Он есть в эл. виде.
---
...Я работаю антинаучным аферистом...
---
...Я работаю антинаучным аферистом...
Нет там понятия демон. Ты можешь повесить собственный обработчик на какое-то прерывание, и он будет выполняться при каждом этом событии. Создается эффект демона.
ТОлько надо этот обработчик еще в памяти сохранить. 27 прерыванием. Если пишешь на языках уровня повыше, чем ASM, учти, что функции типа halt почему-то не всегда корректно работают. И не забудь необходимую проге память подобрать в директивах компилятора.Повесить == сохранить.
Если я не путаю, то 27h действительно устарело. Обработчики прерываний меняются какой-то фукнцией из 21h.
> Он есть в эл. виде.
В те времена у меня не было не только ноутбука, но даже компьютера. Поэтому книга намного лучше файла.
В те времена у меня не было не только ноутбука, но даже компьютера. Поэтому книга намного лучше файла.
Ну, если у вас такие термины, спорить не буду. Короче, вешаем прогу в памяти каким-то (мнения разделились) прерыванием и переписываем вектор какого-нибудь прерывания (напр, 9h) на эту прогу.
1) стараемся не пользоваться функциями доса и сей, когда обработываем прерывание
2) когда сработало прерывание мы не хамеем, а запускаем старый обработчик, а потом уже свое действие
3) вешаем обработчики на несколько часто происходящих прерываний и проверяем, чтобы нас не перезатерли
4) обрабатываем повторный запуск нашей программы
5) сохраняем в глобальной переменной стековые регистры: прерывание сработало, то мы сохраняем текущие стековые перем (т.к. это будет не нашей проги стек) потом загоняем в стековые регистры наши значения, перед окончанием обработки должны вернуть все, как было.
ДО ТОГО КАК ВОСТАНОВИМ СВОЙ СТЕК не используем библиотечные функции C и функции DOS
6) и самое главное: перед тем как сделать программу резидентной ее нужно протестировать в ОБЫЧНОМ РЕЖИМЕ!
Язык проще всего выбрать С с асмовскими вставками, или заморачиваться на асме
компиляторы: turbo C 2.0 (очень много примеров таких программ или tasm 5.0 (тоже богато с исходниками)
Самый новый компилятор под DOS это старенькие версии Watcom.
2) когда сработало прерывание мы не хамеем, а запускаем старый обработчик, а потом уже свое действие
3) вешаем обработчики на несколько часто происходящих прерываний и проверяем, чтобы нас не перезатерли
4) обрабатываем повторный запуск нашей программы
5) сохраняем в глобальной переменной стековые регистры: прерывание сработало, то мы сохраняем текущие стековые перем (т.к. это будет не нашей проги стек) потом загоняем в стековые регистры наши значения, перед окончанием обработки должны вернуть все, как было.
ДО ТОГО КАК ВОСТАНОВИМ СВОЙ СТЕК не используем библиотечные функции C и функции DOS
6) и самое главное: перед тем как сделать программу резидентной ее нужно протестировать в ОБЫЧНОМ РЕЖИМЕ!
Язык проще всего выбрать С с асмовскими вставками, или заморачиваться на асме
компиляторы: turbo C 2.0 (очень много примеров таких программ или tasm 5.0 (тоже богато с исходниками)
Самый новый компилятор под DOS это старенькие версии Watcom.
Последнее утверждение неверно.
---
...Я работаю антинаучным аферистом...
---
...Я работаю антинаучным аферистом...
Функциями сей и вообще любыми функциями, не затрагивающими прерывания ДОС, пользоваться можно
ищи доки по написанию резидентов. Пишешь свой обработчик на 16h прерывание. Не забудь потом вызвать тот обработчик, который до тебя там стоял. Можно обращаться напрямую к порту клавы, а можно считывать из буффера.
Оставить комментарий
clubfishka
раньше умел и знал шде найти, а сейчас забыл...может кто-нить помнит или даст ссылочку?
1. как в досе сделать, что бы прога запускалась как демон?
(кажется когда-то был очень распространен пример программы, которая
следила за нажатием клавиш клавиатуры, и скидывала их в файл...)
2. как эмулировать нажатие клавиш клавиатуры?
(это тоже очень известная шняга была... на ассемблере помнится)
можно на с/с++, паскале и, на крайняк, на ассемблере?