Файл: Семейство микроконтроллеров MSP430X1XX, руководство пользователя (2004).pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 16.06.2025

Просмотров: 2852

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Раздел III.

16-разрядное RISC CPU

Содержимое R5 сравнивается с числом 15. Если содержимое наивысшее или

такое же, происходит переход к метке LABEL.

Пример

CMP

#15, R5

;Если R5≥15, происходит переход

JHS

LABEL

;Продолжение с этого места, если R5<15

* В оригинале используется термин «higher». Таким образом, подчеркивается, что эта команда позволяет выполнять сравнение чисел без знака, в отличие от команды JGE (Jump if Greater or Equal – переход, если больше или равно), с помощью которой можно сравнивать числа со знаком.

JEQ, JZ Переход, если равно; переход, если ноль

Синтаксис JEQ label, JZ label

Если Z=1: PC+2 × смещение → PC

Операция

Если Z=0: выполняется следующая команда

Проверяется бит нyля (Z) регистра статуса. Если он установлен, 10-разряд-

Описание

ная величина смещения со знаком, содержащаяся в младших битах (LSB) команды прибавляется к счетчику команд. Если бит нуля Z не установлен, выполняется команда, следующая за инструкцией jump.

Биты статуса Биты статуса не изменяются

Переход по адресу, содержащемуся в TONI, если R7 содержит ноль.

Пример

TST

R7

;Проверка содержимого регистра R7

JZ

TONI

;Переход, если «ноль»

Переход по адресу LEO, если содержимое R6 равно содержимому таблицы.

CMP

R6, Table(R5) ;Cравнение содержимого регистра R6

;с содержимым памяти (адрес

Пример

JEQ

LEO

;таблицы содержится в R5)

;Переход, если данные равны

;Нет, данные не равны, выполнение

;программы продолжается здесь

Переход к метке LABEL, если содержимое R5 равно нулю.

Пример

TST

R5

JZ

LABEL

JGE

Переход, если больше или равно

Синтаксис

JGE label

Если (N .XOR. V)=0, то переход к метке: PC+2 × смеще-

Операция

ние → PC

Если (N .XOR. V)=1, то выполняется следующая команда

Проверяются бит отрицания (N) и бит переполнения (V) в регистре статуса. Если они оба установлены или сброшены, 10-разрядная величина смещения

Описание со знаком, содержащаяся в младших битах (LSB) команды прибавляется к счетчику команд. Если установлен только один бит, выполняется команда, следующая за инструкцией jump. Это позволяет сравнивать числа со знаком.

Биты статуса Биты статуса не изменяются

Библиотека Компэла

73


MSP430x1xxFamily

Если содержимое регистра R6 больше или равно содержимому памяти по

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

Пример

CMP @R7, R6

;R6≥(R7)?, сравнение чисел со знаком

JGE EDE

;Да, R6≥(R7); переход к метке EDE

;Нет, продолжение программы

JL

Переход, если меньше

Синтаксис

JL label

Если (N .XOR. V)=1, то переход к метке: PC+2 × смеще-

Операция

ние → PC

Если (N .XOR. V)=0, то выполняется следующая команда

Проверяются бит отрицания (N) и бит переполнения (V) в регистре статуса. Если установлен только один из них, 10-разрядная величина смещения со

Описание

знаком, содержащаяся в младших битах (LSB) команды прибавляется к счетчику команд. Если оба бита N и V установлены или сброшены, выполняется команда, следующая за инструкцией jump. Это позволяет сравнивать числа со знаком.

Биты статуса Биты статуса не изменяются

Если содержимое регистра R6 меньше содержимого памяти по адресу, указанному в R7, выполнение программы продолжается с метки EDE.

CMP

@R7,R6

;R6<(R7)?, сравнение чисел со знаком

Пример

JL

EDE

;Да, R6<(R7) ;переход к метке EDE

;Нет, продолжение программы

JMP

Безусловный переход

Синтаксис

JMP label

Операция

PC+2 × смещение → PC

Описание

10-разрядная величина смещения со знаком, содержащаяся в младших битах

(LSB) команды прибавляется к счетчику команд.

Биты статуса

Биты статуса не изменяются

Эта команда длиной в одно слово может заменить команду BRANCH для диа-

Рекомендация

пазона слов от -511 до +512 относительно текущего содержимого счетчика

команд.

JN

Переход, если отрицание

Синтаксис

JN label

Операция

Если N=1: PC+2 × смещение → PC

Если N=0: выполняется следующая команда

Проверяется бит отрицания (N) регистра статуса. Если он установлен, 10-раз-

Описание

рядная величина смещения со знаком, содержащаяся в младших битах (LSB)

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

команда, следующая за инструкцией jump.

Библиотека Компэла

74


Раздел III.

16-разрядное RISC CPU

Биты статуса

Биты статуса не изменяются

Результат вычисления в R5 вычитается из COUNT. Если получается отрица-

тельная величина, COUNT очищается и выполнение программы продолжается

по другому пути.

;COUNT – R5 ® COUNT

SUB R5, COUNT

JN L$1

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

;тогда COUNT=0, PC=L$1

Пример

;Продолжение, если COUNT≥0

L$1 CLR COUNT

JNC

Переход, если перенос не установлен

JLO

Переход, если низший

Синтаксис

JNC label JLO label

Операция

Если C=0: PC+2 × смещение → PC

Если C=1: выполняется следующая команда

Проверяется бит переноса (C) регистра статуса. Если он сброшен, 10-разряд-

ная величина смещения со знаком, содержащаяся в младших битах (LSB)

Описание

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

ется команда, следующая за инструкцией jump. Команда JNC (переход, если

нет переноса / низший) используется для сравнения чисел без знака (от 0 до

65536).

Биты статуса

Биты статуса не изменяются

Результат в R6 прибавляется к BUFFER. Если происходит переполнение, вы-

полняется процедура обработки ошибки по адресу ERROR.

ADD R6,BUFFER ;BUFFER + R6 → BUFFER

JNC CONT

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

ERROR …

;Начало процедуры обработки ошибки

Пример

;Продолжение нормального хода

COUNT …

;программы

Переход к STL2, если байт STATUS содержит 1 или 0.

Пример

CMP.B #2,STATUS

JLO STL2

;STATUS<2

;STATUS≥2, продолжение здесь

Библиотека Компэла

75


MSP430x1xxFamily

JNE

Переход, если не равно

JNZ

Переход, если не ноль

Синтаксис

JNE label JNZ label

Операция

Если Z=0: PC+2 × смещение → PC

Если Z=1: выполняется следующая команда

Проверяется бит нуля (Z) регистра статуса. Если он сброшен, 10-разрядная

Описание

величина смещения со знаком, содержащаяся в младших битах (LSB) ко-

манды прибавляется к счетчику команд. Если бит Z установлен, выполняется

команда, следующая за инструкцией jump.

Биты статуса

Биты статуса не изменяются

Переход по адресу TONI, если регистры R7 и R8 имеют различное содержи-

мое.

Пример

CMP R7, R8 ;Сравнение R7 с R8

JNE TONI

;Переход, если содержимое различное

;Продолжение, если содержимое одинаковое

MOV[.W]

Пересылка содержимого источника в получатель

MOV.B

Пересылка содержимого источника в получатель

Синтаксис

MOV src, dst или MOV.W src, dst MOV.B src, dst

Операция

src → dst

Описание

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

ся. Предыдущее содержимое получателя теряется.

Биты статуса

Биты статуса не изменяются

Биты режима

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

Содержимое таблицы EDE (данные в виде слов) копируется в таблицу TOM.

Длина таблиц должна составлять 020h ячеек.

MOV #EDE,R10

;Подготовка счетчика

MOV #020h,R9

;Подготовка счетчика

Loop MOV @R10+,TOM-EDE-2(R10) ;Использование

;указателя

;в регистре R10 для

Пример

DEC R9

;обеих таблиц

;Декремент счетчика

JNZ Loop

;Содержимое

;счетчика≠0,

;копирование

;продолжается

;Копирование закончено

Содержимое таблицы EDE (данные в виде байт) копируется в таблицу TOM.

Длина таблиц должна составлять 020h ячеек.

Пример

MOV

#EDE,R10

;Подготовка счетчика

MOV

#020h,R9

;Подготовка счетчика

Loop MOV.B @R10+,TOM-EDE-1(R10) ;Использование

;указателя

Библиотека Компэла

76


Раздел III.

16-разрядное RISC CPU

;в регистре R10 для

DEC R9

;обеих таблиц

;Декремент счетчика

JNZ Loop

;Содержимое

Пример

;счетчика≠0,

;копирование

;продолжается

;Копирование закончено

*NOP

Нет операции

Синтаксис

NOP

Операция

не выполняется

Эмуляция

MOV #0, R3

Никакая операция не выполняется. Команда может использоваться для

Описание

исключения команд в ходе проверки программного обеспечения или для

задания необходимого времени ожидания.

Биты статуса

Биты статуса не изменяются

Команда NOP главным образом используется в двух случаях:

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

корректировка программных временных интервалов.

Примечание: эмуляция команды NOP.

Другие команды могут эмулировать функцию NOP, позволяя получать

различное количество циклов команды и слов кода. Ниже представлены некоторые примеры:

MOV

#0,R3

;1 цикл, 1

слово

MOV

0(R4),0(R4)

;6 циклов, 3

слова

MOV

@R4,0(R4)

;5 циклов, 2

слова

BIC

#0,EDE(R4)

;4 цикла, 2

слова

JMP

$+2

;2 цикла, 1

слово

BIC

#0,R5

;1 цикл, 1

слово

Однако, нужно соблюдать осторожность при использовании этих примеров, чтобы избежать непредсказуемых результатов. К примеру, при использовании команды MOV 0(R4), 0(R4), когда R4 содержит значение 120h, произойдет нарушение защиты сторожевого таймера (адрес 120h), потому что не будет использован ключ защиты.

*POP[.W] Снятие со стека слова в получатель

*POP.B Снятие со стека слова в получатель

Синтаксис POP dst POP.B dst

@SP → temp

Операция SP + 2 → SP temp → dst

Библиотека Компэла

77