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

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

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

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

ADDС[.W], ADDС.B

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

Синтаксис

ADDC

src,dst

или

ADDC.W

src,dst

 

ADDC.B

src,dst

 

 

 

 

 

 

 

 

Операция

src + dst + C dst

 

 

 

 

 

Описание

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

 

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

 

 

Биты

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

состояния

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

 

 

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

 

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

 

сывается.

 

 

 

 

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

 

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

 

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

 

 

 

Биты

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

режима

 

 

 

 

 

 

 

Пример 1

К 16 битному счётчику CNTR, расположенному в нижней 64 КБ области памяти, при

 

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

 

ADDC.W

#15,&CNTR

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

 

 

Пример 2

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

 

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

 

ке TONI. Биты R6.19:16 = 0.

 

 

 

ADDC.W

@R5,R6

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

 

JC

TONI

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

 

......

 

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

 

 

Пример 3

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

 

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

 

затель на таблицу автоматически инкрементируется. Биты R6.19:8 = 0.

 

ADDC.B

@R5+,R6

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

 

JNC

TONI

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

 

......

 

; Был перенос

 

 

 

 

 

 

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

AND[.W], AND.B

«Логическое И» двух операндов

Синтаксис

AND

src,dst или AND.W

src,dst

 

AND.B

src,dst

 

 

 

 

 

 

Операция

src .and. dst dst

 

 

 

 

Описание

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

 

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

 

няется

 

 

 

 

 

Биты

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

состояния

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

 

 

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

 

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

 

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

 

 

 

 

Биты

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

режима

 

 

 

 

 

 

Пример 1

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

 

TOM, расположенного в нижней 64 КБ области памяти. Если результат равен нулю,

 

выполняется переход к метке TONI. Биты R5.19:16 = 0.

 

MOV

#0AA55h,R5

; Загружаем маску в R5

 

AND

R5,&TOM

; TOM .and. R5 $> TOM

 

JZ

TONI

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

 

......

 

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

 

или короче

 

 

 

AND

#0AA55h,&TOM

; TOM .and. AA55h $> TOM

 

JZ

TONI

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

 

 

Пример 2

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

 

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

 

Биты R6.19:8 = 0.

 

 

 

AND.B

@R5+,R6

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

 

 

 

; R5 = R5 + 1

 

 

 

 

 

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

BIC[.W], BIC.B

Очистка битов операнда

Синтаксис

BIC

src,dst или

BIC.W src,dst

 

BIC.B

src,dst

 

 

 

 

Операция

(.not. src) .and. dst dst

 

 

 

Описание

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

 

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

 

ранд источник не изменяется

 

 

 

Биты

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

 

состояния

Z:

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

 

 

C:

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

 

 

V:

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

 

 

 

Биты

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

режима

 

 

 

 

 

 

Пример 1

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

 

BIC

#0C000h,R5

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

 

 

Пример 2

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

 

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

 

BIC.W

@R5,R7

; Очищаем те биты в R7,

 

 

 

 

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

 

 

Пример 3

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

 

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

 

 

BIC.B

@R5,&P1OUT

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

 

 

 

 

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

 

 

 

 

 

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

BIS[.W], BIS.B

Установка битов операнда

Синтаксис

BIS

src,dst или

BIS.W

src,dst

 

BIS.B

src,dst

 

 

 

 

 

 

Операция

src .or. dst dst

 

 

 

 

Описание

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

 

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

 

няется

 

 

 

 

 

 

 

Биты

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

 

 

состояния

Z:

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

 

 

 

C:

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

 

 

 

V:

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

 

 

 

 

Биты

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

режима

 

 

 

 

 

 

 

Пример 1

Устанавливаются биты 15 и 13 регистра R5 (16 битное значение). Биты R5.19:16 = 0.

 

BIS

#0A000h,R5

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

 

 

Пример 2

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

 

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

 

BIS.W

@R5,R7

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

 

 

Пример 3

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

 

новки битов порта Port1. Затем R5 инкрементируется.

 

BIS.B

@R5+,&P1OUT

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

 

 

 

 

 

 

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

BIT[.W], BIT.B

Проверка битов операнда

Синтаксис

BIT

src,dst или

BIT.W src,dst

 

BIT.B

src,dst

 

 

 

 

Операция

src .and. dst

 

 

 

Описание

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

 

приёмником. Результат операции влияет только на биты состояния регистра SR.

 

Режим регистровой адресации: биты регистра Rdst.19:16 и Rdst.19:8 (.W и .B соответс

 

твенно) не сбрасываются!

 

 

 

Биты

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

состояния

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

 

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

 

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

 

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

 

 

 

Биты

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

режима

 

 

 

 

 

Пример 1

Если установлен бит 15 или 14 регистра R5 (16 битное значение) или оба этих бита, то

 

выполняется переход к метке TONI. Биты R5.19:16 не изменяются.

 

BIT

#C000h,R5

; Проверяем биты R5.15:14

 

JNZ

TONI

; Хотя бы один бит установлен

 

......

 

; Оба бита сброшены

 

 

Пример 2

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

 

верки битов регистра R7. Если установлен хотя бы один бит, то выполняется переход к

 

метке TONI. Биты R7.19:16 не изменяются.

 

BIT.W

@R5,R7

; Проверяем биты R7

 

JC

TONI

; Хотя бы один бит установлен

 

......

 

; Все биты сброшены

 

 

Пример 3

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

 

верки битов порта Port1. Если все биты сброшены, то выполняется переход к метке

 

TONI. Затем указатель устанавливается на следующий байт таблицы.

 

BIT.B

@R5+,&P1OUT

; Проверяем биты порта 1, R5 = R5 + 1

 

JNC

TONI

; Все требуемые биты сброшены

 

......

 

; Хотя бы один бит установлен

 

 

 

 

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

* BR[.W], BRANCH

Переход в пределах нижней 64CКБ области памяти

Синтаксис

BR

dst

 

 

 

 

 

 

 

 

Операция

dst PC

 

 

 

 

 

 

 

 

 

Эмуляция

MOV

dst,PC

 

 

 

 

 

Описание

Выполняется безусловный переход по любому адресу в пределах нижней 64 КБ области

 

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

 

пользуются 2 байтные операнды

 

 

 

 

Биты

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

 

состояния

 

 

 

 

 

 

 

Пример

Приведены примеры для всех режимов адресации.

 

BR

#EXEC

; Переход

к метке EXEC или заданному адресу

 

 

 

; (например, #0A4h)

 

 

 

 

; Команда

ядра – MOV

@PC+,PC

 

BR

EXEC

; Переход

по адресу,

находящемуся в EXEC

 

 

 

; Команда

ядра – MOV

X(PC),PC

 

 

 

; Косвенная адресация

 

 

BR

&EXEC

; Переход

по адресу, находящемуся в ячейке памяти

 

 

 

; с абсолютным адресом EXEC

 

 

 

; Команда

ядра – MOV

X(0),PC

 

 

 

; Косвенная адресация

 

 

BR

R5

; Переход

по адресу, содержащемуся в регистре R5

 

 

 

; Команда

ядра – MOV

R5,PC

 

 

 

; Косвенная адресация по содержимому R5

 

BR

@R5

; Переход

по адресу, содержащемуся в слове памяти,

 

 

 

; адресуемом регистром R5

 

 

 

; Команда

ядра – MOV

@R5,PC

 

 

 

; Косвенная адресация по косвенному содержимому R5

 

BR

@R5+

; Переход

по адресу, содержащемуся в слове памяти,

 

 

 

; адресуемом регистром R5, c последующим

 

 

 

; инкрементированием содержимого R5

 

 

 

; Команда

ядра – MOV

@R5+,PC

 

 

 

; Косвенная адресация по косвенному содержимому R5

 

 

 

; с автоинкрементом

 

 

BR

X(R5)

; Переход

по адресу, содержащемуся в слове памяти

 

 

 

; с адресом R5 + X (например, обращение к таблице

 

 

 

; адресов, расположенной начиная с адреса X).

 

 

 

; X может

быть адресом или меткой.

 

 

 

; Команда

ядра – MOV

X(R5),PC

;Косвенная адресация по косвенному

;содержимому R5 + X

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

CALL

Вызов подпрограммы из нижней 64CКБ области памяти

Синтаксис

CALL

 

dst

 

 

 

 

 

Операция

Dst tmp

16 битное dst вычисляется и запоминается

 

SP – 2 SP

 

 

 

PC @SP

PC сохраняется в стеке

 

 

tmp PC

dst загружается в PC

 

 

 

Описание

Осуществляется вызов подпрограммы, расположенной по любому адресу в пределах

 

64 КБ. Могут использоваться все семь режимов адресации. В команде используется

 

2 байтный операнд. Возврат из подпрограммы осуществляется по команде RET.

 

 

 

Биты

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

 

состояния

Биты PC.19:16 — сбрасываются (адрес в пределах нижней 64 КБ области)

 

 

 

Биты

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

 

режима

 

 

 

 

 

 

 

Пример

Приведены примеры для всех режимов адресации.

 

Непосредственная адресация: вызов подпрограммы по метке (нижние 64 КБ) или по ад

 

ресу.

 

 

 

 

 

CALL

#EXEC

; Стартовый адрес $

EXEC

 

CALL

#0AA04h

; Стартовый адрес $

#0AA04h

Относительная адресация: вызов подпрограммы по 16 битному адресу, находящемуся в EXEC. EXEC находится по адресу (PC + X), где X – в диапазоне PC ±32 КБ.

CALL

EXEC

; Стартовый адрес $ @EXEC. z16(PC)

Абсолютная адресация: вызов подпрограммы по 16 битному адресу, находящемуся в ячейке с абсолютным адресом EXEC (нижние 64 КБ).

CALL

&EXEC

; Стартовый адрес $ @EXEC

Регистровая адресация: вызов подпрограммы по 16 битному адресу, находящемуся в ре гистре R5 (R5.15:0).

CALL

R5

; Стартовый адрес $ в регистре R5

Косвенная адресация: вызов подпрограммы по 16 битному адресу, находящемуся в сло ве памяти, адресуемом регистром R5 (20 битный адрес).

CALL

@R5

; Стартовый адрес $ @R5

Косвенная адресация с автоинкрементом: вызов подпрограммы по 16 битному адресу, находящемуся в слове памяти, адресуемом регистром R5 (20 битный адрес), с последую щим увеличением содержимого R5 на 2.

CALL

@R5+

; Стартовый адрес $ @R5, R5 = R5 + 2

Индексная адресация: вызов подпрограммы по 16 битному адресу, находящемуся в слове памяти с адресом (R5 + X), например обращение к таблице адресов, расположенной начи ная с адреса X. Адрес находится в пределах нижней 64 КБ области. X — в диапазоне

±32 КБ.

CALL

X(R5)

; Стартовый адрес $ @(R5 + X). z16(R5)

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

* CLR[.W], * CLR.B Очистка операнда

Синтаксис

CLR

dst

или CLR.W dst

 

CLR.B

dst

 

 

 

 

 

Операция

0 dst

 

 

 

 

 

 

Эмуляция

MOV

#0,dst

 

 

MOV.B #0,dst

 

 

 

Описание

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

 

 

Биты

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

состояния

 

 

 

 

 

Пример 1

Обнуляется слово TONI в ОЗУ.

 

CLR

TONI

; 0 $> TONI

 

 

Пример 2

Обнуляется регистр R5.

 

CLR

R5

 

 

 

Пример 3

Обнуляется байт TONI, расположенный в ОЗУ.

 

CLR.B

TONI

; 0 $> TONI

 

 

 

 

* CLRC

Очистка бита переноса

Синтаксис

CLRC

 

 

 

 

 

 

Операция

0 C

 

 

 

 

 

 

Эмуляция

BIC

#1,SR

 

 

 

Описание

Бит переноса (C) сбрасывается. В команде используются 2 байтные операнды

 

 

 

Биты

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

 

состояния

Z:

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

 

 

C:

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

 

 

V:

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

 

 

 

Биты

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

режима

 

 

 

 

 

 

Пример

16 битный счётчик, на который указывает R13, прибавляется к 32 битному счётчику, на

 

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

 

 

CLRC

 

; C=0: начальное значение

 

DADD

@R13,0(R12) ; Прибавляем 16$битный счётчик к младшему

 

 

 

 

; слову 32$битного счётчика

 

DADC

2(R12)

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

 

 

 

 

; 32$битного счётчика

 

 

 

 

 

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

* CLRN

Очистка бита отрицательного значения

Синтаксис

CLRN

 

 

 

 

Операция

0 N или (.NOT. src .AND. dst dst)

 

 

 

 

Эмуляция

BIC

#4,SR

 

 

 

Описание

Константа 04h инвертируется (0FFFBh) и логически перемножается (AND) с содержи

 

мым регистра состояния SR. Результат помещается в регистр состояния. В команде ис

 

пользуются 2 байтные операнды

 

 

 

Биты

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

 

состояния

Z:

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

 

 

C:

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

 

 

V:

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

 

 

 

Биты

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

режима

 

 

 

 

 

 

Пример

Сбрасывается флаг отрицательного значения в регистре состояния. Таким образом, ис

 

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

 

CLRN

 

 

 

CALL

SUBR

 

 

......

 

 

 

SUBR

JN SUBRET

; Если входной результат отрицательный,

 

......

 

; то ничего не делаем и выходим

 

SUBRET

RET

 

 

 

 

 

 

* CLRZ

Очистка бита нуля

Синтаксис

CLRZ

 

 

Операция

0 Z или (.NOT. src .AND. dst dst)

 

 

Эмуляция

BIC #2,SR

 

 

Описание

Константа 02h инвертируется (0FFFDh) и логически перемножается (AND) с содержи

 

мым регистра состояния SR. Результат помещается в регистр состояния. В команде ис

 

пользуются 2 байтные операнды

 

 

Биты

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

состояния

Z:

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

 

C:

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

 

V:

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

 

 

Биты

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

режима

 

 

 

 

Пример

Сбрасывается флаг нуля в регистре состояния.

 

CLRZ

 

 

 

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

CMP[.W], CMP.B Сравнение двух операндов

Синтаксис

CMP

src,dst или

CMP.W

src,dst

 

CMP.B

src,dst

 

 

 

 

 

Операция

.not.src + 1 + dst или (dst – src)

 

 

 

Описание

Операнд источник вычитается из операнда приёмника. Для выполнения этой операции

 

обратный код операнда источника плюс 1 складывается с операндом приёмником.

 

Операция влияет только на биты состояния регистра SR

 

 

Биты

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

состояния

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

 

 

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

 

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

 

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

 

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

 

жительного операнда источника из отрицательного операнда приёмника положи

 

телен, иначе сбрасывается.

 

 

 

Биты

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

режима

 

 

 

 

 

 

Пример 1

Слово EDE сравнивается с 16 битной константой 1800h. В случае равенства выполняет

 

ся переход к метке TONI. Слово EDE расположено в диапазоне PC ±32 КБ.

 

CMP

#01800h,EDE

; Сравниваем EDE с 1800h

 

JEQ

TONI

; EDE = 1800h

 

...

 

 

 

 

 

Пример 2

Слово из таблицы с адресом (R5 + 10) сравнивается содержимым регистра R7 (20 бит

 

ный адрес). Если число в R7 меньше табличного значения (сравниваются 16 битные

 

числа со знаком), то выполняется переход к метке TONI. Биты R7.19:16 не изменяются.

 

Адрес операнда источника — 20 битный.

 

CMP.W

10(R5),R7

; Сравниваем два числа со знаком

 

JL

TONI

; R7 < 10(R5)

 

...

 

; R7 >= 10(R5)

 

 

Пример 3

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

 

ным состоянием порта Port1. Если значения равны, то выполняется переход к метке

 

TONI. Затем указатель устанавливается на следующий байт таблицы.

 

CMP.B

@R5+,&P1OUT

; Сравниваем биты порта с таблицей,

 

 

 

; R5 = R5 + 1

 

JEQ

TONI

; Значения одинаковы

 

...

 

; Значения разные