Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Микропроцессорная техника / Семейство микроконтроллеров MSP430x2xx_

.pdf
Скачиваний:
94
Добавлен:
05.03.2016
Размер:
2.03 Mб
Скачать

4.6. Описание набора команд 201

POPM.A, POPM[.W]

Извлечение n регистров ЦПУ из стека

Синтаксис

POPM.A

#n,Rdst

1 n 16

 

POPM.W

#n,Rdst или POPM #n,Rdst 1 n 16

 

 

 

 

Операция

POPM.A:

 

 

 

Восстанавливает из стека 20 битные значения заданных регистров ЦПУ. Для каждого

 

значения, извлечённого из стека, указатель стека SP увеличивается на 4 (2 слова на

 

регистр).

 

 

 

POPM.W:

 

 

 

Восстанавливает из стека 16 битные значения заданных регистров ЦПУ. Для каждого

 

значения, извлечённого из стека, указатель стека SP увеличивается на 2 (одно слово на

 

регистр).

 

 

 

 

 

 

Описание

POPM.A:

 

 

 

Содержимое стека (20 битные значения) пересылается в регистры ЦПУ, начиная с ре

 

гистра (Rdst – n + 1). По окончании операции указатель стека увеличивается на (n 4).

 

POPM.W:

 

 

 

Содержимое стека (16 битные значения) пересылается в регистры ЦПУ, начиная с ре

 

гистра (Rdst – n + 1). По окончании операции указатель стека увеличивается на (n 2).

 

Старшие биты (Rdst.19:16) регистров сбрасываются.

 

Примечание. Команда не использует слово расширения.

 

 

Биты

Биты состояния не изменяются, если регистр SR не является операндом

состояния

 

 

 

 

 

Биты

OSCOFF, CPUOFF и GIE не изменяются, если регистр SR не является операндом

режима

 

 

 

 

 

Пример 1

20 битное содержимое регистров R9…R13 восстанавливается из стека.

 

POPM.A

#5,R13

; Извлекаем R9, R10, R11, R12, R13

 

 

Пример 2

16 битное содержимое регистров R9…R13 восстанавливается из стека.

 

POPM.W

#5,R13

; Извлекаем R9, R10, R11, R12, R13

 

 

 

 

202 Глава 4. 16#битное RISC ЦПУ MSP430X

PUSHM.A, PUSHM[.W]

Сохранение n регистров ЦПУ в стеке

Синтаксис

PUSHM.A

#n,Rdst

1 n 16

 

PUSHM.W

#n,Rdst или PUSHM #n,Rdst 1 n 16

 

 

 

 

Операция

PUSHM.A:

 

 

 

Сохраняет 20 битные значения заданных регистров ЦПУ в стеке. Для каждого значения,

 

сохранённого в стеке, указатель стека SP уменьшается на 4 (2 слова на регистр). Стар

 

шие биты сохраняются первыми (по старшему адресу).

 

POPM.W:

 

 

 

Сохраняет 16 битные значения заданных регистров ЦПУ в стеке. Для каждого значения,

 

сохранённого в стеке, указатель стека SP уменьшается на 2 (одно слово на регистр).

 

 

 

 

Описание

PUSHM.A:

 

 

 

Содержимое n регистров ЦПУ, начиная с регистра (Rdst – n + 1), сохраняется в стеке.

 

По окончании операции указатель стека уменьшается на (n 4). Содержимое сохраняе

 

мых регистров (Rn.19:0) остаётся неизменным.

 

PUSHM.W:

 

 

 

Содержимое n регистров ЦПУ, начиная с регистра (Rdst – n + 1), сохраняется в стеке.

 

По окончании операции указатель стека уменьшается на (n 2). Содержимое сохраняе

 

мых регистров (Rn.19:0) остаётся неизменным.

 

Примечание. Команда не использует слово расширения.

 

 

Биты

Биты состояния не изменяются

состояния

 

 

 

 

 

Биты

OSCOFF, CPUOFF и GIE не изменяются

режима

 

 

 

 

 

Пример 1

20 битное содержимое регистров R9…R13 сохраняется в стеке.

 

PUSHM.A

#5,R13

; Сохраняем R9, R10, R11, R12, R13

 

 

Пример 2

16 битное содержимое регистров R9…R13 сохраняется в стеке.

 

PUSHM.W

#5,R13

; Сохраняем R9, R10, R11, R12, R13

 

 

 

 

4.6. Описание набора команд 203

* POPX.A, * POPX[.W], * POPX.B Извлечение операнда из стека

Синтаксис

POPX.A

dst

 

 

POPX

dst или

POPX.W dst

 

POPX.B

dst

 

 

 

Операция

Извлекает 8/16/20 битное значение из стека в операнд приёмник. Используется 20 бит

 

ная адресация. Указатель стека SP увеличивается на 2 (8 и 16 битные операнды) или 4

 

(20 битный операнд)

 

 

 

 

 

Эмуляция

MOVX.A

@SP+,dst

 

 

MOVX

@SP+,dst

 

 

MOVX.B

@SP+,dst

 

 

 

Описание

Последний элемент стека (TOS) извлекается в операнд приёмник. Допускается исполь

 

зование регистрового, индексного, относительного и абсолютного режимов адресации.

 

После этого указатель стека увеличивается на 2 или 4

 

 

Биты

Биты состояния не изменяются

состояния

 

 

 

 

 

Биты

OSCOFF, CPUOFF и GIE не изменяются

режима

 

 

 

 

 

Пример 1

16 битное число извлекается из стека по адресу EDE.

 

POPX.W

&EDE

; Пишем слово по адресу EDE

 

 

Пример 2

20 битное число извлекается из стека в регистр R9.

 

POPX.A

R9

; Пишем 20$битное число в R9

 

 

 

 

PUSHX.A, PUSHX[.W], PUSHX.B Сохранение операнда в стеке

Синтаксис

PUSHX.A

src

 

 

PUSHX

src

или PUSHX.W src

 

PUSHX.B

src

 

 

 

Операция

Сохраняет 8/16/20 битное значение операнда источника в стеке. Используется 20 бит

 

ная адресация. Перед записью значения указатель стека SP уменьшается на 2 (8 и 16

 

битные операнды) или 4 (20 битный операнд)

 

 

Описание

20 битный указатель стека SP уменьшается на 2 (8 и 16 битные операнды) или 4 (20 бит

 

ный операнд), после чего содержимое операнда источника помещается в ОЗУ по адресу,

 

определяемому указателем. Для адресации операнда можно использовать любой из семи

 

режимов

 

 

 

 

Биты

Биты состояния не изменяются

состояния

 

 

 

 

 

Биты

OSCOFF, CPUOFF и GIE не изменяются

режима

 

 

 

 

 

Пример 1

Байт, находящийся по адресу EDE (20 битное значение), сохраняется в стеке.

 

PUSHX.B

&EDE

; Сохраняем байт с адресом EDE

 

 

Пример 2

Содержимое регистра R9 (20 битное значение) сохраняется в стеке.

 

PUSHX.A

R9

; Сохраняем 20$битное содержимое R9

 

 

 

 

204 Глава 4. 16#битное RISC ЦПУ MSP430X

RLAM.A, RLAM[.W]

Арифметический сдвиг влево содержимого регистра ЦПУ

Синтаксис

RLAM.A

#n,Rdst (1 n 4)

 

 

 

 

 

 

RLAM.W

#n,Rdst

или

RLAM

 

#n,Rdst (1 n 4)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Операция

C

MSB

 

MSB–1 … LSB+1

LSB 0

 

 

 

 

 

 

 

 

 

 

 

 

 

Описание

Содержимое операнда приёмника сдвигается влево на один, два, три или четыре бита,

 

как показано на Рис. 4.44. По сути, команда RLAM выполняет операцию умножения

 

(знакового и беззнакового) на 2, 4, 8 или 16. Двухбайтная модификация команды

 

 

(RLAM.W) сбрасывает биты Rdst.19:16.

 

 

 

 

 

 

 

19

 

16

15

0

 

 

 

 

 

C

 

 

0000

 

MSB

 

 

LSB

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

19

 

 

 

 

0

 

 

 

 

 

C

 

 

MSB

 

 

 

 

 

 

LSB

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 4.44. Арифметический сдвиг влево: команды RLAM[.W] и RLAM.A.

 

Примечание. Команда не использует слово расширения.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Биты

N: Устанавливается, если результат отрицательный

 

состояния

 

.A: Rdst.19 = 1, сбрасывается, если Rdst.19 = 0;

 

 

 

.W: Rdst.15 = 1, сбрасывается, если Rdst.15 = 0.

 

 

Z: Устанавливается, если результат нулевой, иначе сбрасывается.

 

 

C: Загружается из MSB (n = 1), MSB–1 (n = 2), MSB–2 (n = 3), MSB–3 (n = 4).

 

 

V:

Не определён.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Биты

OSCOFF, CPUOFF и GIE не изменяются

 

режима

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Пример

20 битное содержимое регистра R5 сдвигается влево на три бита. Эта операция эквива

 

лентна умножению на 8.

 

 

 

 

 

 

 

 

RLAM.A

#3,R5

; R5 = R5 8

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4.6. Описание набора команд 205

* RLAX.A, * RLAX[.W], * RLAX.B Арифметический сдвиг операнда влево

Синтаксис

RLAX.A

 

dst

 

 

 

 

 

RLAX

 

dst или RLAX.W

dst

 

RLAX.B

 

dst

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Операция

C MSB MSB–1 … LSB+1

LSB 0

 

 

 

 

 

 

 

 

 

 

Эмуляция

ADDX.W

dst,dst

 

 

 

 

 

ADDX

dst,dst

 

 

 

 

 

ADDX.B dst,dst

 

 

 

 

 

 

 

 

 

 

 

 

 

Описание

Содержимое операнда приёмника сдвигается влево на один бит, как показано на

 

Рис. 4.45. Старший бит операнда помещается в бит переноса (C), а младший бит обнуля

 

ется. По сути, команда RLA выполняет операцию знакового умножения на 2.

 

 

 

 

MSB

0

 

 

 

 

C

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 4.45. Операнд приёмник — арифметический сдвиг влево.

 

 

Биты

N: Устанавливается, если результат отрицательный, сбрасывается — если положитель

состояния

 

ный.

 

 

 

Z:

Устанавливается, если результат нулевой, иначе сбрасывается.

 

C:

Загружается из MSB.

 

V:

Устанавливается, если произошло переполнение:

 

 

начальное значение 040000h dst < 0C0000h; иначе сбрасывается.

 

 

Устанавливается, если произошло переполнение:

 

 

начальное значение 04000h dst < 0C000h; иначе сбрасывается.

 

 

Устанавливается, если произошло переполнение:

 

 

начальное значение 040h dst < 0C0h; иначе сбрасывается.

 

 

Биты

OSCOFF, CPUOFF и GIE не изменяются

режима

 

 

 

 

 

 

Пример

20 битное содержимое регистра R7 умножается на 2.

 

RLAX.A

R7

; Сдвигаем R7 на 1 бит влево ( 2)

206 Глава 4. 16#битное RISC ЦПУ MSP430X

* RLCX.A, * RLCX[.W], * RLCX.B Сдвиг операнда влево через перенос

Синтаксис

RLCX.A

dst

 

 

RLCX

dst или RLCX.W

dst

 

RLCX.B

dst

 

 

 

 

 

Операция

C MSB

MSB–1 … LSB+1

LSB C

 

 

 

 

Эмуляция

ADDCX.A

dst,dst

 

 

ADDCX

dst,dst

 

 

ADDCX.B

dst,dst

 

 

 

Описание

Содержимое операнда приёмника сдвигается влево на один бит, как показано на

 

Рис. 4.46. Бит переноса (C) вдвигается в младший бит (LSB) операнда, а старший бит

 

операнда (MSB) выдвигается в бит переноса.

MSB

0

C

 

Рис. 4.46. Операнд приёмник — сдвиг влево через перенос.

Биты

N:

Устанавливается, если результат отрицательный, сбрасывается — если положитель

состояния

 

ный.

 

Z:

Устанавливается, если результат нулевой, иначе сбрасывается.

 

C:

Загружается из MSB.

V:Устанавливается, если произошло переполнение:

начальное значение 040000h dst < 0C0000h; иначе сбрасывается.

Устанавливается, если произошло переполнение:

начальное значение 04000h dst < 0C000h; иначе сбрасывается.

Устанавливается, если произошло переполнение: начальное значение 040h dst < 0C0h; иначе сбрасывается.

Биты

OSCOFF, CPUOFF и GIE не изменяются

режима

 

 

 

 

 

Пример 1

20 битное содержимое регистра R5 сдвигается на 1 бит влево.

 

RLCX.A

R5

; (R5 2) + C $> R5

 

 

Пример 2

Содержимое байта ОЗУ LEO сдвигается на 1 бит влево.

 

RLCX.B

LEO

; MEM(LEO) 2 + C $> MEM(LEO)

4.6. Описание набора команд 207

RRAM.A, RRAM[.W]

Арифметический сдвиг вправо содержимого регистра ЦПУ

Синтаксис

RRAM.A

#n,Rdst (1 n 4)

 

 

 

 

 

RRAM.W

#n,Rdst

или

RRAM

#n,Rdst (1 n 4)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Операция

MSB MSB, MSB MSB–1, … LSB+1 LSB, LSB 0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Описание

Содержимое операнда приёмника сдвигается вправо на на один, два, три или четыре

 

бита, как показано на Рис. 4.47. Состояние MSB (знак числа) остаётся неизменным. По

 

сути, команда RLA выполняет операцию знакового деления на 2, 4, 8 и 16. Старший бит

 

содержимого (MSB) выдвигается в бит MSB–1 (значение MSB остаётся неизменным).

 

Бит LSB+1 выдвигается в младший бит (LSB), а бит LSB выдвигается в бит переноса C.

 

Двухбайтная модификация команды (RRAM.W) сбрасывает биты Rdst.19:16.

 

 

 

 

19

16

 

15

0

 

 

 

 

 

C

 

0000

 

 

 

MSB

 

LSB

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

19

0

C

MSB

LSB

Рис. 4.47. Арифметический сдвиг вправо: команды RRAM[.W] и RRAM.A.

Примечание. Команда не использует слово расширения.

Биты

N:

Устанавливается, если результат отрицательный

состояния

 

.A: Rdst.19 = 1, сбрасывается, если Rdst.19 = 0;

 

 

.W: Rdst.15 = 1, сбрасывается, если Rdst.15 = 0.

 

Z:

Устанавливается, если результат нулевой, иначе сбрасывается.

 

C:

Загружается из LSB (n = 1), LSB+1 (n = 2), LSB+2 (n = 3), LSB+3 (n = 4).

 

V:

Сбрасывается.

 

 

Биты

OSCOFF, CPUOFF и GIE не изменяются

режима

 

 

Пример 1 20 битное число со знаком, находящееся в регистре R5, сдвигается вправо на два бита.

RRAM.A

#2,R5

; R5/4 $> R5

Пример 2 20 битное число со знаком, находящееся в регистре R15, умножается на 0.75.

PUSHM.A

R15

; Временно сохраняем R15 в стеке

 

RRAM.A

R15

; R15

 

0.5

$> R15

 

ADDX.A

@SP+,R15

;

R15

 

0.5

+

R15 = 1.5 R15 $> R15

RRAM.A

R15

;

(1.5 R15)

0.5 = 0.75 R15

$>R15

208 Глава 4. 16#битное RISC ЦПУ MSP430X

* RRAX.A, * RRAX[.W], * RRAX.B Арифметический сдвиг операнда вправо

Синтаксис

RRAX.A

Rdst

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

RRAX.W

Rdst

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

RRAX

Rdst

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

RRAX.B

Rdst

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

RRAX.A

dst

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

RRAX.W

dst или

RRAX

dst

 

 

 

 

 

 

 

RRAX.B

dst

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Операция

MSB MSB, MSB MSB–1, … LSB+1 LSB, LSB 0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Описание

Регистровый режим адресации: содержимое операнда приёмника сдвигается вправо на

 

один бит, как показано на Рис. 4.48. Состояние MSB (знак числа) остаётся неизменным.

 

Команда RRAX.W сбрасывает биты Rdst.19:16, команда RRAX.B сбрасывает биты

 

Rdst.19:8. Старший бит остаётся неизменным, а младший бит (LSB) выдвигается в бит

 

переноса C. По сути, команда RRAX выполняет операцию знакового деления на 2.

 

 

 

 

19

 

 

 

 

8

 

 

7

 

0

 

 

 

 

 

C

 

 

0

 

 

 

 

0

 

 

MSB

 

LSB

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

19

 

16

 

15

 

 

 

 

 

 

0

 

 

 

 

 

C

 

 

0000

 

 

MSB

 

 

 

 

 

 

LSB

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

19

 

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

 

C

 

 

 

MSB

 

 

 

 

 

 

 

 

 

 

 

LSB

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 4.48. Арифметический сдвиг вправо: команда RRAX(.B,.A). Регистровая адресация.

Прочие режимы адресации: содержимое операнда приёмника сдвигается вправо на один бит, как показано на Рис. 4.49. Состояние MSB (знак числа) остаётся неизменным, а младший бит (LSB) выдвигается в бит переноса C. По сути, команда RRAX выполняет операцию знакового деления на 2. Все режимы адресации, за исключением непосредс твенного режима, могут использоваться в пределах всего адресного пространства.

 

 

 

 

 

 

 

 

 

 

7

 

 

0

 

 

C

 

 

 

 

 

 

 

 

 

MSB

 

 

LSB

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

15

 

 

 

 

 

 

 

0

 

 

C

 

 

 

 

MSB

 

 

 

 

 

 

 

LSB

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

31

 

 

 

 

 

 

20

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

19

0

C

MSB

LSB

Рис. 4.49. Арифметический сдвиг вправо: команда RRAX(.B,.A). Не регистровая адресация.

4.6. Описание набора команд 209

Биты

N:

Устанавливается, если результат отрицательный

состояния

 

.A: dst.19 = 1, сбрасывается, если dst.19 = 0;

 

 

.W: dst.15 = 1, сбрасывается, если dst.15 = 0;

 

 

.B: dst.7 = 1, сбрасывается, если dst.7 = 0.

 

Z:

Устанавливается, если результат нулевой, иначе сбрасывается.

 

C:

Загружается из LSB.

 

V:

Сбрасывается.

 

 

 

Биты

OSCOFF, CPUOFF и GIE не изменяются

режима

 

 

 

 

 

 

Пример 1

20 битное число со знаком, находящееся в регистре R5, сдвигается вправо на четыре бита.

 

RPT

#4

 

 

RRAX.A

R5

; R5/16 $> R5

 

 

Пример 2

Содержимое байта EDE умножается на 0.5.

 

RRAX.B

&EDE

; EDE/2 $> EDE

 

 

 

 

 

RRCM.A, RRCM[.W]

Сдвиг вправо через перенос содержимого регистра ЦПУ

Синтаксис

RRAM.A

#n,Rdst (1 n 4)

 

RRAM.W

#n,Rdst или RRAM #n,Rdst (1 n 4)

 

 

Операция

MSB MSB, MSB MSB–1, … LSB+1 LSB, LSB 0

 

 

Описание

Содержимое операнда приёмника сдвигается вправо на на один, два, три или четыре

 

бита, как показано на Рис. 4.50. Бит переноса (C) вдвигается в старший бит (MSB) опе

 

ранда, а младший бит операнда (LSB) выдвигается в бит переноса (C). Двухбайтная мо

 

дификация команды (RRAM.W) сбрасывает биты Rdst.19:16.

19

16

15

0

C

0

MSB

LSB

 

 

 

19

 

0

 

 

C

 

MSB

 

LSB

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 4.50. Сдвиг вправо через перенос: команды RRCM[.W] и RRCM.A.

 

Примечание. Команда не использует слово расширения.

 

 

Биты

N: Устанавливается, если результат отрицательный

состояния

 

.A: Rdst.19 = 1, сбрасывается, если Rdst.19 = 0;

 

 

.W: Rdst.15 = 1, сбрасывается, если Rdst.15 = 0.

 

Z:

Устанавливается, если результат нулевой, иначе сбрасывается.

 

C:

Загружается из LSB (n = 1), LSB+1 (n = 2), LSB+2 (n = 3), LSB+3 (n = 4).

 

V:

Сбрасывается.

 

 

Биты

OSCOFF, CPUOFF и GIE не изменяются

режима

 

 

Пример 1 20 битное число со знаком, находящееся в регистре R5, сдвигается вправо на три бита. В бит MSB 2 загружается 1.

SETC

 

;

Инициализируем

бит переноса

RRCM.A

#3,R5

;

R5 = R5 >> 3 +

20000h

Пример 2 Двухбайтное содержимое регистра R6 сдвигается вправо на два бита. В MSB загружается LSB. В бит MSB–1 загружается значение бита переноса.

RRCM.W

#2,R6

; R6 = R6 >> 2. R6.19:16 = 0

210 Глава 4. 16#битное RISC ЦПУ MSP430X

RRCX.A, RRCX[.W], RRCX.B

Сдвиг операнда вправо через перенос

Синтаксис

RRCX.A

Rdst

 

 

RRCX.W

Rdst

 

 

RRCX

Rdst

 

 

RRCX.B

Rdst

 

 

RRCX.A

dst

 

 

RRCX.W

dst или RRCX

dst

 

RRCX.B

dst

 

 

 

Операция

C MSB MSB–1 … LSB+1 LSB C

 

 

Описание

Регистровый режим адресации: содержимое операнда приёмника сдвигается вправо на

 

один бит, как показано на Рис. 4.51. Команда RRCX.W сбрасывает биты Rdst.19:16, ко

 

манда RRCX.B сбрасывает биты Rdst.19:8. Бит переноса (C) вдвигается в MSB операнда,

 

а LSB операнда выдвигается в бит переноса.

 

Прочие режимы адресации: содержимое операнда приёмника сдвигается вправо на один

 

бит, как показано на Рис. 4.52. Бит переноса (C) вдвигается в MSB операнда, а LSB операнда

 

выдвигается в бит переноса. Все режимы адресации, за исключением непосредственного ре

 

жима, могут использоваться в пределах всего адресного пространства.

 

19

8

7

0

C

0 ––––––––––––––––––––0

MSB

LSB

19

 

16 15

0

C

0 0 0 0

MSB

LSB

 

19

0

C

MSB

LSB

Рис. 4.51. Сдвиг вправо через перенос: команда RRCX(.B,.A). Регистровая адресация.

 

 

 

 

 

 

 

7

 

 

0

 

 

C

 

 

 

 

 

 

MSB

 

 

LSB

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

15

 

 

 

 

 

0

 

 

C

 

 

 

MSB

 

 

 

 

 

LSB

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

31

 

 

 

20

 

 

 

 

 

 

 

0

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

19

0

C

MSB

LSB

 

 

Рис. 4.52. Сдвиг вправо через перенос: команда RRCX(.B,.A).

 

 

Не регистровая адресация.

 

 

Биты

N: Устанавливается, если результат отрицательный

состояния

 

.A: dst.19 = 1, сбрасывается, если dst.19 = 0;

 

 

.W: dst.15 = 1, сбрасывается, если dst.15 = 0;

 

 

.B: dst.7 = 1, сбрасывается, если dst.7 = 0.

 

Z:

Устанавливается, если результат нулевой, иначе сбрасывается.

 

C:

Загружается из LSB.

 

V:

Сбрасывается.