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 |