MSP430 - Команда RRA
RRA[.W] | Арифметическая ротация вправо | |
RRA.B | Арифметическая ротация вправо | |
Синтаксис | RRA dst или RRA.W dst RRA.B dst |
|
Операция | MSB -> MSB, MSB -> MSB-1, … LSB+1 >- LSB, LSB -> С | |
Описание | Операнд получателя сдвигается вправо на одну позицию, как показано на рис.3.16. Старший бит MSB сдвигается сам в себя и в бит MSB-1, бит LSB+1 сдвигается в младший бит LSB. |
|
|
||
Биты статуса | N: | Устанавливается, если результат отрицательный; сбрасывается, если положительный |
Z: | Устанавливается, если результат «0», в противном случае сбрасывается | |
C: | Загружается из LSB | |
V: | Сбрасывается | |
Биты режима | Биты OSCOFF, CPUOFF и GIE не изменяются | |
Пример | Содержимое регистра R5 сдвигается вправо на одну позицию. Старший бит MSB сохраняет старое значение. Эта операция эквивалентна арифметическому делению на 2.
RRA R5 ; R5/2 -> R5 ; ;Содержимое R5 умножается на 0.75 (0.5 + 0.25). PUSH R5 ; Временное сохранение R5 с помощью стека RRA R5 ; R5х0.5 -> R5 ADD @SP+,R5 ; R5х0.5 + R5 = 1.5хR5 -> R5 RRA R5 ; (1.5хR5)х0.5 = 0.75хR5 -> R5 … |
|
Пример | Содержимое младшего байта регистра R5 сдвигается вправо на одну позицию. Старший бит MSB сохраняет старое значение. Эта операция эквивалентна арифметическому делению на 2. RRA.B R5 ; R5/2 -> R5: операция производится только с ; младшим байтом, старший байт R5 сброшен RRA.B R5 ; R5?0.5 -> R5 PUSH.B R5 ; R5?0.5 -> TOS RRA.B @SP ; TOS?0.5 = 0.5?R5?0.5 = 0.25?R5 -> TOS ADD.B @SP+,R5 ; R5?0.5 + R5?0.25 = 0.75?R5 -> R5 … |