Система команд x86 |
|
Программирование - Архитектура и система команд микропроцессоров x86 |
SETcc
Влияние команды на флаги и форматы команды:
|
|
|
|
|
|
|
|
|
0F 97 |
SETA r/m8 |
Установить байт, если выше (CF=0 и ZF=0) |
Intel386 |
0F 93 |
SETAE r/m8 |
Установить байт, если выше или равно (CF=0) |
Intel386 |
0F 92 |
SETB r/m8 |
Установить байт, если ниже (CF=1) |
Intel386 |
0F 96 |
SETBE r/m8 |
Установить байт, если ниже или равно (CF=1 или ZF=1) |
Intel386 |
0F 92 |
SETC r/m8 |
Установить байт, если перенос (CF=1) |
Intel386 |
0F 94 |
SETE r/m8 |
Установить байт, если равно (ZF=1) |
Intel386 |
0F 9F |
SETG r/m8 |
Установить байт, если больше (ZF=0 и SF=OF) |
Intel386 |
0F 9D |
SETGE r/m8 |
Установить байт, если больше или равно (SF=OF) |
Intel386 |
0F 9C |
SETL r/m8 |
Установить байт, если меньше (SF<>OF) |
Intel386 |
0F 9E |
SETLE r/m8 |
Установить байт, если меньше или равно (ZF=1 или SF<>OF) |
Intel386 |
0F 96 |
SETNA r/m8 |
Установить байт, если не выше (CF=1 или ZF=1) |
Intel386 |
0F 92 |
SETNAE r/m8 |
Установить байт, если не выше или равно (CF=1) |
Intel386 |
0F 93 |
SETNB r/m8 |
Установить байт, если не ниже (CF=0) |
Intel386 |
0F 97 |
SETNBE r/m8 |
Установить байт, если не ниже или равно (CF=0 и ZF=0) |
Intel386 |
0F 93 |
SETNC r/m8 |
Установить байт, если не перенос (CF=0) |
Intel386 |
0F 95 |
SETNE r/m8 |
Установить байт, если не равно (ZF=0) |
Intel386 |
0F 9E |
SETNG r/m8 |
Установить байт, если не больше (ZF=1 или SF<>OF) |
Intel386 |
0F 9C |
SETNGE r/m8 |
Установить байт, если не больше или равно (SF<>OF) |
Intel386 |
0F 9D |
SETNL r/m8 |
Установить байт, если не меньше (SF=OF) |
Intel386 |
0F 9F |
SETNLE r/m8 |
Установить байт, если не меньше или равно (ZF=0 и SF=OF) |
Intel386 |
0F 91 |
SETNO r/m8 |
Установить байт, если не переполнение (OF=0) |
Intel386 |
0F 9B |
SETNP r/m8 |
Установить байт, если нечетно (PF=0) |
Intel386 |
0F 99 |
SETNS r/m8 |
Установить байт, если положительно (SF=0) |
Intel386 |
0F 95 |
SETNZ r/m8 |
Установить байт, если не нуль (ZF=0) |
Intel386 |
0F 90 |
SETO r/m8 |
Установить байт, если переполнение (OF=1) |
Intel386 |
0F 9A |
SETP r/m8 |
Установить байт, если паритет (PF=1) |
Intel386 |
0F 9A |
SETPE r/m8 |
Установить байт, если четно (PF=1) |
Intel386 |
0F 9B |
SETPO r/m8 |
Установить байт, если нечетно (PF=0) |
Intel386 |
0F 98 |
SETS r/m8 |
Установить байт, если отрицательно (SF=1) |
Intel386 |
0F 94 |
SETZ r/m8 |
Установить байт, если нуль (ZF=1) |
Intel386 |
Описание:
Команда SETcc записывает байт со значением 01h в операнд-назначение, если условие сс выполнено, или байт со значением 00h — если условие не выполнено. Выполнение/невыполнение условия определяется текущими значениями флагов в регистре FLAGS.
Многие из приведенных мнемоник имеют одинаковые коды операций (например SETE и SETZ), т.е. они выполняют одинаковые функции и пользователь при написании программ на ассемблере может использовать любую, несколько вариантов написания одной и той же команды допустимы для придания программам большей наглядности (например, термины "меньше" и "больше" обычно используются при сравнении знаковых целых, "выше" и "ниже" — беззнаковых целых).
Операция:
IF condition = TRUE THEN r/m8 = 1; ELSE r/m8 = 0; FI;
Особые ситуации защищенного режима:
#GP(0), если операнд-назначение находится в сегменте, запрещенном для записи, если используется некорректный эффективный адрес операнда в памяти в сегментах CS, DS, ES, FS, GS или нулевой селектор.
#SS(0) при использовании некорректного эффективного адреса в сегменте SS.
#PF(Код ошибки) при страничной ошибке.
Особые ситуации режима реальной адресации:
#GP, если любая часть операнда находится вне пространства эффективных адресов в сегментах CS, DS, ES, FS или GS.
#SS, если любая часть операнда находится вне пространства эффективных адресов в сегменте SS.
Особые ситуации режима V86:
Такие же, как и в режиме реальной адресации.
#PF(Код ошибки) при страничной ошибке.
Все права защищены © Алексей Ровдо, 1994-2023. Перепечатка возможна только по согласованию с владельцем авторских прав. admin@club155.ru