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

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

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

3.4. Система команд 51

ADDС[.W], ADDС.B

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

Синтаксис

ADDC

src,dst или

ADDC.W

src,dst

 

ADDC.B

src,dst

 

 

 

 

 

 

Операция

src + dst + C dst

 

 

 

 

Описание

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

 

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

 

теряется

 

 

 

 

Биты

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

состояния

ный.

 

 

 

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

 

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

 

сывается.

 

 

 

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

 

 

Биты

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

режима

 

 

 

 

 

 

Пример 1

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

 

смещённому на 11 слов (20/2 + 2/2) относительно адреса в R13.

 

ADD

@R13+,20(R13)

; Складываем младшие слова

 

ADDC

@R13+,20(R13)

; Складываем старшие слова, учитывая перенос

 

 

Пример 2

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

 

смещённому на 11 байт относительно адреса в R13.

 

ADD.B

@R13+,10(R13)

; Складываем младшие байты

 

ADDC.B

@R13+,20(R13)

; Складываем средние байты, учитывая перенос

 

ADDC.B

@R13+,20(R13)

; Складываем старшие байты, учитывая перенос

 

 

 

 

 

52 Глава 3. 16#битное RISC ЦПУ MSP430

AND[.W], AND.B

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

Синтаксис

AND

src,dst или

AND.W

src,dst

 

AND.B

src,dst

 

 

 

 

 

 

Операция

src .AND. dst dst

 

 

 

 

Описание

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

 

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

 

 

Биты

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

состояния

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

 

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

 

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

 

 

 

 

Биты

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

режима

 

 

 

 

 

 

Пример 1

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

 

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

 

MOV

#0AA55h,R5

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

 

AND

R5,TOM

; Накладываем маску на слово TOM

 

JZ

TONI

;

 

 

......

 

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

 

;

 

 

 

 

;

 

 

 

 

;

или

 

 

 

;

 

 

 

 

;

 

 

 

 

AND

#0AA55h,TOM

 

 

 

JZ

TONI

 

 

 

 

Пример 2

Биты маски #0A5h логически перемножаются с младшим байтом TOM. Если результат

 

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

 

AND.B

#0A5h,TOM

; Накладываем маску #0A5h на младший байт TOM

 

JZ

TONI

;

 

 

......

 

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

 

 

 

 

 

3.4. Система команд 53

BIC[.W], BIC.B

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

Синтаксис

BIC

src,dst или

BIC.W src,dst

 

BIC.B

src,dst

 

 

 

 

Операция

.NOT. src .AND. dst dst

 

 

 

Описание

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

 

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

 

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

 

 

Биты

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

состояния

 

 

 

 

 

Биты

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

режима

 

 

 

 

 

Пример 1

Сбрасываются шесть старших битов слова LEO, расположенного в ОЗУ.

 

BIC

#0FC00h,LEO

; Сбрасываем 6 старших битов по адресу LEO

 

 

Пример 2

Сбрасываются пять старших битов байта LEO, расположенного в ОЗУ.

 

BIC.B

#0F8h,LEO

; Сбрасываем 5 старших битов по адресу LEO

 

 

 

 

BIS[.W], BIS.B

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

Синтаксис

BIS

src,dst

или BIS.W src,dst

 

BIS.B

src,dst

 

 

 

 

Операция

src .OR. dst dst

 

 

 

Описание

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

 

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

 

няется

 

 

 

 

Биты

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

состояния

 

 

 

 

 

Биты

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

режима

 

 

 

 

 

Пример 1

Устанавливаются шесть младших битов слова TOM, расположенного в ОЗУ.

 

BIS

#003Fh,TOM

; Устанавливаем 6 младших битов по адресу TOM

 

 

Пример 2

Устанавливаются три старших бита байта TOM, расположенного в ОЗУ.

 

BIS.B

#0E0h,TOM

; Устанавливаем 3 старших бита по адресу TOM

 

 

 

 

54 Глава 3. 16#битное RISC ЦПУ MSP430

BIT[.W], BIT.B

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

Синтаксис

BIT

src,dst или BIT.W

src,dst

 

BIT.B

src,dst

 

 

 

 

 

 

Операция

src .AND. dst

 

 

 

 

Описание

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

 

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

 

няются

 

 

 

 

 

Биты

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

состояния

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

 

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

 

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

 

 

 

 

Биты

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

режима

 

 

 

 

 

 

Пример 1

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

 

BIT

#0200h,R8

; Бит 9 регистра R8 установлен?

 

JNZ

TOM

; Да, переходим к TOM

 

......

 

; Нет, продолжаем

 

 

Пример 2

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

 

BIT.B

#8,R8

 

 

 

JC

TOM

 

 

 

 

Пример 3

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

 

верке одного бита с использованием команды BIT состояние флага переноса равно со

 

стоянию проверяемого бита, этот флаг используется в следующей команде. Получаемые

 

данные побитно загружаются в регистр REGBUF.

 

; Обмен по последовательному каналу, первым передаётся младший бит (LSB)

 

 

 

; xxxx xxxx xxxx xxxx

 

BIT.B

#RCV,RCCTL

; Принятый бит $> бит переноса

 

RRC

RECBUF

; Бит переноса $> старший бит RECBUF

 

 

 

; cxxx xxxx

 

......

 

; повторяем две предыдущие команды

 

......

 

; восемь раз

 

 

 

; cccc cccc

 

 

 

; ^

^

 

 

 

; MSB

LSB

 

; Обмен по последовательному каналу, первым передаётся старший бит (MSB)

 

BIT.B

#RCV,RCCTL

; Принятый бит $> бит переноса

 

RLC.B

RECBUF

; Бит переноса $> младший бит RECBUF

 

 

 

; xxxx xxxc

 

......

 

; Повторяем две предыдущие команды

 

......

 

; восемь раз

 

 

 

; cccc cccc

 

 

 

; ^

^

 

 

 

; MSB

LSB

 

 

 

 

 

3.4. Система команд 55

* BR[.W], BRANCH

Переход по заданному адресу

Синтаксис

BR

dst

 

 

 

 

 

 

 

 

Операция

dst PC

 

 

 

 

 

 

 

 

 

Эмуляция

MOV

dst,PC

 

 

 

 

 

Описание

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

 

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

 

операнд

 

 

 

 

 

 

Биты

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

 

состояния

 

 

 

 

 

 

 

Пример

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

 

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

 

 

 

 

 

 

56 Глава 3. 16#битное RISC ЦПУ MSP430

CALL

Вызов подпрограммы

Синтаксис

CALL

dst

 

 

 

Операция

dst tmp (dst вычисляется и запоминается)

 

SP – 2 SP

 

 

PC @SP (PC сохраняется в стеке)

 

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

 

 

Описание

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

 

64 КБ. Адрес возврата (адрес следующей команды) сохраняется в стеке. В команде ис

 

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

 

 

Биты

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

состояния

 

 

 

 

 

Пример

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

 

CALL

#EXEC

; Вызов с использованием метки EXEC

 

 

 

; или непосредственного адреса (например, #0A4h)

 

 

 

; SP$2 SP, PC+2 @SP, @PC+ PC

 

CALL

EXEC

; Вызов п/п по адресу, находящемуся в EXEC

 

 

 

; SP$2 SP, PC+2 @SP, X(PC) PC

 

 

 

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

 

CALL

&EXEC

; Вызов п/п по адресу, находящемуся в ячейке

 

 

 

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

 

 

 

; SP$2 SP, PC+2 @SP, X(0) PC

 

 

 

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

 

CALL

R5

; Вызов п/п по адресу, содержащемуся в регистре R5

 

 

 

; SP$2 SP, PC+2 @SP, R5 PC

 

 

 

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

 

CALL

@R5

; Вызов п/п по адресу, содержащемуся в слове

 

 

 

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

 

 

 

; SP$2 SP, PC+2 @SP, @R5 PC

 

 

 

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

 

CALL

@R5+

; Вызов п/п по адресу, содержащемуся в слове

 

 

 

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

 

 

 

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

 

 

 

; SP$2 SP, PC+2 @SP, @R5+ PC

 

 

 

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

 

 

 

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

 

CALL

X(R5)

; Вызов п/п по адресу, содержащемуся в слове

 

 

 

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

 

 

 

; к таблице адресов, расположенной начиная

 

 

 

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

 

 

 

; SP$2 SP, PC+2 @SP, X(R5) PC

 

 

 

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

 

 

 

 

3.4. Система команд 57

* 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$битного счётчика

 

 

 

 

 

58 Глава 3. 16#битное RISC ЦПУ MSP430

* 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

 

 

 

3.4. Система команд 59

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

Синтаксис

CMP

src,dst или CMP.W src,dst

 

CMP.B

src,dst

 

 

 

 

Операция

dst + .NOT.src + 1

 

 

или

 

 

 

 

(dst – src)

 

 

 

 

Описание

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

 

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

 

Операнды не изменяются, результат операции не сохраняется — операция влияет только

 

на биты состояния

 

 

 

Биты

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

состояния

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

 

 

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

 

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

 

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

 

 

Биты

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

режима

 

 

 

 

 

 

Пример 1

Сравнивается содержимое регистров R5 и R6. Если они равны, выполнение программы

 

продолжается с метки EQUAL.

 

 

CMP

R5,R6

; R5 = R6?

 

 

JEQ

EQUAL

; Да, переходим

 

 

Пример 2

Сравниваются два блока данных в ОЗУ. Если их содержимое различается, то произво

 

дится переход к метке ERROR.

 

 

 

MOV

#NUM,R5

; Количество сравниваемых слов

 

 

MOV

#BLOCK1,R6

; Начальный адрес 1$го блока $> R6

 

 

MOV

#BLOCK2,R7

; Начальный адрес 2$го блока $> R7

 

L$1

CMP

@R6+,0(R7)

; 2$байтные значения равны?

 

 

 

 

; R6 инкрементируется

 

 

JNZ

ERROR

; Нет, переходим к ERROR

 

 

INCD

R7

; Инкрементируем R7

 

 

DEC

R5

; Все элементы сравнили?

 

 

JNZ

L$1

; Нет, продолжаем сравнение

 

 

Пример 3

Сравниваются два байта в ОЗУ, расположенные по адресам EDE и TONI. Если они рав

 

ны, то выполнение программы продолжается с метки EQUAL.

 

 

CMP.B

EDE,TONI

; MEM(EDE) = MEM(TONI)?

 

 

JEQ

EQUAL

; Да, переходим

 

 

 

 

 

60 Глава 3. 16#битное RISC ЦПУ MSP430

* DADC[.W], * DADC.B

Сложение переноса с операндом (BCDCарифметика)

Синтаксис

DADC

dst или

DADC.W

dst

 

DADC.B

dst

 

 

 

 

 

Операция

dst + C dst (BCD арифметика)

 

 

 

 

 

 

Эмуляция

DADD

#0,dst

 

 

 

DADD.B #0,dst

 

 

 

 

Описание

Бит переноса (C) прибавляется к операнду приёмнику по правилам двоично десяти

 

чной арифметики

 

 

 

 

Биты

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

состояния

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

 

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

 

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

 

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

 

 

 

 

Биты

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

режима

 

 

 

 

 

 

Пример 1

4 разрядное двоично десятичное число, находящееся в R5, прибавляется к 8 разрядно

 

му числу, на которое указывает R8.

 

CLRC

 

; Сбрасываем бит переноса, задавая начальные

 

 

 

; условия для следующей команды

 

DADD

R5,0(R8)

; Складываем младшие разряды + C

 

DADC

2(R8)

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

 

 

Пример 2

2 разрядное двоично десятичное число, находящееся в R5 прибавляется к 4 разрядному

 

числу, на которое указывает R8.

 

 

CLRC

 

; Сбрасываем бит переноса, задавая начальные

 

 

 

; условия для следующей команды

 

DADD.B

R5,0(R8)

; Складываем младшие разряды + C

 

DADC.B

1(R8)

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