MSP430 система команд - Команда SUB
SUB[.W] |
Вычитание источника из получателя |
SUB.B |
Вычитание источника из получателя |
Синтаксис |
SUB src,dst или SUB.W src,dst SUB.B src,dst |
Операция |
dst + .NOT.src + 1 -> dst или [(dst – src -> dst)] |
Описание |
Операнд источника вычитается из операнда получателя путем прибавления дополнения до единицы операнда источника и константы «1» к операнду получателя. Операнд источника не изменяется. Предыдущее содержимое получателя теряется. |
Биты статуса |
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 |
|