Команда логического отрицания NOT .

Команда NOT (HE) обращает состояние каждого бита регистра или ячейки памяти и ни на какие флаги не воздействует. Таким образом, команда NOT заменяет каждый 0 на 1, а каждую 1 – на 0. Другими словами, она выполняет для операнда дополнение до единицы.

Команда проверки TEST .

Команда TEST (test — проверить) выполняет операцию AND над опе­рандами, но воздействует только на флаги и не изменяет значения операндов. Команда TEST изменяет флаги точно так же, как команда AND: она обнуляет флаги CF и OF, изменяет флаги PF, ZF и SF, а флаг AF оставляет неопределенным.

Когда вслед за командой TEST указана команда JNZ (jump if not zero - перейти, если не нуль), переход произойдет только в том случае, если хотя бы в одной позиции бита оба операнда содержат 1.

Команды сдвига и циклического сдвига

У микропроцессора 8x86 есть семь команд, осуществляющих сдвиг 8-или 16-битового содержимого регистров или ячеек памяти на одну или несколько позиций влево или вправо. Три из них сдвигают операнд, а остальные четыре его вращают или циклически сдвигают.

Для всех семи команд флаг переноса CF является как бы расширением операн­да битом 9 или битом 17. Иначе говоря, флаг CF приобретает значение бита, сдви­нутого за один из концов операнда. Команды сдвига и циклического сдвига вправо помещают во флаг CF значение нулевого бита. Команды сдвига и цикли­ческого сдвига влево помещают в него значение бита 7 (при операциях над бай­том) или бита 15 (при операциях над словом).

Команды сдвига и циклического сдвига распадаются на две группы. Логичес­кие команды сдвигают операнд, не считаясь с его знаком; они используются для действий над числами без знака или над нечисловыми значениями, например над масками. Арифметические команды сохраняют старший, знаковый бит операнда; они используются для действий над числами со знаком. На рис. 1 показано действие этих команд.

Команды сдвига и циклического сдвига имеют два операнда: приемник и счетчик. Приемником может быть 8- или 16-битовый регистр общего назначения или ячейка памяти. Счетчик может быть цифрой 1 или значением без знака в регистре CL.