*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 Операнд получателя – арифметический сдвиг влево
Переполнение происходит, если dst >=040h и dst<0C0h перед выполнением операции: результат меняет знак. |
Биты статуса |
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)
|