Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

переключение задач в PM через IRET

1.2K
05 декабря 2007 года
piroman17
175 / / 20.07.2006
Вот ещё ошибка образовалась:
Делаю переключение задачи с помощью IRET, пишу так:
 
Код:
pushf         ;пихаем в стек флаги
mov ax,11100b
push ax      ;cs
mov eax,next_task_link
push eax    ;eip

iret

На команде iret происходит исключение. режим: PM, код 16-разрядный.
Помогите, плиз, найти ошибку!

P.S. а команда pushf пихает в стек flags или eflags?
602
05 декабря 2007 года
KPI Student
265 / / 16.12.2006
Цитата:
mov eax,next_task_link
push eax ;eip



EAX или AX? Что-то я не понимаю.

Цитата:
режим: PM, код 16-разрядный.



pushf пихает flags, pushfd - eflags

349
06 декабря 2007 года
Phantom-84
656 / / 27.10.2005
Нигде в документации не сказано, что для переключения задач можно использовать команду iret с селектором задачи в стеке!!! iret помимо своего прямого назначения может использоваться лишь при выходе из вложенной задачи (в этом случае селектор новой задачи должен находиться в поле tss.backlink текущей).
1.2K
06 декабря 2007 года
piroman17
175 / / 20.07.2006
Тогда ещё вопрос:

Есть 32-разрядный код одной задачи, он делает int 31h
Есть 16-разрядный код другий задачи, он тоже делает int 31h
int 31h - вызывыется через шлюз прерывания.

Мне надо узнать eip и eflags сначала одной задачи (32 разаряда), потом после переключения по таймеру вторая задача (16 разрядов) вызывает тот же int 31h из неё тоже надо вытянуть eip и eflags.

Как я понмаю из 32-х разрядного кода int делетает следующее:
pushfd
push cs
push eip
а 16-и разрядный:
pushf
push cs
push ip
Вопрос: как мне заставить int в 16-разрядном коде делать pushfd и push eip?
349
08 декабря 2007 года
Phantom-84
656 / / 27.10.2005
Если шлюз прерывания 32-разрядный, то в стек будут помещаться двойные слова.
1.2K
09 декабря 2007 года
piroman17
175 / / 20.07.2006
Огромное спасибо!
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог