MSP430 - Команда RLA
*RLA[.W] | Арифметическая ротация влево | |
*RLA.B | Арифметическая ротация влево | |
Синтаксис | RLA dst или RLA.W dst RLA.B dst |
|
Операция | C <- MSB <- MSB–1 … LSB+1 <- LSB <- 0 | |
Эмуляция | ADD dst,dst ADD.B dst,dst |
|
Описание | Операнд получателя сдвигается влево на одну позицию, как показано на рис. 3.14. Старший бит MSB сдвигается в бит переноса (С), а в младший бит LSB записывается «0». Команда RLA действует как умножение со знаком на 2. Переполнение происходит, если dst>=04000h и dst<0C000h перед выполнением операции: результат меняет знак. |
|
Рис.3-14 Операнд получателя – арифметический сдвиг влево |
||
Биты статуса | N: | Устанавливается, если результат отрицательный; сбрасывается, если положительный |
Z: | Устанавливается, если результат «0», в противном случае сбрасывается | |
C: | Загружается из MSB | |
V: | Устанавливается, если произошло арифметическое переполнение: исходное значение 04000h <= dst < 0C000h; в противном случае сбрасывается Устанавливается, если произошло арифметическое переполнение: исходное значение 040h <= dst <0C0h; в противном случае сбрасывается |
|
Биты режима | Биты OSCOFF, CPUOFF и GIE не изменяютс | |
Пример | Содержимое регистра R7 умножается на 2.
RLA R7 ; Сдвиг влево R7 (умножение на 2) |
|
Пример | Младший байт регистра R7 умножается на 4.
RLA.B R7 ; Сдвиг влево младшего байта R7 (умножение на 2) RLA.B R7 ; Сдвиг влево младшего байта R7 (умножение на 4)Примечание: замена RLA Ассемблер не распознает команду: RLA @R5+ и RLA.B @R5+Вместо неё должна использоваться следующая команда: ADD @R5+,-2(R5) и ADD.B @R5+,-1(R5) |