scuter писал(а):
phantom-84 писал(а):
Ты уверен, что у тебя установлен флаг NT?
я его не устанавливал, у основной задачи все флаги сброшены
Этот флаг устанавливается автоматически внутри
вызванной задачи. И чтобы правильно сработал именно нужный iret, нужно обеспечить NT=1 в момент выполнения этого iret'а.
Цитата:
phantom-84 писал(а):
Надеюсь, прерывания во вложенной задаче запрещены.
нет там прерывания разрешены, пробовал запрещять и это не помогает,
пославил исключения и попробовал вызвать какое нибудь из них ( int 10h)
после этого отключилось GDT,
поставил на таймерный IRQ многозадачность и оно тоже не работает.
Прерывания должны быть запрещены. Иначе все прерывания и исключения должны обрабатываться внутри других вложенных задач или при NT=0. Сдается мне, вы неправильно используете аппаратную многозадачность с вложенными задачами. Скорее всего вам больше подойдет аппаратное переключение jump'ом.