Микропроцессорная техника / Семейство микроконтроллеров MSP430x2xx_
.pdf4.5. Команды MSP430 и MSP430X 121
4.5.Команды MSP430 и MSP430X
Под командами MSP430 понимаются 27 команд ядра ЦПУ MSP430. Эти ко манды применяются в пределах всего адресного пространства в 1 МБ, за исклю чением ситуаций, когда их возможностей оказывается недостаточно. Соответс твенно, команды MSP430X используются в тех случаях, когда размер адреса опе ранда или его содержимого превышает 16 бит, что делает невозможным применение команд MSP430.
Возможны три подхода к применению команд MSP430 и MSP430X:
Использовать только команды MSP430. Единственное исключение — ко манды CALLA и RETA. Этот вариант возможен при выполнении двух простых условий:
все константы, переменные, массивы, таблицы и данные располагаются в нижней области памяти размером 64 КБ. Это позволит использовать для доступа ко всем данным команды MSP430 с 16 битной адресацией. Не требуются указатели для хранения 20 битных адресов;
все локальные константы, используемые в подпрограммах, располагаются сразу же после кода подпрограммы. Это позволит задействовать относи тельный режим адресации с 16 битным смещением для обращения к па мяти в диапазоне адресов PC ±32 КБ.
Использовать только команды MSP430X. Недостатки такого подхода — меньшая скорость выполнения программы из за использования дополни тельных тактов ЦПУ и увеличенный размер кода из за наличия у всех двухоперандных команд обязательного слова расширения.
Использовать команды обоих типов, в зависимости от ситуации. Описание команд MSP430 и MSP430X приводится в следующих подразделах.
4.5.1. Команды MSP430
Команды MSP430 могут использоваться независимо от того, где располагает ся программа — в нижней 64 КБ области памяти или за её пределами. Единствен ным исключением являются команды CALL и RET, область действия которых ог раничена младшими 64 КБ памяти. Чтобы подпрограммы можно было размещать в пределах всего адресного пространства, в набор команд ЦПУ MSP430X были добавлены две команды: CALLA и RETA.
Команды с двумя операндами (формат I)
Формат команды MSP430 с двумя операндами приведён на Рис. 4.22. На этом же рисунке показаны дополнительные слова, определяющие источник и приём ник для индексного, относительного, абсолютного и непосредственного режимов адресации. Краткое описание всех 12 двухоперандных команд MSP430 приведено в Табл. 4.4.
122 Глава 4. 16#битное RISC ЦПУ MSP430X
15 |
12 |
|
11 |
8 |
|
7 |
6 |
5 |
4 |
|
|
|
|
0 |
|
|
|
|
|
||
|
Код операции |
|
|
Rsrc |
|
|
Ad |
B/W |
As |
|
|
|
|
Rdst |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
Источник или приёмник 15:0 |
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
Приёмник 15:0 |
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
|
Рис. 4.22. Формат команды MSP430 с двумя операндами. |
|
|
|
|
|
|
|
|
|||||||||||
Таблица 4.4. Команды MSP430 с двумя операндами |
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Мнемоника |
S reg, D reg |
|
|
Операция |
|
|
|
|
Биты состояния |
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
V |
|
N |
Z |
|
C |
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
MOV(.B) |
src,dst |
|
src dst |
|
|
|
|
|
|
|
– |
|
– |
– |
|
– |
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
ADD(.B) |
src,dst |
|
src + dst dst |
|
|
|
|
|
|
|
* |
|
* |
* |
|
* |
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
ADDC(.B) |
src,dst |
|
src + dst + C dst |
|
|
|
|
|
* |
|
* |
* |
|
* |
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
SUB(.B) |
src,dst |
|
dst + .not.src + 1 dst |
|
|
|
|
|
* |
|
* |
* |
|
* |
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
SUBC(.B) |
src,dst |
|
dst + .not.src + C dst |
|
|
|
|
* |
|
* |
* |
|
* |
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
CMP(.B) |
src,dst |
|
dst – src |
|
|
|
|
|
|
|
* |
|
* |
* |
|
* |
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
DADD(.B) |
src,dst |
|
src + dst + C dst (BCD арифметика) |
|
|
* |
|
* |
* |
|
* |
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BIT(.B) |
src,dst |
|
src .and. dst |
|
|
|
|
|
|
|
0 |
|
* |
* |
|
|
|
|
|
||
|
|
|
|
|
z |
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
BIC(.B) |
src,dst |
|
not.src .and. dst dst |
|
|
|
|
|
– |
|
– |
– |
|
– |
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
BIS(.B) |
src,dst |
|
src .or. dst dst |
|
|
|
|
|
|
|
– |
|
– |
– |
|
– |
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
XOR(.B) |
src,dst |
|
src .xor. dst dst |
|
|
|
|
|
|
|
* |
|
* |
* |
|
|
|
|
|
||
|
|
|
|
|
|
z |
|||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
AND(.B) |
src,dst |
|
src .and. dst dst |
|
|
|
|
|
0 |
|
* |
* |
|
|
|
|
|
||||
|
|
|
|
|
z |
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
* Влияет на бит состояния
–Не влияет на бит состояния 0 Бит состояния сбрасывается
1 Бит состояния устанавливается
Команды с одним операндом (формат II)
Формат команд MSP430 с одним операндом (за исключением команды RETI) приведён на Рис. 4.23. На этом же рисунке показано дополнительное слово, опре деляющее операнд приёмник для индексного, относительного, абсолютного и непосредственного режимов адресации. Краткое описание всех семи одноопе рандных команд MSP430 приведено в Табл. 4.5.
15 |
7 |
6 |
5 |
4 |
0 |
Код операции |
|
B/W |
|
Ad |
Rdst |
|
|
|
|
|
|
Приёмник 15:0
Рис. 4.23. Формат команды MSP430 с одним операндом.
4.5. Команды MSP430 и MSP430X 123
Таблица 4.5. Команды MSP430 с одним операндом
Мнемоника |
S reg, |
Операция |
|
Биты состояния |
|
|
|
|||
|
|
|
|
|
|
|
|
|||
D reg |
V |
|
N |
Z |
|
C |
||||
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
RRC(.B) |
dst |
C MSB .......LSB C |
* |
|
* |
* |
|
* |
|
|
|
|
|
|
|
|
|
|
|
|
|
RRA(.B) |
dst |
MSB MSB ....LSB C |
0 |
|
* |
* |
|
* |
|
|
|
|
|
|
|
|
|
|
|
||
PUSH(.B) |
src |
SP – 2 SP, src @SP |
– |
|
– |
– |
|
– |
||
|
|
|
|
|
|
|
|
|
||
SWPB |
dst |
Перестановка байтов местами |
– |
|
– |
– |
|
– |
||
|
|
|
|
|
|
|
|
|
||
CALL |
dst |
Вызов подпрограммы в нижней 64 КБ области памяти |
– |
|
– |
– |
|
– |
||
|
|
|
|
|
|
|
|
|
|
|
RETI |
dst |
TOS SR, SP + 2 SP |
* |
|
* |
* |
|
* |
|
|
|
|
TOS PC,SP + 2 SP |
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
SXT |
dst |
Бит 7 Бит 8........Бит 15 |
0 |
|
* |
* |
|
|
|
|
z |
||||||||||
|
|
|
|
|
|
|
|
|
|
|
* Влияет на бит состояния
– Не влияет на бит состояния 0 Бит состояния сбрасывается
1 Бит состояния устанавливается
Команды перехода
Формат команд перехода MSP430 и MSP430X приведён на Рис. 4.24. Величи на смещения в словах (10 битное число со знаком) умножается на два, расширя ется до 20 битного значения и прибавляется к 20 битному счётчику команд. Это позволяет выполнять переход в диапазоне от –511 до +512 слов относительно те кущего значения счётчика в пределах всего адресного пространства. Команды пе рехода не влияют на биты состояния. Краткое описание всех восьми команд пе рехода приведено в Табл. 4.6.
15 |
13 |
12 |
10 |
9 |
8 |
0 |
Код операции |
Условие |
|
S |
|
10 битное смещение со знаком |
|
|
|
|
|
|
|
|
|
|
Рис. 4.24. Формат команд перехода. |
|
Таблица 4.6. Команды перехода |
|||
|
|
|
|
Мнемоника |
S reg, D reg |
|
Операция |
|
|
|
|
JEQ/JZ |
Метка |
|
Переход к метке, если бит нуля (Z) установлен |
|
|
|
|
JNE/JNZ |
Метка |
|
Переход к метке, если бит нуля (Z) сброшен |
|
|
|
|
JC |
Метка |
|
Переход к метке, если бит переноса (C) установлен |
|
|
|
|
JNC |
Метка |
|
Переход к метке, если бит переноса (C) сброшен |
|
|
|
|
JN |
Метка |
|
Переход к метке, если бит отрицательного значения (N) установлен |
|
|
|
|
JGE |
Метка |
|
Переход к метке, если (N .XOR. V) = 0 |
|
|
|
|
JL |
Метка |
|
Переход к метке, если (N .XOR. V) = 1 |
|
|
|
|
JMP |
Метка |
|
Безусловный переход к метке |
|
|
|
|
Эмулируемые команды
Эмулируемые команды — это команды, которые облегчают создание и чтение кода, но не имеют собственных кодов операций. Ассемблер автоматически заме
124 Глава 4. 16#битное RISC ЦПУ MSP430X
няет такие команды эквивалентными командами ядра. Использование эмулируе мых команд не приводит к увеличению размера кода или снижению производи тельности. Полный список эмулируемых команд приведён в Табл. 4.7.
Таблица 4.7. Эмулируемые команды
Команда |
Описание |
Эмуляция |
V |
N |
Z |
C |
||
|
|
|
|
|
|
|
|
|
ADC(.B) |
dst |
Сложение бита переноса с операндом |
ADDC(.B) |
#0,dst |
* |
* |
* |
* |
|
|
|
|
|
|
|
|
|
BR |
dst |
Переход по заданному адресу |
MOV |
dst,PC |
– |
– |
– |
– |
|
|
|
|
|
|
|
|
|
CLR(.B) |
dst |
Очистка операнда |
MOV(.B) |
#0,dst |
– |
– |
– |
– |
|
|
|
|
|
|
|
|
|
CLRC |
|
Очистка бита переноса |
BIC |
#1,SR |
– |
– |
– |
0 |
|
|
|
|
|
|
|
|
|
CLRN |
|
Очистка бита отрицательного значения |
BIC |
#4,SR |
– |
0 |
– |
– |
|
|
|
|
|
|
|
|
|
CLRZ |
|
Очистка бита нуля |
BIC |
#2,SR |
– |
– |
0 |
– |
|
|
|
|
|
|
|
|
|
DADC(.B) |
dst |
Сложение переноса с операндом |
DADD(.B) |
#0,dst |
* |
* |
* |
* |
|
|
(BCD арифметика) |
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DEC(.B) |
dst |
Декрементирование операнда |
SUB(.B) |
#1,dst |
* |
* |
* |
* |
|
|
|
|
|
|
|
|
|
DECD(.B) |
dst |
Уменьшение операнда на 2 |
SUB(.B) |
#2,dst |
* |
* |
* |
* |
|
|
|
|
|
|
|
|
|
DINT |
|
Общее запрещение прерываний |
BIC |
#8,SR |
– |
– |
– |
– |
|
|
|
|
|
|
|
|
|
EINT |
|
Общее разрешение прерываний |
BIS |
#8,SR |
– |
– |
– |
– |
|
|
|
|
|
|
|
|
|
INC(.B) |
dst |
Инкрементирование операнда |
ADD(.B) |
#1,dst |
* |
* |
* |
* |
|
|
|
|
|
|
|
|
|
INCD(.B) |
dst |
Увеличение операнда на 2 |
ADD(.B) |
#2,dst |
* |
* |
* |
* |
|
|
|
|
|
|
|
|
|
INV(.B) |
dst |
Инвертирование операнда |
XOR(.B) |
#$1,dst |
* |
* |
* |
* |
|
|
|
|
|
|
|
|
|
NOP |
|
Нет операции |
MOV |
R3,R3 |
– |
– |
– |
– |
|
|
|
|
|
|
|
|
|
POP |
dst |
Извлечение операнда из стека |
MOV |
@SP+,dst |
– |
– |
– |
– |
|
|
|
|
|
|
|
|
|
RET |
|
Возврат из подпрограммы |
MOV |
@SP+,PC |
– |
– |
– |
– |
|
|
|
|
|
|
|
|
|
RLA(.B) |
dst |
Арифметический сдвиг влево |
ADD(.B) |
dst,dst |
* |
* |
* |
* |
|
|
|
|
|
|
|
|
|
RLC(.B) |
dst |
Сдвиг влево через перенос |
ADDC(.B) |
dst,dst |
* |
* |
* |
* |
|
|
|
|
|
|
|
|
|
SBC(.B) |
dst |
Вычитание заёма из операнда |
SUBC(.B) |
#0,dst |
* |
* |
* |
* |
|
|
|
|
|
|
|
|
|
SETC |
|
Установка бита переноса |
BIS |
#1,SR |
– |
– |
– |
1 |
|
|
|
|
|
|
|
|
|
SETN |
|
Установка бита отрицательного |
BIS |
#4,SR |
– |
1 |
– |
– |
|
|
значения |
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SETZ |
|
Установка бита нуля |
BIS |
#2,SR |
– |
– |
1 |
– |
|
|
|
|
|
|
|
|
|
TST(.B) |
dst |
Проверка операнда (на ноль) |
CMP(.B) |
#0,dst |
0 |
* |
* |
1 |
|
|
|
|
|
|
|
|
|
* Влияет на бит состояния
–Не влияет на бит состояния 0 Бит состояния сбрасывается
1 Бит состояния устанавливается
Время выполнения и размер команд MSP430
Число тактов ЦПУ, требующееся для выполнения той или иной команды, за висит от формата команды и от используемого режима адресации — но не от собственно инструкции. Приведённые далее цифры относятся к тактовому сиг налу MCLK.
4.5. Команды MSP430 и MSP430X 125
Сброс, подпрограммы и прерывания
Число тактов ЦПУ, требуемое для обслуживания сброса, прерываний и под программ, указано в Табл. 4.8.
Таблица 4.8. Обслуживание сброса, прерываний и подпрограмм
|
|
|
Действие |
Число тактов |
Длина команды |
|
|
|
|||
Возврат из прерывания (RETI) |
3* |
1 |
|||
Возврат из подпрограммы (RET) |
3 |
1 |
|||
|
|
|
|||
Принятие прерывания (число тактов между появлением за |
5** |
– |
|||
проса и выполнением 1 й команды обработчика) |
|
|
|||
Сброс от сторожевого таймера |
4 |
– |
|||
|
|
|
|
||
Аппаратный сброс |
|
|
4 |
– |
|
(RST/NMI) |
|||||
|
|
|
|
||
* |
В ЦПУ MSP430 — 5. |
|
|
||
** |
В ЦПУ MSP430 — 6. |
|
|
||
|
|
|
|
|
|
Время выполнения и длина команд формата II (с одним операндом)
Длина команд MSP430 формата II и время их выполнения для всех возмож ных режимов адресации приведены в Табл. 4.9.
Таблица 4.9. Время выполнения и длина команд MSP430 формата II
Режим |
Количество тактов |
|
Длина |
Пример |
||
|
|
|
||||
адресации |
RRA, RRC, SWPB, SXT |
PUSH |
CALL |
команды |
||
|
||||||
|
|
|
Rn |
1 |
3 |
3* |
1 |
SWPB |
R5 |
@Rn |
3 |
3* |
4 |
1 |
RRC |
@R9 |
@Rn+ |
3 |
3* |
4** |
1 |
SWPB |
@R10+ |
#N |
Не применимо |
3* |
4** |
2 |
CALL |
#LABEL |
X(Rn) |
4 |
4** |
4** |
2 |
CALL |
2(R7) |
EDE |
4 |
4** |
4** |
2 |
PUSH |
EDE |
&EDE |
4 |
4** |
4** |
2 |
SXT |
&EDE |
* В ЦПУ MSP430 — 4.
**В ЦПУ MSP430 — 5. Также время выполнения равно 5 тактам для индексного режима адресации, если Rn = SP.
Время выполнения и длина команд формата III (команды перехода)
Все команды перехода занимают одно слово в памяти и выполняются за два такта, независимо от того, был или не был выполнен переход.
Время выполнения и длина команд формата I (с двумя операндами)
Длина команд MSP430 формата I и время их выполнения для всех возможных режимов адресации приведены в Табл. 4.10.
126 Глава 4. 16#битное RISC ЦПУ MSP430X
Таблица 4.10. Время выполнения и длина команд MSP430 формата I
Режим адресации |
Число тактов |
Длина команды |
|
Пример |
|
|
|
|
|||
Источник |
Приёмник |
|
|||
|
|
|
|
||
|
|
|
|
|
|
Rn |
Rm |
1 |
1 |
MOV |
R5,R8 |
|
|
|
|
|
|
|
PC |
2 |
1 |
BR |
R9 |
|
|
|
|
|
|
|
x(Rm) |
4* |
2 |
ADD |
R5,4(R6) |
|
EDE |
4* |
2 |
XOR |
R8,EDE |
|
&EDE |
4* |
2 |
MOV |
R5,&EDE |
@Rn |
Rm |
2 |
1 |
AND |
@R4,R5 |
|
PC |
2 |
1 |
BR |
@R8 |
|
x(Rm) |
5* |
2 |
XOR |
@R5,8(R6) |
|
EDE |
5* |
2 |
MOV |
@R5,EDE |
|
&EDE |
5* |
2 |
XOR |
@R5,&EDE |
@Rn+ |
Rm |
2 |
1 |
ADD |
@R5+,R6 |
|
|
|
|
|
|
|
PC |
3 |
1 |
BR |
@R9+ |
|
x(Rm) |
5* |
2 |
XOR |
@R5+,8(R6) |
|
EDE |
5* |
2 |
MOV |
@R9+,EDE |
|
&EDE |
5* |
2 |
MOV |
@R9+,&EDE |
#N |
Rm |
2 |
2 |
MOV |
#20,R9 |
|
|
|
|
|
|
|
PC |
3 |
2 |
BR |
#2AEh |
|
|
|
|
|
|
|
x(Rm) |
5* |
3 |
MOV |
#0300h,0(SP) |
|
EDE |
5* |
3 |
ADD |
#33,EDE |
|
&EDE |
5* |
3 |
ADD |
#33,&EDE |
x(Rn) |
Rm |
3 |
2 |
MOV |
2(R5),R7 |
|
PC |
3 |
2 |
BR |
2(R6) |
|
TONI |
6* |
3 |
MOV |
4(R7),TONI |
|
x(Rm) |
6* |
3 |
ADD |
4(R4),6(R9) |
|
&TONI |
6* |
3 |
MOV |
2(R4),&TONI |
EDE |
Rm |
3 |
2 |
AND |
EDE,R6 |
|
|
|
|
|
|
|
PC |
3 |
2 |
BR |
EDE |
|
TONI |
6* |
3 |
CMP |
EDE,TONI |
|
x(Rm) |
6* |
3 |
MOV |
EDE,0(SP) |
|
&TONI |
6* |
3 |
MOV |
EDE,&TONI |
&EDE |
Rm |
3 |
2 |
MOV |
&EDE,R8 |
|
|
|
|
|
|
|
PC |
3 |
2 |
BR |
&EDE |
|
|
|
|
|
|
|
TONI |
6* |
3 |
MOV |
&EDE,TONI |
|
x(Rm) |
6* |
3 |
MOV |
&EDE,0(SP) |
|
&TONI |
6* |
3 |
MOV |
&EDE,&TONI |
* Для команд MOV, BIT и CMP требуется на один такт меньше.
4.5.2. Команды MSP430X
Расширенный набор команд MSP430X позволяет ЦПУ MSP430X в полной мере использовать доступное адресное пространство, определяемое 20 битной шиной адреса. Большинство команд MSP430X требуют ещё одного слова для хра нения кода команды, так называемого слова расширения. Некоторым из команд расширенного набора дополнительного слова не требуется — это будет отдельно указано в описании таких команд. Все адреса, смещения и непосредственные значения, которым предшествует слово расширения, являются 20 битными.
4.5. Команды MSP430 и MSP430X 127
Предусмотрены слова расширения двух типов:
для регистрового режима адресации в командах формата II (оба операнда) и формата I;
для всех остальных сочетаний режимов адресации.
Слово расширения для регистрового режима адресации
Формат слова расширения для регистрового режима адресации приведён на Рис. 4.25, а назначение отдельных его битов описано в Табл. 4.11. Пример коман ды, использующей слово расширения такого формата, показан далее на Рис. 4.27.
15 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
0 |
0001 |
|
1 |
|
00 |
ZC |
# |
A/L |
0 |
0 |
|
(n – 1)/Rn |
|
|
|
|
|
|
|
|
|
|
|
|
Рис. 4.25. Слово расширения для регистрового режима адресации.
Таблица 4.11. Биты слова расширения для регистрового режима адресации
Бит |
|
|
Описание |
|
|
||
15:11 |
Код операции слова расширения. Для слова расширения зарезервированы значения с 1800h |
||
|
до 1FFFh |
|
|
10:9 |
Зарезервировано |
|
|
|
|
|
|
ZC |
Нулевой бит переноса: |
|
|
|
0 — исполняемая команда использует текущее значение бита переноса C. |
||
|
1 — исполняемая команда использует бит переноса, как если бы он был сброшен. Новое значение |
||
|
бита переноса будет определяться результатом последней операции после выполнения команды. |
||
|
|
|
|
# |
Бит повтора: |
|
|
|
0 — число повторений команды задаётся битами 3:0 слова расширения. |
||
|
1 — число повторений команды определяется значением четырёх младших битов Rn. |
||
|
См. описание битов 3:0. |
|
|
A/L |
Бит разрядности данных. Вместе с битом B/W команды MSP430 определяет размер данных, |
||
|
используемых в команде: |
|
|
|
A/L |
B/W |
Размер |
|
0 |
0 |
Зарезервировано |
|
0 |
1 |
20 битные значения |
|
1 |
0 |
16 битные значения |
|
1 |
1 |
8 битные значения |
5:4 |
Зарезервировано |
|
|
|
|
|
|
3:0 |
Число повторений: |
|
|
|
# = 0 — эти биты определяют число повторений n (в битах содержится значение n – 1) |
||
|
# = 1 — эти биты определяют регистр ЦПУ, биты 3:0 которого содержат число повторов. |
||
|
В битах Rn.3:0 содержится значение n – 1. |
Слово расширения для других режимов адресации
Формат слова расширения для остальных режимов адресации приведён на Рис. 4.26, а назначение отдельных битов описано в Табл. 4.12. Пример команды, использующей слово расширения такого формата, показан на Рис. 4.28.
15 |
|
|
12 |
11 |
10 |
7 |
6 |
5 |
4 |
3 |
0 |
0 |
0 |
0 |
1 |
1 |
Биты 19:16 источника |
A/L |
0 |
0 |
Биты 19:16 приёмника |
||
|
|
|
|
|
|
|
|
|
|
|
|
Рис. 4.26. Слово расширения для режимов адресации, отличных от регистрового.
128 Глава 4. 16#битное RISC ЦПУ MSP430X
Таблица 4.12. Биты слова расширения для режимов адресации, отличных от регистрового
Бит |
|
|
Описание |
|
|
||
15:11 |
Код операции слова расширения. Для слова расширения зарезервированы значения |
||
|
с 1800h до 1FFFh |
|
|
|
|
||
Биты 19:16 |
Старшие 4 бита 20 битного значения источника. В зависимости от режима адресации |
||
источника |
операнда источника в этих битах может содержаться 4 старших бита непосредственно |
||
|
го значения, смещения или абсолютного адреса |
||
|
|
||
A/L |
Бит разрядности данных. Вместе с битом B/W команды MSP430 определяет размер дан |
||
|
ных, используемых в команде: |
|
|
|
A/L |
B/W |
Размер |
|
0 |
0 |
Зарезервировано |
|
0 |
1 |
20 битные значения |
|
1 |
0 |
16 битные значения |
|
1 |
1 |
8 битные значения |
|
|
|
|
5:4 |
Зарезервировано |
|
|
|
|
||
Биты 19:16 |
Старшие 4 бита 20 битного значения приёмника. В зависимости от режима адресации |
||
приёмника |
операнда приёмника в этих битах может содержаться 4 старших бита смещения или аб |
||
|
солютного адреса |
|
|
|
|
|
|
Примечание. Значения битов B/W и A/L для команд SWPBX и SXTX
Для команд SWPBX и SXTX используются следующие установки битов B/W и A/L:
A/L |
B/W |
|
0 |
0 |
SWPBX.A, SXTX.A |
0 |
1 |
неприменимо |
1 |
0 |
SWPBX.W, SXTX.W |
11 неприменимо
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
0 |
0 |
0 |
1 |
1 |
|
00 |
|
ZC |
# |
A/L |
Rsvd |
|
(n – 1)/Rn |
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
Код операции |
|
Rsrc |
|
|
Ad |
B/W |
|
As |
|
|
Rdst |
|
|||
XORX.A |
R9,R8 |
|
|
|
|
1: Число повторений |
|
|
|
|
|
вбитах 3:0
0:Использовать
|
|
|
|
|
|
бит переноса |
|
|
01: 20 битные данные |
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
0 |
0 |
1 |
1 |
|
0 |
|
0 |
0 |
|
0 |
0 |
|
0 |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
14(XOR) |
|
|
9 |
|
|
|
0 |
|
1 |
0 |
|
8(R8) |
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
Команда XORX |
|
|
Источник R9 |
|
|
|
|
|
|
|
|
|
Приёмник R8 |
||||
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
Регистровый режим |
Регистровый режим |
||||||||||
|
|
|
|
|
|
адресации приёмника |
адресации источника |
Рис. 4.27. Пример расширенной команды, использующей регистровый режим адресации.
4.5. Команды MSP430 и MSP430X 129
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
|
6 |
5 |
4 |
3 |
2 |
1 |
0 |
0 |
0 |
0 |
1 |
1 |
|
Источник 19:16 |
|
A/L |
|
Rsvd |
Приёмник 19:16 |
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
Код операции |
|
Rsrc |
|
Ad |
|
B/W |
|
As |
|
|
Rdst |
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Источник 15:0 |
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
Приёмник 15:0 |
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
XORX.A |
#12345h, 45678h(R15) |
|
X(Rn) |
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
01: 20 битные |
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
@PC+ |
|
|
||||
|
|
|
|
|
|
|
|
|
|
слова |
|
|
|
|
||
18xx слово расширения |
|
12345h |
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
0 |
0 |
1 |
1 |
|
|
1 |
|
|
0 |
|
0 |
|
|
4 |
|
|
14 (XOR) |
|
|
0 (PC) |
|
1 |
|
1 |
|
3 |
|
15 (R15) |
|
|||
|
|
|
Младшие биты непосредственного операнда: 2345h |
|
|
|
||||||||||
|
|
|
|
Младшие биты смещения приёмника: 5678h |
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Рис. 4.28. Пример расширенной команды, использующей непосредственный и индексный режимы адресации.
Расширенные команды с двумя операндами (формат I)
Все команды с двумя операндами имеют расширенные версии, перечислен ные в Табл. 4.13.
Таблица 4.13. Команды MSP430X с двумя операндами
Мнемоника |
Операнды |
Операция |
|
Биты состояния |
|
||
|
|
|
|
||||
V |
N |
Z |
C |
||||
|
|
|
MOVX(.B,.A) |
src,dst |
src dst |
– |
– |
– |
– |
|||
|
|
|
|
|
|
|
|||
ADDX(.B,.A) |
src,dst src + dst dst |
* |
* |
* |
* |
|
|||
|
|
|
|
|
|
|
|||
ADDCX(.B,.A) |
src,dst src + dst + C dst |
* |
* |
* |
* |
|
|||
|
|
|
|
|
|
|
|||
SUBX(.B,.A) |
src,dst dst + .not.src + 1 dst |
* |
* |
* |
* |
|
|||
|
|
|
|
|
|
|
|||
SUBCX(.B,.A) |
src,dst dst + .not.src + C dst |
* |
* |
* |
* |
|
|||
|
|
|
|
|
|
|
|
||
CMPX(.B,.A) |
src,dst |
dst – src |
* |
* |
* |
* |
|
||
|
|
|
|
|
|
|
|||
DADDX(.B,.A) |
src,dst src + dst + C dst (BCD арифметика) |
* |
* |
* |
* |
|
|||
|
|
|
|
|
|
|
|
|
|
BITX(.B,.A) |
src,dst |
src .and. dst |
0 |
* |
* |
|
|
|
|
|
z |
||||||||
|
|
|
|
|
|
||||
BICX(.B,.A) |
src,dst not.src .and. dst dst |
– |
– |
– |
– |
||||
|
|
|
|
|
|
||||
BISX(.B,.A) |
src,dst src .or. dst dst |
– |
– |
– |
– |
||||
|
|
|
|
|
|
|
|
|
|
XORX(.B,.A) |
src,dst src .xor. dst dst |
* |
* |
* |
|
|
|
|
|
|
|
z |
|||||||
|
|
|
|
|
|
|
|
|
|
ANDX(.B,.A) |
src,dst src .and. dst dst |
0 |
* |
* |
|
|
|
|
|
|
z |
* Влияет на бит состояния
–Не влияет на бит состояния 0 Бит состояния сбрасывается
1 Бит состояния устанавливается
Возможные форматы расширенных команд с двумя операндами показаны на
Рис. 4.29.
Если 20 битный адрес операнда источника или операнда приёмника распо ложен не в регистре ЦПУ, а в памяти, то для хранения этого адреса используется два слова, как показано на Рис. 4.30.
130 Глава 4. 16#битное RISC ЦПУ MSP430X
15 |
14 |
13 |
|
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
|
|
|
0 |
||||
0 |
|
0 |
0 |
|
1 |
1 |
0 |
|
0 |
ZC |
# |
A/L |
0 |
|
0 |
|
n – 1/Rn |
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Код операции |
|
|
src |
|
0 |
B/W |
0 |
|
0 |
|
|
dst |
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
|
0 |
0 |
|
1 |
1 |
|
|
src.19:16 |
|
A/L |
0 |
|
0 |
0 |
0 |
|
0 |
0 |
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Код операции |
|
|
|
src |
|
Ad |
B/W |
|
As |
|
|
dst |
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src.15:0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
0 |
|
0 |
0 |
|
1 |
1 |
0 |
|
0 |
0 |
0 |
A/L |
0 |
|
0 |
|
dst.19:16 |
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Код операции |
|
|
src |
|
Ad |
B/W |
|
As |
|
|
dst |
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
dst.15:0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
0 |
|
0 |
0 |
|
1 |
1 |
|
|
src.19:16 |
|
A/L |
0 |
|
0 |
|
dst.19:16 |
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
Код операции |
|
|
src |
|
Ad |
B/W |
|
As |
|
|
dst |
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src.15:0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
dst.15:0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Рис. 4.29. Форматы расширенных команд с двумя операндами.
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
Адрес + 2 |
0 ................................................................................ |
|
|
|
|
|
|
|
|
|
|
0 |
|
19:16 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
Адрес |
|
|
|
|
|
|
Биты 15:0 операнда |
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Рис. 4.30. Хранение 20 битных адресов в памяти.