(byte SET on condition)
Установка байта по условию
Схема команды:
| setcc операнд
|
Назначение: установка операнда логическим значением в зависимости от истинности условия, заданного модификатором кода операции cc.
Синтаксис
Алгоритм работы:
Команда проверяет истинность условия, заданного в коде операции, то есть, фактически, состояние определенных флагов.
Команды установки байтов
Команда
| Проверяемые флаги
| Логическое условие
|
SETA/SETNBE
| CF = 0 и ZF = 0
| (выше)/(не ниже или равно)
|
SETAE/SETNB
| CF = 0
| (выше или равно)/(не ниже)
|
SETB/SETNAE
| CF = 1
| (ниже)/(не выше или равно)
|
SETBE/SETNA
| CF = 1 или ZF = 1
| (ниже или равно)/(не выше)
|
SETC
| CF = 1
| перенос
|
SETE/SETZ
| ZF = 1
| ноль
|
SETG/SETNLE
| ZF = 0 или SF = OF
| (больше)/(не меньше или равно)
|
SETGE/SETNL
| SF = OF
| (больше или равно)/(не меньше)
|
SETL/SETNGE
| SF <> OF
| если SF <> OF
|
SETLE/SETNG
| ZF=1 или SF <> OF
| (меньше или равно)/(не больше)
|
SETNC
| CF = 0
| нет переноса
|
SETNE/SETNZ
| ZF = 0
| не равно нулю
|
SETNO
| OF=0
| нет переполнения
|
SETNP/SETPO
| PF = 0
| (неравенство)/(нет контроля четности)
|
SETNS
| SF = 0
| нет знака, число положительное
|
SETO
| OF = 1
| переполнение
|
SETP/SETPE
| PF = 1
| контроль четности/равенство
|
SETS
| SF = 1
| если знак минус, число отрицательное
|
Если проверяемое условие (или содержимое соответствующих флагов на момент выдачи команды setcc) истинно, то установить значение операнда в 01h, если условие ложно — то в 00h.
Состояние флагов после выполнения команды:
выполнение команды не влияет на флаги
|
Применение:
Эти команды можно использовать после любой команды, изменяющей флаги, при необходимости анализа результата изменений. Если проанализировать условия для команд условного перехода, то обнаружится их полное соответствие с условиями, обрабатываемыми командой setcc, за исключением, конечно, команд jcxz и jecxz.
;подсчитать число единичных битов в регистре ax mov cx,16m1: rol ax,1 setc bl add bh,bl clc loop m1 |
См. также: урок 10 и команду jcc