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

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

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

 

 

 

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

 

 

 

 

Биты

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

режима

 

 

 

 

 

Пример 1

20 битное значение по адресу EDE сдвигается на 1 бит вправо. В MSB загружается 1.

 

SETC

 

; Инициализируем бит переноса

 

RRCX.A

EDE

; EDE = EDE >> 1 + 80000h

 

 

Пример 2

Слово, находящееся в регистре R6, сдвигается на 12 битов вправо.

 

RPT

#12

 

 

RRCX.W

R6

; R6 = R6 >> 12. Биты R6.19:16 = 0

 

 

 

 

RRUM.A, RRUM[.W]

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

Синтаксис

RRUM.A

#n,Rdst (1 n 4)

 

 

 

 

 

RRUM.W

#n,Rdst

или

RRUM

#n,Rdst (1 n 4)

 

 

 

 

 

 

 

 

 

 

 

 

 

Операция

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

 

 

 

 

 

 

 

 

 

 

 

 

 

Описание

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

 

бита, как показано на Рис. 4.53. В MSB операнда вдвигается 0, а младший бит операнда

 

(LSB) выдвигается в бит переноса C. По сути, команда RRUM выполняет операцию без

 

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

 

сывает биты Rdst.19:16.

 

 

 

 

 

 

 

 

 

 

 

19

 

16

 

15

0

 

 

 

 

 

C

 

0000

 

 

MSB

 

LSB

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

19

 

 

 

 

 

0

 

 

 

 

 

C

0

MSB

 

 

 

 

 

 

LSB

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 4.53. Сдвиг вправо беззнакового операнда: команды RRUM[.W] и RRUM.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, делится на 16.

 

RRUM.A

#4,R5

; R5 = R5 >> 4, R5/16

 

Пример 2 Двухбайтное содержимое регистра R6 сдвигается вправо на один бит. Старший бит зна

 

чения (R6.15) обнуляется.

 

RRUM.W

#1,R6

; R6 = R6/2, R6.19:15 = 0

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

* RRUX.A, * RRUX[.W], * RRUX.B Сдвиг вправо беззнакового операнда

Синтаксис RRUX.A Rdst RRUX.W Rdst RRUX Rdst RRUX.B Rdst

Операция

C = 0 MSB MSB–1 … LSB+1 LSB 0

 

 

Описание

С командой RRUX может использоваться только регистровый режим адресации: содер

 

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

 

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

 

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

 

C.

 

19

8

7

0

C

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

MSB

LSB

 

 

 

0

 

 

19

16 15

0

C

0 0 0 0

MSB

LSB

 

 

0

 

 

19

0

C 0

MSB

LSB

Рис. 4.54. Сдвиг вправо беззнакового операнда: команда RRUX(.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:

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

 

 

 

Биты

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

режима

 

 

 

 

 

 

Пример

Слово, находящееся в регистре R6, сдвигается на 12 битов вправо.

 

RPT

#12

 

 

RRГX.W

R6

; R6 = R6 >> 12. Биты R6.19:16 = 0

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

* SBCX.A, * SBCX[.W], * SBCX.B Вычитание заёма из операнда

Синтаксис

SBCX.A

dst

 

 

SBCX

dst или SBCX.W dst

 

SBCX.B

dst

 

 

 

 

Операция

dst + 0FFFFFh + C dst

 

 

dst + 0FFFFh + C dst

 

 

dst + 0FFh + C dst

 

 

 

 

Эмуляция

SUBCX.B #0,dst

 

 

SUBCX

#0,dst

 

 

SUBCX.B #0,dst

 

 

 

Описание

Бит переноса (C), уменьшенный на 1, прибавляется к операнду приёмнику. Предыду

 

щее содержимое операнда теряется

 

 

Биты

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

состояния

ный.

 

 

 

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

 

C: Устанавливается, если произошёл перенос из MSB результата, иначе сбрасывается.

 

Устанавливается, если не было заёма, иначе сбрасывается.

 

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

 

 

Биты

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

режима

 

 

 

 

 

Пример

8 битный счётчик, на который указывает R13, вычитается из 16 битного счётчика, на

 

который указывает R12.

 

 

SUBX.B

@R13,0(R12)

; Вычитаем младшие байты

 

SBCX.B

1(R12)

; Вычитаем заём из старшего байта

 

 

 

 

Примечание. Признак заёма

В качестве признака заёма используется инверсное значение бита переноса:

Заём

Бит C

Есть

0

Нет

1

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

SUBX.A, SUBX[.W], SUBX.B Вычитание двух операндов

Синтаксис

SUBX.A

src,dst

 

 

 

SUBX

src,dst или

SUBX.W

src,dst

 

SUBX.B

src,dst

 

 

 

 

 

 

Операция

(.not.src) + 1 + dst dst

 

 

 

или

 

 

 

 

dst – src dst

 

 

 

 

Описание

Операнд источник вычитается из операнда приёмника путём прибавления к последне

 

му обратного кода операнда источника плюс единица. Содержимое операнда источни

 

ка не изменяется. Результат сохраняется в операнде приёмнике. Оба операнда могут

 

располагаться в пределах всего адресного пространства

 

 

Биты

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

состояния

ложительный (src dst).

 

 

 

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

 

C: Устанавливается, если произошёл перенос из MSB результата, иначе сбрасывается.

 

Устанавливается, если не было заёма, иначе сбрасывается.

 

V: Устанавливается, если результат вычитания отрицательного операнда из положи

 

тельного отрицателен или если результат вычитания положительного операнда из

 

отрицательного положителен; иначе сбрасывается (нет переполнения).

 

 

Биты

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

режима

 

 

 

 

 

 

Пример 1

20 битная константа 87654h вычитается из слова EDE (младшие биты) и EDE+2 (стар

 

шие биты).

 

 

 

 

SUBX.A

#87654h,EDE

; Вычитаем 87654h из EDE+2:EDE

 

 

Пример 2

Элемент таблицы, адресуемый регистром R5 (20 битный адрес), вычитается из регистра

 

R7. Если результат равен нулю, то выполняется переход к метке TONI. Содержимое ре

 

гистра R5 увеличивается на 2. Биты R7.19:16 = 0.

 

SUBX.W

@R5+,R7

; Вычитаем элемент таблицы из R7, R5 + 2

 

JZ

TONI

; R7 = @R5 перед вычитанием

 

...

 

; R7 <> @R5 перед вычитанием

 

 

Пример 3

Байт CNT вычитается из байта, на который указывает R12. Адрес CNT лежит в пределах

 

PC ±512 КБ. Регистр R12 может указывать на любую ячейку адресного пространства.

 

SUBX.B

CNT,0(R12)

; Вычитаем CNT из @R12

 

 

 

 

 

Замечание. Для увеличения плотности кода и скорости выполнения программы используйте коман ду SUBA в следующих случаях:

SUBX.A Rsrc,Rdst или SUBX.A #imm20,Rdst

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

SUBСX.A, SUBСX[.W], SUBСX.B

Вычитание двух операндов с учётом переноса

Синтаксис

SUBCX.A

src,dst

 

 

 

SUBCX

src,dst или

SUBCX.W

src,dst

 

SUBCX.B

src,dst

 

 

 

 

 

 

Операция

(.not.src) + C + dst dst

 

 

 

или

 

 

 

 

dst – (src – 1) + C dst

 

 

 

 

Описание

Операнд источник вычитается из операнда приёмника путём прибавления к последне

 

му обратного кода операнда источника и значения бита переноса. Содержимое операн

 

да источника не изменяется. Результат сохраняется в операнде приёмнике. Оба операн

 

да могут располагаться в пределах всего адресного пространства

 

 

Биты

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

состояния

ложительный (MSB = 0).

 

 

 

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

 

C: Устанавливается, если произошёл перенос из MSB результата, иначе сбрасывается.

 

Устанавливается, если не было заёма, иначе сбрасывается.

 

V: Устанавливается, если результат вычитания отрицательного операнда из положи

 

тельного отрицателен или если результат вычитания положительного операнда из

 

отрицательного положителен; иначе сбрасывается (нет переполнения).

 

 

 

Биты

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

 

режима

 

 

 

 

 

 

Пример 1

20 битная константа 87654h вычитается из регистра R5 с учётом переноса от предыду

 

щей команды.

 

 

 

SUBCX.A

#87654h,R5

; R5 = R5

$ 87654h $ C

 

 

Пример 2

48 битное число (3 слова), адресуемое регистром R5 (20 битный адрес), вычитается из

 

48 битного счётчика, адресуемого регистром R7. После операции R5 указывает на следу

 

ющее 48 битное число.

 

 

 

SUBX.W

@R5+,0(R7) ; Вычитаем младшие слова. R5 + 2

 

SUBCX.W

@R5+,2(R7) ; Вычитаем средние слова с учётом C. R5 + 2

 

SUBCX.W

@R5+,4(R7) ; Вычитаем старшие слова с учётом C. R5 + 2

 

 

Пример 3

Байт CNT вычитается из байта, на который указывает R12, с учётом переноса от преды

 

дущей операции. Используется 20 битная адресация.

 

SUBCX.B

&CNT,0(R12)

; Вычитаем CNT из @R12

 

 

 

 

 

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

SWPBX.A

 

Перестановка байтов младшего слова

SWPBX[.W]

 

Перестановка байтов двухбайтного слова

 

 

 

 

 

 

 

 

 

 

 

 

Синтаксис

SWPBX.A

dst

 

 

 

 

 

 

 

 

SWPBX.W

dst

или

SWPBX dst

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Операция

dst.15…8 dst.7…0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Описание

Регистровый режим адресации: биты Rn.15:8 и Rn.7:0 меняются местами. При использо

 

вании команды с суффиксом .A состояние битов Rdst.19:16 не изменяется. При исполь

 

зовании команды с суффиксом .W биты Rdst.19:16 сбрасываются.

 

Прочие режимы адресации: при использовании команды с суффиксом .A биты 31:20 по

 

адресу операнда приёмника сбрасываются, биты 19:16 остаются неизменными, а биты

 

15:8 и биты 7:0 меняются местами. При использовании команды с суффиксом .W биты

 

15:8 и биты 7:0 адресованного слова меняются местами.

 

 

 

 

До команды SWPBX.A

 

 

 

 

 

 

19

16

15

 

 

8

7

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

X

 

 

 

 

Старший байт

 

 

Младший байт

 

 

 

 

 

 

 

 

 

 

 

 

 

После команды SWPBX.A

 

 

 

 

 

 

19

16

15

 

 

8

7

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

X

 

 

 

 

Младший байт

 

 

Старший байт

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 4.55. Перестановка байтов: команда SWPBX.A, регистровая адресация.

 

 

 

До команды SWPBX.A

 

 

 

 

 

 

31

20 19

16

 

15

8

7

0

 

 

 

 

X

 

X

 

 

Старший байт

 

 

Младший байт

 

 

 

 

 

 

 

 

 

 

 

 

 

 

После команды SWPBX.A

 

 

 

 

 

 

31

20 19

16

 

15

8

7

0

 

 

 

 

0

 

X

 

 

Младший байт

 

 

Старший байт

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 4.56. Перестановка байтов: команда SWPBX.A, операнд в ОЗУ.

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Описание

До команды SWPBX

 

 

 

 

 

19

16

 

15

8

7

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

X

 

 

Старший байт

 

Младший байт

 

 

 

 

 

 

 

 

 

После команды SWPBX

 

 

 

 

19

16

 

15

8

7

0

 

 

 

 

0

 

 

Младший байт

 

Старший байт

 

 

 

 

 

 

 

 

Рис. 4.57. Перестановка байтов: команда SWPBX[.W], регистровая адресация.

 

 

До команды SWPBX

 

 

 

 

 

 

 

 

15

8

7

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Старший байт

 

Младший байт

 

 

 

 

 

 

 

 

 

 

После команды SWPBX

 

 

 

 

 

 

 

 

15

8

7

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Младший байт

 

Старший байт

 

 

 

 

 

 

 

 

 

Рис. 4.58. Перестановка байтов: команда SWPBX[.W], операнд в ОЗУ.

Биты

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

 

 

 

состояния

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Биты

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

 

 

 

режима

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Пример 1

Меняются местами байты 20 битного слова EDE в ОЗУ.

 

MOVX.A

#23456h,&EDE ; 23456h $> EDE

 

 

 

SWPBX.A

EDE

 

; 25634h $> EDE

 

 

 

 

 

 

 

 

Пример 2

Старший и младший байты содержимого регистра R5 меняются местами.

 

MOVX.A

#23456h,R5

; 23456h $> R5

 

 

 

SWPBX.W

R5

 

; 05634h $> R5

 

 

 

 

 

 

 

 

 

 

 

 

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

SXTX.A

 

Расширение знака до 20Cбитного значения

 

 

 

 

SXTX[.W]

Расширение знака до 16Cбитного значения

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Синтаксис

SXTX.A

dst

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

SXTX.W

dst

или SXTX

dst

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Операция

dst.7 dst.15:8

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

dst.7 dst.19:8 (при использовании регистрового режима адресации)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Описание

Регистровый режим адресации: знаковый бит младшего байта операнда (Rdst.7) в биты

 

19:8 регистра.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Прочие режимы:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

SXTX.A: знаковый бит младшего байта слова (dst.7) копируется в биты dst.19:8 операнда.

 

Биты dst.32:20 сбрасываются.

 

 

 

 

 

 

 

 

 

 

 

 

SXTX[.W]: знаковый бит младшего байта слова (dst.7) копируется в биты dst.15:8 опе

 

ранда.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

SXTX.A Rdst

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

19

16 15

 

8

7

6

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

SXTX.A dst

 

 

 

 

 

 

 

 

 

 

S

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

31

 

 

20 19

16 15

 

8

7

6

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

......

 

0

 

 

 

 

 

 

 

S

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 4.59. Расширение знака: команда SXTX.A.

 

 

 

 

 

 

 

SXTX[.W] Rdst

 

 

 

 

 

 

 

 

 

 

 

 

 

19

 

16

15

 

 

8

7

6

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

S

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

SXTX[.W] dst

15

 

 

8

7

6

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

S

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 4.60. Расширение знака: команда SXTX[.W].

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Биты

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

состояния

 

ный.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

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

 

V:

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Биты

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

 

 

 

 

 

 

 

 

 

режима

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Пример

8 битное число со знаком, находящееся в битах EDE.7:0, расширяется до 20 бит. Биты 32:20,

 

расположенные в EDE+2, сбрасываются.

 

 

 

 

 

 

 

 

 

 

SXTX.A

&EDE

 

; Расширяем знак EDE $> EDE+2:EDE

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

* TSTX.A, * TSTX[.W], * TSTX.B Проверка операнда (на ноль)

Синтаксис

TSTX.A

dst

 

 

 

TSTX

dst или

TSTX.W

dst

 

TSTX.B

dst

 

 

 

 

 

 

Операция

dst + 0FFFFFh + 1

 

 

 

dst + 0FFFFh + 1

 

 

 

dst + 0FFh + 1

 

 

 

 

 

 

Эмуляция

CMPX.A #0,dst

 

 

 

CMPX

#0,dst

 

 

 

CMPX.B #0,dst

 

 

 

 

Описание

Операнд приёмник сравнивается с нулём и в соответствии с результатом изменяются

 

биты состояния. Сам операнд остаётся неизменным

 

 

Биты

N: Устанавливается, если операнд отрицателен, сбрасывается — если положителен.

состояния

Z: Устанавливается, если операнд равен нулю, иначе сбрасывается.

 

C:

Устанавливается.

 

 

 

V:

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

 

 

 

 

Биты

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

режима

 

 

 

 

 

 

 

Пример 1

Проверяется содержимое регистра R7. Если оно отрицательное, то выполнение про

 

граммы продолжается с метки R7NEG, если положительное и не равно нулю — с метки

 

R7POS.

 

 

 

 

 

 

TST

R7

; Проверяем R7

 

 

 

JN

R7NEG

; R7 < 0

 

 

 

JZ

R7ZERO

; R7 = 0

 

R7POS

......

 

; R7 > 0

 

R7NEG

......

 

; R7 < 0

 

R7ZERO

......

 

; R7 = 0

 

 

Пример 2

Проверяется байт LEO в ОЗУ; счётчик команд указывает на верхнюю область памяти.

 

Если значение байта отрицательно, то выполнение программы продолжается с метки

 

LEONEG, если положительно и не равно нулю — с метки LEOPOS.

 

 

 

TSTX.B

LEO

; Проверяем LEO

 

 

 

JN

LEONEG

; LEO < 0

 

 

 

JZ

LEOZERO

; LEO = 0

 

LEOPOS

......

 

; LEO > 0

 

LEONEG

......

 

; LEO < 0

 

LEOZERO ......

 

; LEO = 0

 

 

 

 

 

 

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

XORX.A, XORX[.W], XORX.B «Исключающее ИЛИ» двух операндов

Синтаксис

XORX.A

src,dst

 

 

 

XORX

src,dst или

XORX.W

src,dst

 

XORX.B

src,dst

 

 

 

 

 

 

Операция

src .xor. dst dst

 

 

 

 

Описание

Выполняется операция «Исключающее ИЛИ» между операндом источником и операн

 

дом приёмником. Результат помещается в операнд приёмник. Операнд источник не

 

изменяется. Предыдущее содержимое операнда приёмника теряется. Оба операнда мо

 

гут располагаться в пределах всего адресного пространства

 

 

Биты

N: Устанавливается, если результат отрицателен (MSB = 1), иначе сбрасывается.

состояния

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

 

C: Устанавливается, если результат ненулевой, иначе сбрасывается (С = .not.Z).

 

V: Устанавливается, если оба операнда отрицательные.

 

 

Биты

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

режима

 

 

 

 

 

 

Пример 1

Состояние битов 20 битного слова CNTR изменяется в соответствии со значением 20

 

битного слова TONI (20 битный адрес).

 

 

XORX.A

TONI,&CNTR

; Переключаем биты CNTR

 

 

Пример 2

Слово из таблицы, адресуемое регистром R5 (20 битный адрес), используется для изме

 

нения состояния битов регистра R6. Биты R6.19:6 = 0.

 

XORX.W

@R5,R6

; Переключаем биты R6. R6.19:16 = 0

 

 

Пример 3

Сбрасываются в 0 те биты младшего байта R7, которые отличаются от соответствующих

 

битов 1 байтовой переменной EDE (20 битный адрес).

 

XORX.B

EDE,R7

; Устанавливаем отличающиеся биты в 1

 

INV.B

R7

; Инвертируем младший байт. R7.19:8 = 0

 

 

 

 

 

4.6.4. Адресные команды

Адресные команды MSP430X — это такие команды, которые способны рабо тать с 20 битными операндами, однако ограничены в использовании ряда режи мов адресации. Все адресные команды, за исключением команды MOVA, могут за действовать только регистровый и непосредственный режимы адресации (см. Табл. 4.16). Данное ограничение избавляет от необходимости использовать дополнительное слово расширения, что увеличивает плотность кода и скорость выполнения программы. Далее в настоящем разделе приведены подробные опи сания всех адресных команд.