Читайте также:
|
|
Логические операции представлены командами NOT (инверсия), AND (конъюнкция), OR (дизъюнкция), XOR (исключающее ИЛИ) и командой TEST, которая выполняет конъюнкцию операндов, но не изменяет их значений. Все логические операции являются поразрядными, т.е. выполняются независимо для всех бит операндов.
Бинарные команды AND, OR, XOR и TEST воздействуют на флажки OF, SF, ZF, PF и CF. Унарная операция NOT не влияет на состояние флажков.
Форматы команд:
AND mem/reg1,mem/reg2
AND mem/reg,data
OR mem/reg1,mem/reg2
OR mem/reg,data
XOR mem/reg1,mem/reg2
XOR mem/reg,data
TEST mem/reg1,mem/reg2
TEST mem/reg,data
NOT mem/reg
КОМАНДЫ СДВИГОВ
Команды сдвигов подразделяются на команды простых сдвигов и команды циклических сдвигов. Циклические сдвиги влияют только на флаги OF и CF, а обычные изменяют пять флажков: OF, SF, ZF, PF и
CF. Команды сдвигов могут работать как с байтами, так и со словами.
Команды ROL и ROR реализуют простой циклический сдвиг влево и вправо соответственно, помещая значение из выдвигаемого бита в освобождающийся бит.
Команды RCL и RCR называются командами циклического сдвига влево и вправо через перенос, так как флажок CF расширяет сдвигаемый операнд на один бит. Таким образом, значение из CF загружается в освобождающийся бит, а выдвигаемый бит помещается в CF.
Команды SHL и SHR реализуют логический сдвиг влево и вправо соответственно. Для логического сдвига характерно, что в освобождающийся бит загружается нуль, а выдвигаемый бит теряется.
Команды SAL и SAR предназначены для арифметического сдвига влево и вправо. Арифметический сдвиг вправо отличается от логического сдвига тем, что знаковый бит не сдвигается, а дублируется в соседнем правом бите, сохраняя тем самым знак числа. Арифметический сдвиг влево эквивалентен логическому, поэтому мнемоники SAL и SHL обозначают одну и ту же машинную команду. Команды арифметического сдвига по существу реализуют умножение и деление чисел без знака на степень числа 2.
Поле операнда команд сдвига имеет вид mem / reg, count. Опреанд count определяет число сдвигов и может быть указан как константа 1 или как регистр CL. В первом случае выполняется сдвиг на один бит, а во втором число сдвигов определяется содержимым регистра CL, которое воспринимается как беззнаковое число.
Формат команды:
ROL mem/reg,1 ROL mem/reg,CL
ROR mem/reg,1 ROR mem/reg,CL
RCL mem/reg,1 RCL mem/reg,CL
RCR mem/reg,1 RCR mem/reg,CL
SHL mem/reg,1 SHL mem/reg,CL
SHR mem/reg,1 SHR mem/reg,CL
SAL mem/reg,1 SAL mem/reg,CL
SAR mem/reg,1 SAR mem/reg,CL
Дата добавления: 2015-02-16; просмотров: 131 | Поможем написать вашу работу | Нарушение авторских прав |