MSP430 - Команда SBC
*SBC[.W] | Вычитание заема/.NOT. переноса из получателя | |
*SBC.B | Вычитание заема/.NOT. переноса из получателя | |
Синтаксис | SBC dst или SBC.W dst SBC.B dst |
|
Операция | dst + 0FFFFh + C -> dst dst + 0FFh + C -> dst |
|
Эмуляция | SUBC #0,dst SUBC.B #0,dst |
|
Описание | Бит переноса (С) прибавляется к операнду получателя минус один. Предыдущее содержимое получателя теряется. | |
Биты статуса | N: | Устанавливается, если результат отрицательный; сбрасывается, если положительный |
Z: | Устанавливается, если результат «0», в противном случае сбрасывается | |
C: | Устанавливается, если есть перенос из старшего бита MSB результата, сбрасывается в противном случае. Устанавливается в «1», если заема нет; сбрасывается, если заем есть. | |
V: | Устанавливается, если произошло арифметическое переполнение, в противном случае сбрасывается | |
Биты режима | Биты OSCOFF, CPUOFF и GIE не изменяются | |
Пример | Содержимое 16-разрядного счетчика, указанного в R13, вычитается из 32-разрядного счетчика, указанного в R12:
SUB @R13,0(R12) ; Вычитание LSD SBC 2(R12) ; Вычитание переноса из MSD |
|
Пример | Содержимое 8-разрядного счетчика, указанного в R13, вычитается из 16-разрядного счетчика, указанного в R12:
SUB.B @R13,0(R12) ; Вычитание LSD SBC.B 1(R12) ; Вычитание переноса из MSD |
Примечание: реализация заема
Заем обрабатывается как операция .NOT. переноса:
Заем | Бит переноса |
Да | 0 |
Нет | 1 |