Рубрики
Справочник по ассемблеру

NEG

Синтаксис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:

Рубрики
Справочник по ассемблеру

SUB

СинтаксисSUB приемник,источник
Машинный
код
2C ib — SUB AL,imm8
2D iw — SUB AX,imm16
2D id — SUB EAX,imm32
80 /5 ib — SUB r/m8,imm8
81 /5 iw — SUB r/m16,imm16
81 /5 id — SUB r/m32,imm32
83 /5 ib — SUB r/m16,imm8
83 /5 ib — SUB r/m32,imm8
28 /r — SUB r/m8,r8
29 /r — SUB r/m16,r16
29 /r — SUB r/m32,r32
2A /r — SUB r8,r/m8
2B /r — SUB r16,r/m16
2B /r — SUB r32,r/m32
ОписаниеВычитание.
ДействиеВычитание двух целочисленных двоичных операндов.
приёмник = приёмник — источник
ФлагиOF=r SF=r ZF=r AF=r PF=r CF=r

Команда SUB вычитает из первого операнда (приёмника) второй операнд. Результат вычитания переписывает значение операнда — приёмника.

Флаг SF имеет значение только для чисел со знаком. SF=1 указывает на отрицательный знак результата. Пример:

Если числа равноразмерные и без знака, то CF=1 будет указывать на некорректный результат (результат ушел в отрицательное значение). Например:

Для чисел со знаком и при вычитании меньшего по размеру числа от большего (пример, вычитание слова от двойного слова) CF=1 означает, что вычитание выполнилось с заёмом. Инструкция SBB продолжит вычитание с учетом флага CF:

Рубрики
Учебный курс

Учебный курс. Урок 9. Сложение и вычитание

После того, как мы изучили механизм представления и обработки чисел процессором, самое время начать знакомство с инструкциями. Ну а к самым простым инструкциям в ассемблере безусловно относятся мнемоники для сложения и вычитания чисел — ADD и SUB. Сложение — команда ADD Инструкция ADD выполняет сложение двух операндов. ADD можно «скармливать» числа со знаком и без […]