PUSH (PUSH operand onto stack) - Размещение операнда в стеке.
Формат команды:
push источник
Ист может быть – регистр, память, непосредственное значение.
Размещает содержимое операнда в стеке. При этом уменьшает значение указателя стека esp/sp на 4/2 (в зависимости от значения атрибута размера адреса - use16 или use32); и записывает источник в вершину стека (адресуемую парой ss:esp/sp). Команда push используется совместно с командой pop для записи значений в стек и извлечения их из стека.
POP (POP operand from the stack) - Извлечение операнда из стека.
Формат команды:
pop приемник
Осуществляет извлечение слова или двойного слова из стека. Команда применяется для восстановления содержимого из вершины стека в регистр, ячейку памяти или сегментный регистр. Но недопустимо восстановление значения в сегментный регистр cs.
PUSHA (PUSH All general registers onto stack) Размещение всех регистров общего назначения в стеке
Команда pusha используется совместно с командой popa для сохранения и восстановления всех регистров общего назначения(ax, cx, dx, bx, sp, bp, si, di.). Эти команды удобно использовать при работе с процедурами, программами обработки прерываний, а также в других случаях для сохранения и восстановления регистров общего назначения как части контекста некоторого вычислительного процесса.
|
|
POPA (POP All general registers from the stack) Извлечение всех регистров общего назначения из стека
Команда popa явл обратной команде pusha и используется для восстановления содержимого всех регистров общего(di, si, bp, sp, bx, dx, cx, ax) назначения значениями из стека. Эту команду можно использовать в процедурах и программах обработки прерываний для восстановления регистров общего назначения прерванной программы.
PUSHAD (PUSH All general Double word registers onto stack) Размещение всех регистров общего назначения в стеке
Команда pushad используется совместно с командой popad для сохранения и восстановления всех регистров общего назначения(edx, ebx, esp, ebp, esi, edi). Эти команды используются аналогично командам popa и pusha.
POPAD (POP All general Double word registers from the stack) Извлечение всех 32-разрядных регистров общего назначения из стека
Команда popad явл обратной команде pushad и используется для восстановления всех 32-разрядных регистров общего назначения(edi, esi, ebp, esp, ebx, edx, ecx, eax). Эту команду можно использовать в процедурах и программах обработки прерываний для восстановления регистров общего назначения прерванной программы.
PUSHF (PUSH Flags register onto stack) Размещение регистра флагов в стеке
Команда pushf может использоваться для размещения в вершине стека (ss:sp) содержимого регистра флагов flags. Как известно, прямой доступ к регистру флагов невозможен, поэтому данная команда явл одной из немногих команд, позволяющих получить доступ к регистру флагов как к содержимому обычного регистра. Обратное действие, т.е. восстановление - возможно измененного слова - в регистр флагов, осуществляется командой popf. Эта команда может использоваться в программах обработки прерываний и в др случаях, когда необходимо сохранить локальный контекст процесса вычисления.
|
|
POPF (POP Flags register from the stack) Извлечение регистра флагов из стека
Команда popf явл обратной команде pushf и используется для восстановления из стека содержимого регистра флагов eflags. Возможным вариантом использования этой команды явл программы обработки прерываний или др случаи, в которых необходимо сохранять некоторый локальный контекст процесса вычисления. Из-за того, что регистр eflags/flags непосредственно недоступен, команда popf явл одной из немногих возможностей влияния на его содержимое.
PUSHFD (PUSH eFlags Double word register onto stack) Размещение расширенного регистра флагов в стеке
Команды pushfd и popfd используются аналогично командам pushf и popf. Команда pushfd применяется для размещение в стеке регистра флагов. Как известно, прямой доступ к регистру флагов невозможен, поэтому данная команда явл одной из немногих команд, позволяющих получить доступ к регистру флагов как к содержимому обычного регистра. Обратное действие, т.е восстановление - возможно измененного слова - в регистр флагов, осуществляется командой popfd. Эта команда может использоваться в программах обработки прерываний или в др случаях, когда необходимо сохранить локальный контекст процесса вычисления.
POPFD (POP eFlags Double word register from the stack) Извлечение расширенного регистра флагов из стека
Команда popfd явл обратной командой команде pushfd и используется для восстановления из стека содержимого регистра флагов eflags. Команда popfd не влияет на состояние флагов vm и rf.
Опишите состав и назначение системных команд.
Системные команды предназначены для использования, главным образом, в модулях ОС (в модулях ядра ОС, в драйверах и т.д.). Некоторые из перечисленных ниже команд полезны и при разработке прикладных программ, работающих в защищённом режиме. Как правило, системные команды могут использовать только те программы, которые выполняются в нулевом привилегированном кольце.
ARPL - Коррекция поля привилегий инициатора запроса в селекторе
Синтаксис:
Arpl операнд1, операнд2
Эта команда используется системными модулями для проверки уровня запрашиваемых привилегий в передаваемых им в качестве параметров селекторов. Прикладная программа не должна запрашивать привилегии, превышающие её собственные.
Операнд1 может быть - 16-разрядный регистр или слово памяти, содержащие значение проверяемого селектора. Операнд2 - регистр, в который записано содержимое CS прикладной программы.
Если команда не изменяла уровень привилегий, в регистре FLAGS / EFLAGS устанавливается флаг нуля. В противном случае этот флаг сбрасывается.