Синтаксис | NEG операнд |
Машинный код | F6 /3 — NEG r/m8 F7 /3 — NEG r/m16 F7 /3 — NEG r/m32 |
Описание | Изменение знака. |
Действие | Команда вычисляет двоичное дополнение операнда. |
Флаги | Если операнд равен нулю: CF=0 OF=r SF=r ZF=r AF=r PF=r. Если операнд не равен нулю: CF=1 OF=r SF=r ZF=r AF=r PF=r. |
Команда NEG меняет знак операнда, преобразуя его значение в дополнительный код. Инструкция имеет смысл только для чисел со знаком, поскольку преобразование теряет смысл, если число 1 преобразуется в интерпретируемое беззнаковым число 255 (FF).
По выполнению инструкции устанавливаются флаги, которые характеризуют преобразование. Если произошло преобразование положительного числа в отрицательное, то SF=1, для всех остальных случаев SF=0.
Пример использования команды NEG:
1 2 3 4 5 6 7 8 | ; f = (a + b - 1) * (-a) mov ah,100 ; a = 100 mov al,85 ; b = 85 mov bl,ah ; bl = a neg bl ; bl = -a add ah,al ; a + b dec ah ; a + b - 1 mul bl ; ax = (a + b - 1) * (-a) |