обаботка INT1

Тема в разделе "WASM.ASSEMBLER", создана пользователем VooDooo, 24 апр 2006.

  1. VooDooo

    VooDooo New Member

    Публикаций:
    0
    Регистрация:
    26 авг 2005
    Сообщения:
    30
    Адрес:
    Russia
    такая проблема: написал маленькую процедурку для обработки прерывания под номером 1, меняю вектор в IDT, устанавливаю флаг TF (popfd). Далее каждая команда должна генерировать INT 1 как я понимаю... Получая управление моя процедурка (пока она ничего не делает) просто переходит к выполнению следующей команды, выполняя команду IRET. После первого же IRET заваливается и выдается BSOD. В чем дело???
     
  2. NullSessi0n

    NullSessi0n New Member

    Публикаций:
    0
    Регистрация:
    20 янв 2006
    Сообщения:
    322
    VooDooo

    Ну то что не после каждой команды int 1 это точно. После первого же исключения int 1 TF сбрасывается. И его заново надо устанавливать. Больше ничего сказать не могу.
     
  3. VooDooo

    VooDooo New Member

    Публикаций:
    0
    Регистрация:
    26 авг 2005
    Сообщения:
    30
    Адрес:
    Russia
    дело в том что когда сохраняется EFLAGS при прирывании, он остается с установленным TF и при команде IRET все должно повторится, т.е. EFLAGS после IRET снова будет иметь установленный TF. Но вот почему все падает полсле команды IRET с синим экранчиком я не пойму.
     
  4. sergh

    sergh New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2005
    Сообщения:
    128
    Адрес:
    rsdn
    Может надо iretd?
     
  5. Godness

    Godness Мёртвый дзена

    Публикаций:
    0
    Регистрация:
    27 ноя 2002
    Сообщения:
    90
    VooDooo



    Где-то ты тупиш, покажи свой код...