57
Установка регистра FLAGS в соответ-
ствии с результатом логического ум-
ножения непосредственного операнда и
операнда в аккумуляторе.
1010100w нет
Логическое сложение операнда из па-
мяти/регистра и операнда из регистра.
000010dw mod reg r/m
Логическое сложение непосредствен-
ного операнда и операнда из памя-
ти/регистра.
1000000w mod 001 r/m
OR
Логическое сложение непосредствен-
ного операнда и операнда в аккумуля-
торе.
0000110w нет
Операция "исключающее ИЛИ" над
операндами из памяти/регистра и из ре-
гистра.
001100dw mod reg r/m
Операция "исключающее ИЛИ" над
непосредственным операндом и опе-
рандом из памяти/регистра.
1000000w mod 110 r/m
XOR
Операция "исключающее ИЛИ" над
непосредственным операндом и опе-
рандом в аккумуляторе.
0011010w нет
Команды сдвига
предназначены для выполнения логических, арифметических и цикли-
ческих сдвигов. Поле операнда имеет формат mem/reg, count. Здесь
mem/reg адресует регистр или ячейку памяти, а count (счет или счетчик)
определяет число сдвигов. Число сдвигов может быть указано как кон-
станта 1 (статический сдвиг) или как регистр CL. В первом случае осуще-
ствляется сдвиг на один байт,
а во втором - число сдвигов определяется
содержимым регистра CL, которое должно быть беззнаковым целым дво-
ичным числом. Таким образом, число сдвигов можно задать переменной,
вычисляемой во время выполнения программы (так называемый динами-
ческий сдвиг). При выполнении команд сдвигов флаги изменяются сле-
дующим образом:
• состояние флага AF всегда не определено;
• флаг CF всегда содержит значение последнего выдвинутого бита;
• в однобитных сдвигах флаг OF=0, если операция изменила значение
старшего (знакового) бита операнда; при сдвиге на несколько бит со-
стояние флага OF не определено;
• циклические сдвиги влияют только на флаги OF и CF;
• в арифметических и логических сдвигах флаги SF, ZF и PF изменяются
в соответствии с полученным результатом.