ХАНДЫФАР
Вычитание
_______________SUB AL, imm8 - Вычитание imm8 из AL.
_______________SUB AX, imm16 - Вычитание imm16 из AX.
_______________SUB reg/mem8, imm8 - Вычитание imm8 из reg/mem8.
_______________SUB reg/mem16, imm16 - Вычитание imm16 из reg/mem16.
_______________SUB reg/mem16, imm8 - Вычитание знаково-расширенного imm8 из reg/mem16.
_______________SUB reg/mem8, reg8 - Вычитание reg8 из reg/mem8.
_______________SUB reg/mem16, reg16 - Вычитание reg16 из reg/mem16.
_______________SUB reg8, reg/mem8 - Вычитание reg/mem8 из reg8.
_______________SUB reg16, reg/mem16 - Вычитание reg/mem16 из reg16.
Вычитает второй операнд (исходный операнд) из первого операнда (операнд назначения) и сохраняет результат в целевом операнде. Целевым операндом может быть регистр или ячейка памяти; исходным операндом может быть непосредственное значение, регистр или ячейка памяти. (Однако два операнда памяти не могут быть использованы в одной инструкции.) Когда в качестве операнда используется непосредственное значение, оно расширяется по знаку до длины формата целевого операнда.
Инструкция sub выполняет целочисленное вычитание. Она вычисляет результат как для целочисленных операндов со знаком, так и для операндов без знака и устанавливает флаги OF и CF, указывающие на переполнение в результате со знаком или без знака соответственно. Флаг SF указывает на знак знакового результата.
Эта инструкция может использоваться с префиксом lock, чтобы разрешить выполнение инструкции атомарно.
Флаги OF, SF, ZF, AF, PF и CF устанавливаются в соответствии с результатом.
Предположим, что регистр al содержит 1810 (001216), регистр bl содержит 410 (000416). После выполнения sub al, bl регистр al будет содержать 1410 (000E16), а флаг AF будет установлен в 1.