assem / Ответы по пунктам / 020
.docx-
Команды вычитания. Нет устройства вычитания. Вычитание выполняется сложением с числом в дополнительном коде. В процессоре нет устройства вычитания, а только сумматор, поэтому вычитание заменяется сложением с числом в дополнительном коде. Взятие дополнительного кода у вычитаемого выполняется в этих командах аппаратно:
DEC <ор>- вычитается 1 из содержимого операнда (ор).
Пример: dec сх ; вычитается 1 из регистра сх.
dec mem_byte ; вычитается 1 из ячейки памяти размером в байт dec mem_word ; вычитается 1 из ячейки памяти размером в слово
dec al ; вычитается 1 из регистра al
SUB <op1>, <ор2> ; op1 = op1- ор2 (substract - вычитание).
Из содержимого op1 вычитается содержимое ор2 и результат
записывается на место op1; op1 и ор2 не могут быть одновременно
ячейками памяти; op1 не может быть непосредственным значением.
Операнды должны иметь одинаковые форматы.
mov al, a[0]
sub a[1], al
SBB <op1>, <ор2> - ( substract with borrow - вычитание с заёмом ).
Команда выполняется точно так же, как и предыдущая, но при уменьшаемом меньшем, чем вычитаемое, когда делается заём единицы во флаге переноса, т. е. op 1 = opl - ор2 - cf.
Команда NEG. Команда образует дополнительный код числа. От нуля вычитает операнд. Команда полезна при вычитании регистра или ячейки памяти из непосредственного значения и записи результата в регистр.
Пример: вычесть значение регистра al из 100:
neg al
add al, 100