Справочник по языку Ассемблера IBM PC

SETcc


(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,16 m1:     rol     ax,1         setc    bl         add     bh,bl         clc         loop    m1         

См. также: урок 10 и команду jcc



Содержание раздела