На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Перед отправкой сообщения внимательно прочтите правила раздела!!!
1. Запрещается обсуждать написание вирусов, троянов и других вредоносных программ!
2. Помните, что у нас есть FAQ раздела Assembler и Полезные ссылки. Посмотрите, возможно, там уже имеется решение вашего вопроса.

3. Настоятельно рекомендуем обратить особое внимание на правила форума, которые нарушаются чаще всего:
  3.1. Заголовок темы должен кратко отражать её суть. Темы с заголовками типа "Срочно помогите!" или "Ассемблер" будут отправляться в Корзину для мусора.
  3.2. Исходники программ обязательно выделяйте тегами [code]...[/code] (одиночные инструкции можно не выделять).
  3.3. Нежелательно поднимать старые темы (не обновлявшиеся более года) без веской на то причины.

Не забывайте также про главные Правила форума!

Добро пожаловать и приятного вам общения!!! ;)
 
Модераторы: Jin X, Qraizer
  
> Прав ли я ?
    Здравствуйте. Вот допустим надо написать маленькую программку, которая
    при попытке удалить файл или каталог запрашивала бы пароль. Это так,
    к примеру. Так вот, прав ли я, что хочу воспользоваться для этой цели
    функцией 13Н прерывания int21H ? То бишь я должен переделать на время
    действия этой программы стандартный обработчик 13Н и заменить его на
    свой, так ? Да, и ещё. В стеке сохранить ведь надо ds, dx, cx и флаги, да ? А ещё ?
    А после завершения моего обработчика вытолкнуть их оттуда ?
    Прав ли я ? Thanks.
      > Так вот, прав ли я, что хочу
      > воспользоваться для этой цели
      > функцией 13Н прерывания int21H
      Эта функция была в первой версии DOS, сейчас ее редко используют или не используют вовсе. Но в принципе может контролировать и эту функцию.
      Вообще же тебе надо обрабатывать следующие функции:
      ah = 13h - удаление файла (FCB)
      ah = 41h - удаление файла
      ah = 3Ah - удаление каталога
      ax = 713Ah - удалить каталог (LFN)
      ax = 7141h - удалить файл (LFN)
      > То бишь я должен переделать на время
      > действия этой программы стандартный
      > обработчик 13Н и заменить его на
      > свой, так ?
      Да, плюс вышенаписанные функции
      > В стеке сохранить ведь надо ds, dx, cx и
      > флаги, да ? А ещё ?
      > А после завершения моего обработчика
      > вытолкнуть их оттуда ?
      В обработчике надо сохранять все изменяемые регистры, кроме регистра флагов. За сохранение его содержимого и восстановление отвечают int и iret
      Только может быть проблема со стеком внутри твоего обработчика. Можно понадеяться на авось, а можно в обработчике зарезервировать память под собственный стек и работать с ним.
      > Прав ли я ?
      В принципе, да!
        Я ж тебе присылал работающую программу....
        Добавь функции, которые rivitna указал и сделай вывод вопроса на экран покрасивее....
          Ну да, кому то легко говорить... Твоя программа конечно же вешает
          машину в определённый момент.. Что же они, эти две программы действительно
          так похожи, чтобы всё сводилось к тому, чтобы что-то просто добавить ?
          Ну похожи они разве только тем, что эта новая программа тоже вешает всё на свете,
          как я только ввожу команду...( попробовал её сегодня воплотить, блин )
          но это по моей вине... Я приписываю это к своей
          безграмотности.
            Хм... А как и куда вводится команда?
            Не используется ли часом для этого опять 21-е прерывание?
              Если программка виснет, то это скорее из-за того, что в обработчике используются другие программные прерывания или не хватает стека.
              В этом случае на одних машинах программа может работать, а на других - виснет, или доводит компьютер до рестарта
                2 Ilyia:
                Ты изъясняйся конкретнее, или напиши текст всего обработчика
                  Не , вы извините, но зря я затеял этот топик. Мне пока не под силу
                  сделать эту прогу. Даже если вы, мне объясните, как говорится,
                  где и чё писать, я всё равно пока вряд ли пойму. Надо мне вначале
                  разобраться с простейшими резидентнами, а я,дурак,хочу чтоб всё сразу...
                  Так что извиняйте, но в любом случае спасибо.
                    Дело тут не в резидентах, а в исполнении программ, прерываниях. Именно на работу процессора и программ стоит налегать... Тогда станет ясна роль прерываний в этом процессе и особенности их использования.
                      Кстати, мне попадались проги, которые для работы с дисками использовали BIOS Int13h.
                        Да, и ещё - для начинающих програмеров на ASM есть две толковые штуки:
                        1) TechHelp - Толковый справочник по прерываниям, функциям BIOS&DOS и т.д.
                        2) VirTech 1.0 - дока по резидентам и другим полезным вещам.
                        Если надо - пришли мне на StormKnight@tut.by свой E-Mail, я их тебе сброшу...
                        Привет из Минска!
                        StormKnight
                          Привет из Краснодара !
                          Честно говоря, я не думал, что так трудно узнать email. Для этого есть
                          иконка со знаком вопроса. TechHelp у меня есть ( респект 7in`у ), вещь
                          хорошая, а вот второе... буду благодарен если пришлёшь, может инте
                          ресное там будет, я сейчас собираю всё, что хоть как-то связано с tsr.
                            2 StormKnight: Мне тоже пришли на eujin@mailru.com :)
                            0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                            0 пользователей:


                            Рейтинг@Mail.ru
                            [ Script execution time: 0,0356 ]   [ 15 queries used ]   [ Generated: 28.04.24, 12:38 GMT ]