Assembler - язык неограниченных возможностей


Системные и привилегированные команды - часть 3



  • Команда:
  • LMSW источник
  • Назначение:
  • Загрузить слово состояния процессора
  • Процессор:
  • 80286

    Копирует младшие четыре бита источника (16-битный регистр или переменная) в регистр CR0, изменяя биты РЕ, МР, ЕМ и TS. Кроме того, если бит РЕ = 1, этой командой его нельзя обнулить, то есть нельзя выйти из защищенного режима. Команда LMSW существует только для совместимости с процессором 80286, и вместо нее всегда удобнее использовать mov cr0,еах.

    Команда выполняется только в реальном режиме или с CPL = 0.


  • Команда:
  • SMSW приемник
  • Назначение:
  • Прочитать слово состояния процессора
  • Процессор:
  • 80286

    Копирует младшие 16 бит регистра CR0 в приемник (16- или 32-битный регистр или 16-битная переменная). Если приемник 32-битный, значения его старших бит не определены. Команда SMSW существует только для совместимости с процессором 80286, и вместо нее удобнее использовать mov еах,cr0.


  • Команда:
  • CLTS
  • Назначение:
  • Сбросить флаг TS в CR0
  • Процессор:
  • 80286

    Команда сбрасывает в 0 бит TS регистра CR0, который устанавливается процессором в 1 после каждого переключения задач. CLTS предназначена для синхронизации сохранения/восстановления состояния FPU в многозадачных операционных системах: первая же команда FPU в новой задаче при TS = 1 вызовет исключение #NM, обработчик которого сохранит состояние FPU для старой задачи и восстановит сохраненное ранее для новой, после чего выполнит команду CLTS и вернет управление.

    Команда выполняется только в реальном режиме или с CPL = 0.


  • Команда:
  • ARPL приемник,источник
  • Назначение:
  • Коррекция поля RPL селектора
  • Процессор:
  • 80286

    Команда выполняет сравнение полей RPL двух сегментных селекторов. Приемник (16-битный регистр или переменная) содержит первый, а источник (16-битный регистр) содержит второй. Если RPL приемника меньше, чем RPL источника, устанавливается флаг ZF, и RPL приемника становится равным RPL источника. В противном случае ZF = 0 и никаких изменений не происходит. Обычно эта команда используется операционной системой, чтобы увеличить RPL селектора, переданного ей приложением, с целью удостовериться, что он соответствует уровню привилегий приложения (который система может взять из RPL сегмента кода приложения, находящегося в стеке).




    Начало  Назад  Вперед