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

MSP430_Final

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

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

SWPB

Перестановка байтов

 

 

 

 

 

 

 

 

 

 

 

 

Синтаксис

SWP

dst

 

 

 

 

 

 

 

 

 

 

 

 

 

Операция

dst.15…8 dst.7…0

 

 

 

 

 

 

 

 

 

 

Описание

Старший и младший байты операнда приёмника меняются местами. При использова

 

нии регистрового режима адресации биты 19:16 регистра сбрасываются

 

 

 

 

 

 

 

Биты

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

 

 

 

состояния

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Биты

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

 

 

 

режима

 

 

 

 

 

 

 

 

 

 

 

 

 

Пример

Старший и младший байты слова EDE (нижние 64 КБ) меняются местами.

 

MOV

#1234h,&EDE

; 1234h $> EDE

 

 

 

 

SWP

&EDE

; 3412h $> EDE

 

 

 

 

 

 

До команды SWPB

 

 

 

 

 

15

8

 

7

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Старший байт

 

 

Младший байт

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

15

8

 

7

0

 

 

 

 

 

Старший байт

 

 

Младший байт

 

 

 

 

 

 

 

 

 

 

Рис. 4.42. Перестановка байтов слова в памяти.

До команды SWPB

 

 

 

19

16

15

8

7

0

 

 

 

 

 

 

 

x

 

Старший байт

 

Младший байт

 

 

 

 

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

 

 

19

16

15

8

7

0

0

... 0

 

Старший байт

 

Младший байт

 

 

 

 

 

 

Рис. 4.43. Перестановка байтов в регистре.

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

SXT

Расширение знака

 

 

 

 

Синтаксис

SXT

dst

 

 

 

 

Операция

dst.7 dst.15:8

 

 

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

 

 

Описание

Регистровый режим: знаковый бит младшего байта слова копируется в биты 19:8 регистра.

 

Если Rdst.7 = 0, то после операции Rdst.19:8 = 000h.

 

Если Rdst.7 = 1, то после операции Rdst.19:8 = FFFh.

 

Прочие режимы: знаковый бит младшего байта слова копируется во все биты старшего

 

байта операнда.

 

 

Если dst.7 = 0, то после операции старший байт = 00h.

 

Если dst.7 = 1, то после операции старший байт = FFh.

 

 

Биты

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

состояния

ный.

 

 

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

 

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

 

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

 

 

 

Биты

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

режима

 

 

 

 

 

Пример 1

8 битное число со знаком в EDE (нижние 64 КБ) приводится к 16 битному виду и скла

 

дывается с 16 битным значением в регистре R7.

 

MOV.B

&EDE,R5

; EDE $> R5.00XXh

 

SXT

R5

; Копируем знак младшего байта в биты R5.19:8

 

ADD

R5,R7

; Складываем 16$битные значения

 

 

Пример 2

8 битное число со знаком в EDE (PC ±32 КБ) приводится к 20 битному виду и склады

 

вается с 20 битным значением в регистре R7.

 

MOV.B

EDE,R5

; EDE $> R5.00XXh

 

SXT

R5

; Копируем знак младшего байта в биты R5.19:8

 

ADDA

R5,R7

; Складываем 20$битные значения

 

 

 

 

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

* TST[.W], * TST.B

Проверка операнда (на ноль)

Синтаксис

TST

dst или

TST.W

dst

 

TST.B

dst

 

 

 

 

 

 

Операция

dst + 0FFFFh + 1

 

 

 

dst + 0FFh + 1

 

 

 

 

 

 

 

Эмуляция

CMP

#0,dst

 

 

 

CMP.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

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

 

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

 

 

 

TST.B

R7

; Проверяем R7

 

 

 

JN

R7NEG

; R7 < 0

 

 

 

JZ

R7ZERO

; R7 = 0

 

R7POS

......

 

; R7 > 0

 

R7NEG

......

 

; R7 < 0

 

R7ZERO ......

 

; R7 = 0

 

 

 

 

 

 

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

XOR[.W], XOR.B

«Исключающее ИЛИ» двух операндов

Синтаксис

XOR

src,dst или

XOR.W

src,dst

 

XOR.B

src,dst

 

 

 

 

 

 

Операция

src .xor. dst dst

 

 

 

 

Описание

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

 

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

 

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

 

 

Биты

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

состояния

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

 

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

 

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

 

 

Биты

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

режима

 

 

 

 

 

 

Пример 1

Установленные биты слова TONI (20 битное число) изменяют состояние соответствую

 

щих битов слова CNTR (16 битное число). Оба операнда расположены в нижней 64 КБ

 

области.

 

 

 

 

XOR

&TONI,&CNTR

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

 

 

Пример 2

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

 

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

 

XOR

@R5,R6

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

 

 

Пример 3

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

 

битов 1 байтовой переменной EDE. Биты R7.19:8 = 0. Адрес EDE лежит в диапазоне

 

PC ±32 КБ.

 

 

 

XOR.B

EDE,R7

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

 

INV.B

R7

; Инвертируем младший байт,

;старший байт = 0

4.6.3.Расширенные команды

Расширенный набор команд MSP430X позволяет этому ЦПУ в полной мере использовать доступное адресное пространство, определяемое 20 битной шиной адреса. Большинство команд MSP430X требуют ещё одного слова для хранения кода команды, так называемого слова расширения. Все адреса, смещения и не посредственные значения, которым предшествует слово расширения, являются 20 битными. Ниже приведены подробные описания всех расширенных команд MSP430X. Если команда не требует дополнительного слова, это явно указывается в её описании.

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

* ADCX.A, * ADCX[.W], * ADCX.B Сложение переноса операндом

Синтаксис

ADCX.A

dst

 

 

ADCX

dst

или ADXC.W dst

 

ADCX.B

dst

 

 

 

 

Операция

dst + C dst

 

 

 

 

Эмуляция

ADDCX.A

#0,dst

 

ADDCX

#0,dst

 

ADDCX.B

#0,dst

 

 

Описание

Бит переноса (C) прибавляется к операнду приёмнику. Предыдущее содержимое опе

 

ранда теряется

 

 

 

Биты

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

состояния

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

 

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

 

C: Устанавливается, если dst изменился с 0FFFFh до 0000, иначе сбрасывается.

 

Устанавливается, если dst изменился с 0FFh до 00, иначе сбрасывается.

 

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

 

 

Биты

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

режима

 

 

 

 

 

Пример

40 битный счётчик, на который указывают регистры R12 и R13, инкрементируется.

 

INCX.A

@R12 ; Инкрементируем младшие 20 бит

 

ADCX.A

@R13

; Прибавляем перенос к старшим 20 бит

 

 

 

 

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

ADDX.A, ADDX[.W], ADDX.B Сложение двух операндов

Синтаксис

ADDX.A

src,dst

 

 

 

ADDX

src,dst или

ADDX.W

src,dst

 

ADDX.B

src,dst

 

 

 

 

 

 

Операция

src + dst dst

 

 

 

 

Описание

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

 

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

 

пространства

 

 

 

 

Биты

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

состояния

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

 

 

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

 

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

 

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

 

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

 

положителен; иначе сбрасывается.

 

 

 

Биты

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

режима

 

 

 

 

 

 

Пример 1

К 20 битному счётчику CNTR, расположенному в двух словах ОЗУ CNTR (младшие би

 

ты) и CNTR+2 (старшие биты), прибавляется десять.

 

ADDX.A

#10,CNTR

; Прибавляем 10 к 20$битному счётчику

 

 

Пример 2

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

 

жимым регистра R6. В случае переноса осуществляется переход к метке TONI.

 

ADDX.W

@R5,R6

; Прибавляем слово к R6, R6.19:16 = 0

 

JC

TONI

; Переходим в случае переноса

 

...

 

; Нет переноса

 

 

Пример 3

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

 

мым регистра R6. При отсутствии переноса осуществляется переход к метке TONI. Ука

 

затель на таблицу автоматически инкрементируется.

 

ADDX.B

@R5+,R6

; Прибавляем байт к R6. R5 + 1. R6: 000xxh

 

JNC

TONI

; Переходим, если нет переноса

 

...

 

; Был перенос

 

 

 

 

 

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

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

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

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

Сложение двух операндов с учётом переноса

Синтаксис

ADDCX.A

src,dst

 

 

 

ADDCX

src,dst или

ADDCX.W

src,dst

 

ADDCX.B

src,dst

 

 

 

 

 

 

Операция

src + dst + C dst

 

 

 

 

Описание

Операнд источник и бит переноса (C) прибавляются к операнду приёмнику. Предыду

 

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

 

месте адресного пространства

 

 

 

Биты

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

состояния

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

 

 

 

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

 

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

 

сывается.

 

 

 

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

 

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

 

положителен; иначе сбрасывается.

 

 

 

 

Биты

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

 

режима

 

 

 

 

 

 

Пример 1

К 20 битному счётчику CNTR, расположенному в двух словах ОЗУ, прибавляется число

 

15 и бит переноса от предыдущей операции.

 

ADDCX.W

#15,&CNTR

; Прибавляем 15+C к 20$битному счётчику

 

 

Пример 2

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

 

дываются с содержимым регистра R6. В случае переноса осуществляется переход к мет

 

ке TONI.

 

 

 

 

ADDCX.W

@R5,R6

; Прибавляем слово и C к R6

 

JC

TONI

; Переходим в случае переноса

 

...

 

; Нет переноса

 

 

Пример 3

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

 

мым регистра R6. При отсутствии переноса осуществляется переход к метке TONI. Ука

 

затель на таблицу автоматически инкрементируется.

 

ADDCX.B

@R5+,R6

; Прибавляем байт и C к R6. R5 = R5 + 1.

 

JNC

TONI

; Переходим, если нет переноса

 

...

 

; Был перенос

 

 

 

 

 

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

ANDX.A, ANDX[.W], ANDX.B «Логическое И» двух операндов

Синтаксис

ANDX.A

src,dst

 

 

 

ANDX

src,dst или

AND.W

src,dst

 

ANDX.B

src,dst

 

 

 

 

 

 

Операция

src .and. dst dst

 

 

 

 

Описание

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

 

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

 

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

 

 

Биты

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

состояния

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

 

 

 

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

 

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

 

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

 

 

 

 

Биты

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

режима

 

 

 

 

 

 

Пример 1

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

 

(AAA55h) для 20 битного слова TOM, расположенного в двух словах ОЗУ. Если резуль

 

тат равен нулю, то выполняется переход к метке TONI.

 

MOVA

#AAA55h,R5

; Загружаем 20$битную маску в R5

 

ANDX.A

R5,TOM

; TOM .and. R5 $> TOM

 

JZ

TONI

; Переходим, если результат нулевой

 

...

 

; Результат не равен нулю

 

или короче

 

 

 

 

ANDX.A

#AAA55h,TOM

; TOM .and. AAA55h $> TOM

 

JZ

TONI

; Переходим, если результат нулевой

 

 

Пример 2

Байт из таблицы, адресуемый регистром R5 (20 битный адрес), логически перемножает

 

ся с содержимым регистра R6. После выборки байта R5 инкрементируется. Биты

 

R6.19:8 = 0.

 

 

 

 

ANDX.B

@R5+,R6

; «Логическое И» между байтом из таблицы

 

 

 

; и R6. R5 + 1.

 

 

 

 

 

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

BICX.A, BICX[.W], BICX.B Очистка битов операнда

Синтаксис

BICX.A

src,dst

 

 

 

BICX

src,dst или

BICX.W

src,dst

 

BICX.B

src,dst

 

 

 

 

 

 

Операция

(.not. src) .and. dst dst

 

 

 

 

Описание

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

 

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

 

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

 

пространства

 

 

 

 

 

 

Биты

N: Не изменяется.

 

 

состояния

Z:

Не изменяется.

 

 

 

C:

Не изменяется .

 

 

 

V:

Не изменяется.

 

 

 

 

Биты

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

режима

 

 

 

 

 

 

 

Пример 1

Сбрасываются биты 19:15 регистра R5 (20 битное значение).

 

BICX.A

#0F8000h,R5

; Сбрасываем биты R5.19:15

 

 

Пример 2

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

 

ки битов регистра R7. Биты R7.19:16 = 0.

 

BIXC.W

@R5,R7

; Сбрасываем биты в R7

 

 

Пример 3

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

 

ки битов порта Port1.

 

 

 

BICX.B

@R5,&P1OUT

; Очищаем биты порта 1,

 

 

 

 

; которые установлены в @R5

 

 

 

 

 

 

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

BISX.A, BISX[.W], BISX.B Установка битов операнда

Синтаксис

BISX.A

src,dst

 

 

 

BISX

src,dst или

BISX.W

src,dst

 

BISX.B

src,dst

 

 

 

 

 

 

Операция

src .or. dst dst

 

 

 

 

Описание

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

 

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

 

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

 

 

 

 

Биты

N: Не изменяется.

 

 

состояния

Z:

Не изменяется.

 

 

 

C:

Не изменяется .

 

 

 

V:

Не изменяется.

 

 

 

 

Биты

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

режима

 

 

 

 

 

 

 

Пример 1

Устанавливаются биты 15 и 16 регистра R5 (20 битное значение).

 

BISX.A

#018000h,R5

; Устанавливаем биты R5.16:15

 

 

Пример 2

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

 

новки битов регистра R7.

 

 

 

BISX.W

@R5,R7

; Устанавливаем биты R7

 

 

Пример 3

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

 

новки битов порта Port1.

 

 

 

BISX.B

@R5,&P1OUT

; Устанавливаем биты порта 1

 

 

 

 

 

 

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]