MSP430 система команд - Команда SUBС
SUBС[.W],SBB[.W] |
Вычитание источника и заема/.NOT. переноса из получателя |
SUBC.B,SBB.B |
Вычитание источника и заема/.NOT. переноса из получателя |
Синтаксис |
SUBС src,dst или SUBС.W src,dst или
SBB src,dst или SBB.W src,dst
SUBC.B src,dst или SBB.B src,dst |
Операция |
dst + .NOT.src + C -> dst или [(dst – src – 1 + C -> dst)] |
Описание |
Операнд источника вычитается из операнда получателя путем прибавления дополнения до единицы операнда источника и бита переноса (С) к операнду получателя. Операнд источника не изменяется. Предыдущее содержимое получателя теряется. |
Биты статуса |
N: |
Устанавливается, если результат отрицательный; сбрасывается, если положительный. |
Z: |
Устанавливается, если результат «0», в противном случае сбрасывается. |
C: |
Устанавливается, если есть перенос из старшего бита MSB результата, в противном случае сбрасывается. Устанавливается в «1», если нет заема; сбрасывается, если был заем. |
V: |
Устанавливается, если произошло арифметическое переполнение, в противном случае сбрасывается |
Биты режима |
Биты OSCOFF, CPUOFF и GIE не изменяются |
Пример |
Вычитаются две мантиссы (24-разрядные) с плавающей точкой.
Младшие байты LSB находятся в R13 и R10, старшие байты MSB находятся в R12 и R9
SUB.W R13,R10 ; 16-разрядная часть, LSB
SUBC.B R12,R9 ; 8-разрядная часть, MSB
|
Пример |
Содержимое 16-разрядного счетчика, указанного в R13, вычитается из 16-разрядного счетчика, находящегося в регистрах R10 и R11(MSD).
SUB.B @R13+,R10 ; Вычитание младших байтов LSB без переноса
SUBC.B @R13,R11 ; Вычитание старших байтов MSB с переносом,
… ; возникшим в результате выполнения
… ; операции над младшими байтами LSB
|
Примечание: реализация заема
Заем обрабатывается как операция .NOT. переноса:
Заем |
Бит переноса |
Да |
0 |
Нет |
1 |
|