Переключение задач

Тема в разделе "WASM.ASSEMBLER", создана пользователем speck, 8 фев 2005.

  1. speck

    speck New Member

    Публикаций:
    0
    Регистрация:
    12 дек 2004
    Сообщения:
    2
    Разбираюсь я с переключением задач в защищенном режиме и вот натолкнулся на одну трудность...

    Имеются две задачи, первая переключается на вторую, вторая - на первую и первая зависает...(гениально!) Все вроде работает, но стоит из первой задичи вызвать функцию, написанную например на СИ - и вторая задача уже не переключается на первую, а перезагружает комп.. Вот так все это выглядит:



    task1:



    call func ;;???



    ...

    jmp TSS_SEL:0





    z: jmp z





    task2:

    ...

    jmp TSS_SEL:0

    jmp task2





    Инструкция call вроде тоже переключает задачи? Тогда как же функции вызывать? Неужели для каждой функции своя задача? Видимо я где-то сильно прокалываюсь... Ткните носиком..
     
  2. FastSoft

    FastSoft New Member

    Публикаций:
    0
    Регистрация:
    19 фев 2005
    Сообщения:
    54
    Адрес:
    Russia
    Это мой первый пост в этот форум. Сайт, на котором он есть, я уже сто раз скачал, сто раз прочитал. Настало время и помоч кому-то.

    О великий speck! Полгода назад я писал свою ось, которая грузилась с дискеты и делала много задач. НО я никогда не использовал си. В вашем случае может быть

    -Функция за пределами задачи, которая ее пытается вызвать и ничего на этот счет не предпринято.

    -Функций CALL разных несколько. Если она ближняя - вызовет функцию, если дальняя - смотря на что указывает.
     
  3. Chingachguk

    Chingachguk New Member

    Публикаций:
    0
    Регистрация:
    2 сен 2002
    Сообщения:
    340
    В таких случаях лучше не полениться и написать свои обработчики исключений - хотя бы с указанием номера исключения и адреса команды. Для получения опкода команды исключения лучше определить дескриптор-псевдоним на все пространство. Кажется, где-то в форуме я уже постил такой код, да и в статьях наверняка есть...