Файл: Семейство микроконтроллеров 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 |
|