Команды вычитания.

Команды вычитания SUB, SBB, DEC аналогичны командам ADD, ADC, INC, только производят операцию вычитания, а не сложения.

Команда CMP аналогична команде SUB, но результат не запоминается в приемнике, а устанавливаются только флаги в соответствии с результатом. CMP - это команда сравнения, после которой обычно следует команда условного перехода. Состояние флагов после выполнения команды CMP приведено в таблице 2.7.

Таблица 2.7. Состояние регистра флагов после выполнения команды CMP

  Знаковые Беззнаковые
приемник>источника ZF=0&SF=OF CF=0&ZF=0
приемник³источника SF=OF CF=0
приемник=источника ZF=1 ZF=1
приемник£источника ZF=1&SF¹OF CF=1&ZF=1
приемник<источника SF¹OF CF=1

 

Команда NEG изменяет знак своего операнда, то есть вычитает значение операнда-приёмника из 0 и тем самым формирует его дополнение до двух. Полезна для вычитания значения регистра или ячейки памяти из непосредственного значения.

Пример:

SUB 100, AL - запрещена

Можно сделать следующее:

NEG AL

ADD AL, 100

NEG - даёт дополнительный код операнда