pushfd
pop eax
Регистр флагов
В TSS надо занести началный EFLAGS, какова его структура? Какие биты у него являюсться IOPL? Где какие флаги?
http://www.sasm.narod.ru/docs/pm/pm_tss/chap_3.htm. А если про EFLAGS, то открой любой учебник по Асму, а лучше сходи сюда http://wasm.ru
Если ты про TSS то вот
Вот туть вопоса: чему должен быть равен EFLAGS - для новой задачи чтоб IOPL был равен 01b
если тебе нужна схема EFLAGS, то пожалуйста
http://www.frolov-lib.ru/
Также почитай BrokenSword'а
Вообще начни наконец пользоваться поисковиками, а не беспокоить народ по простейшим вопросам, ответы на которые в инете есть чуть ли не на каждом сайте по теме.
Вот здесь есть книжки хорошие:
Также почитай BrokenSword'а
Вообще начни наконец пользоваться поисковиками, а не беспокоить народ по простейшим вопросам, ответы на которые в инете есть чуть ли не на каждом сайте по теме.
Цитата: Vov4ick
Вообще начни наконец пользоваться поисковиками, а не беспокоить народ по простейшим вопросам, ответы на которые в инете есть чуть ли не на каждом сайте по теме.
Всё равно придётся задать ещё вопрос: как, например, в eax поместить EFLAGS? Команда pushf - пихает в стек весь EFLAGS (4 байта)?
Зависит не от режима процессора, а от настройки дескриптора сегмента. Соответственно для желаемого результата нужно писать use16 или use32 чтобы ассемблер добавлял или не добавлял префикс 16 или 32 разрядного операнда.
согласно мануалам от Intel и от AMD команды pushf, pushfd и pushfq (64 битный режим) имеют опкод $9С. и наверно по барабану что использовать use16 или use32
Представим теперь, что сегмент 16-разрядный, но архитектура машины 32-х разрядная и нам надо обратиться к 32-разрядному регистру, что эта самая архитектура позволяет. Такая ситуация встречается очень часто. Для этого перед командой обращения к регистру ставится префикс изменения размера операнда на 32-х разрядный и процессор выполняет то, что мы хотим. Аналогично в 32 и 64 разрядном сегментах.
Ассемблер же не может знать, какая адресация в нашем сегменте и соответственно не знает, нужно ставить префикс изменения разрядности или нет. Поэтому для правильного ассемблирования необходимо указать ято явно спецификатором use16, use32 или use64.