MSP430_Final
.pdf4.3. Регистры ЦПУ 101
4.3.5. Регистры общего назначения R4…R15
Двенадцать регистров с R4 по R15 могут содержать 8 , 16 и 20 битные значе ния. При записи в регистр однобайтного значения сбрасываются биты 19:8 регис тра. При записи 2 байтного значения — сбрасываются биты 19:16 регистра. Единственным исключением является команда SXT, которая выполняет расши рение знака на все биты 20 битного регистра.
На следующих рисунках показано, каким образом осуществляется манипули рование 8 , 16 и 20 битными данными. Обратите внимание, что при использова нии регистра в качестве операнда приёмника команды, работающей с одно и двухбайтными операндами, неиспользуемые старшие биты регистра всегда сбра сываются.
На Рис. 4.10 показано оперирование 8 битными значениями (команды с суф фиксом .B). В первом примере операндом источником является регистр, а опе рандом приёмником — байт в памяти. Во втором примере изображена обратная ситуация.
Операция «регистр – байт» |
|
Операция «байт – регистр» |
||||||||||
Старший байт Младший байт |
|
Старший байт Младший байт |
||||||||||
19 16 15 |
8 7 |
0 |
|
|
|
|
|
|
|
|
||
Не исп. |
Не исп. |
|
|
|
Регистр |
|
|
|
|
|
|
Память |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
19 16 15 |
8 7 |
0 |
|
|||
|
|
|
|
|
Память |
|
|
|
|
|
Регистр |
|
|
|
|
|
|
Не исп. |
Не исп. |
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Операция |
|
|
|
|
Операция |
||||
|
|
|
|
|
|
|
|
|
|
|
Регистр |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Память |
|
0 |
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Рис. 4.10. Операции «регистр — память» и «память — регистр» с 8 битными данными.
На Рис. 4.11 и Рис. 4.12 показано оперирование 16 битными значениями (ко манды с суффиксом .W). На первом рисунке операндом источником является ре гистр, а операндом приёмником — слово в памяти. На втором рисунке изображе на обратная ситуация.
На Рис. 4.13 и Рис. 4.14 показано оперирование 20 битными значениями (ко манды с суффиксом .A). На первом рисунке операндом источником является ре гистр, а операндом приёмником — 20 битное значение в памяти. На втором ри сунке изображена обратная ситуация.
102 Глава 4. 16#битное RISC ЦПУ MSP430X
|
|
Операция «регистр – слово» |
|
|
|
|
Операция «слово – регистр» |
|||||||||||||||||
|
|
Старший байт Младший байт |
|
|
|
|
Старший байт |
|
Младший байт |
|||||||||||||||
19 |
16 15 |
8 7 |
0 |
Регистр |
|
|
|
|
|
|
|
|
|
|
|
|
Память |
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||
|
Не исп. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
19 |
16 15 |
8 |
|
7 |
0 |
Регистр |
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||
|
|
|
|
|
|
|
|
|
Память |
|
|
|
Не исп. |
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Операция |
|
|
|||
|
|
|
|
|
Операция |
|
|
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Регистр |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
Память |
|
|
|
0 |
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Рис. 4.11. Операция «регистр — память» |
|
|
Рис. 4.12. Операция «память — регистр» |
|||||||||||||||||||||
|
|
с 16 битными данными. |
|
|
|
|
|
с 16 битными данными. |
||||||||||||||||
|
|
|
|
|
|
|
Операция «регистр – 20Cбитное слово» |
|
|
|||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
Старший байт Младший байт |
|
|
||||||||||
|
|
|
|
|
|
|
19 |
16 15 |
|
8 7 |
|
0 |
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
Не исп. |
|
|
|
|
|
|
|
Регистр |
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Память +2 |
Не используется |
|
|
|
|
|
|
|
|
|
|
|
Память |
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Операция |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Память +2 |
0 |
|
|
|
|
|
Память |
|
|
|
|
|
|
|
|
Рис. 4.13. Операция «регистр — память» с 20 битными данными.
Операция «20Cбитное слово – регистр»
Старший байт Младший байт
19 16 15 |
8 7 |
0 |
|
||||||
Память +2 |
Не используется |
|
|
|
|
|
|
Память |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Регистр
Операция
Регистр
Рис. 4.14. Операция «память — регистр» с 20 битными данными.
4.4. Режимы адресации 103
4.4.Режимы адресации
ЦПУ MSP430X поддерживает семь режимов адресации для операндов источ ников и четыре режима — для операндов приёмников с использованием 16 или 20 битных адресов. Команды MSP430 и MSP430X могут применяться в пределах всего адресного пространства размером 1 МБ.
В Табл. 4.3 приводятся значения битов режима As (для операнда источника) и Ad (для операнда приёмника), соответствующие тому или иному режиму адреса ции.
Таблица 4.3. Режимы адресации операндов
As/Ad |
Режим адресации |
Синтаксис |
Описание |
|
|
|
|
00/0 |
Регистровый |
Rn |
Содержимое регистра является операндом |
|
|
|
|
01/1 |
Индексный |
X(Rn) |
(Rn + X) указывает на операнд. Значение X содержится |
|
|
|
в следующем слове |
|
|
|
|
01/1 |
Относительный |
ADDR |
(PC + X) указывает на операнд. Значение X содержится |
|
|
|
в следующем слове. Используется индексный режим ад |
|
|
|
ресации X(PC) |
|
|
|
|
01/1 |
Абсолютный |
&ADDR |
Слово, следующее за командой, содержит абсолютный |
|
|
|
адрес. Значение X содержится в следующем слове. Ис |
|
|
|
пользуется индексный режим адресации X(SR) |
|
|
|
|
10/— |
Косвенный регистровый |
@Rn |
Rn используется в качестве указателя на операнд. |
|
|
|
|
11/— |
Косвенный регистро |
@Rn+ |
Rn используется в качестве указателя на операнд. После |
|
вый с автоинкрементом |
|
выполнения операции значение регистра Rn увеличива |
|
|
|
ется на 1 для команд с суффиксом .B, на 2 для команд с |
|
|
|
суффиксом .W и на 4 для команд с суффиксом .A |
|
|
|
|
11/— |
Непосредственный |
#N |
Слово, следующее за командой, содержит значение |
|
|
|
константы N. Используется косвенный режим адреса |
|
|
|
ции с автоинкрементом @PC+ |
Более подробно эти режимы адресации рассматриваются в последующих раз делах. В большинстве примеров для источника и приёмника используется один и тот же режим адресации, однако в командах можно использовать любые допусти мые комбинации режимов адресации источника и приёмника.
Примечание. Использование меток EDE, TONI, TOM и LEO
В документации на семейство MSP430 аббревиатуры EDE, TONI, TOM и LEO ис пользуются в качестве обычных меток. Они не имеют никакого специального зна чения.
104 Глава 4. 16#битное RISC ЦПУ MSP430X
4.4.1. Регистровый режим
Операция: |
Операндом является 8 , 16 или 20 битное содержимое указан |
|
ного регистра ЦПУ. |
Длина: |
Одно, два или три слова. |
Комментарий: |
Допускается для источника и приёмника. |
Операция |
При однобайтной операции из регистра источника Rsrc считы |
с байтами: |
вается только 8 младших битов, а результат операции помеща |
|
ется в 8 младших битов регистра приёмника Rdst. Биты 19:8 ре |
|
гистра Rdst сбрасываются. Регистр Rsrc не изменяется. |
Операция |
При двухбайтной операции из регистра источника Rsrc считы |
с двухбайтными |
вается только 16 младших битов, а результат операции помеща |
словами: |
ется в 16 младших битов регистра приёмника Rdst. Биты 19:16 |
|
регистра Rdst сбрасываются. Регистр Rsrc не изменяется. |
Операция |
При операции с 20 битными словами из регистра источника |
с 20 битными |
Rsrc считываются все 20 бит, а результат операции помещается |
словами: |
в регистр приёмник Rdst. Регистр Rsrc не изменяется. |
Команда SXT: |
Команда SXT является единственным исключением — знак |
|
младшего байта, находящийся в 7 м бите регистра, копируется |
|
и в биты 19:8 регистра Rdst. |
Пример 1
BIS.W R5,R6
Эта команда выполняет операцию «Логическое ИЛИ» между 16 битным зна чением, находящемся в регистре R5, и 16 битным содержимым регистра R6. Би ты 19:16 регистра R6 сбрасываются.
|
До операции |
|
После операции |
|||||||
|
Адресное |
|
Регистры |
|
Адресное |
|
|
Регистры |
||
пространство |
|
|
|
пространство |
|
|
||||
21036h |
|
|
|
|
|
21036h |
|
PC |
|
|
|
|
|
|
|
|
|
|
|||
xxxxh |
|
R5 |
|
AA550h |
xxxxh |
R5 |
AA550h |
|||
|
|
|
|
|
|
|
|
|
|
|
21034h |
D506h |
PC |
R6 |
|
11111h |
21034h |
D506h |
|
R6 |
0B551h |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
A550h.or.1111h = B551h
Пример 2
BISX.A R5,R6
Эта команда выполняет операцию «Логическое ИЛИ» между 20 битным значением, находящемся в регистре R5, и 20 битным значением, находящемся в регистре R6.
Слово расширения содержит бит A/L для поддержки 20 битных данных. Сло во команды соответствует однобайтной операции, при этом биты A/L:B/W = 01. Результат выполнения команды будет следующим:
4.4. Режимы адресации 105
|
До операции |
|
После операции |
|||||||
|
Адресное |
|
Регистры |
|
Адресное |
|
Регистры |
|||
пространство |
|
|
пространство |
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
21036h |
xxxxh |
|
R5 |
|
AA550h |
21036h |
xxxxh |
PC |
R5 |
AA550h |
|
|
|
|
|
|
|
|
|
|
|
21034h |
D546h |
|
R6 |
|
11111h |
21034h |
D546h |
|
R6 |
BB551h |
|
|
|
|
|
|
|
|
|
|
|
21032h |
1800h |
|
PC |
|
|
21032h |
1800h |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
AA550h.or.11111h = BB551h
4.4.2. Индексный режим адресации
При использовании индексного режима адрес операнда вычисляется как сум ма смещения (число со знаком) и содержимого регистра ЦПУ. Существует три разновидности индексного режима:
индексный режим при адресации нижней области памяти объёмом 64 КБ;
индексный режим при адресации командами MSP430 памяти за пределами нижней 64 КБ области;
индексный режим в командах MSP430X.
Индексный режим адресации нижней 64CКБ области памяти
Если регистр ЦПУ Rn указывает на адрес в нижней 64 КБ области памяти, то биты 19:16 итогового адреса сбрасываются после сложения содержимого регистра ЦПУ с индексом, представляющим собой 16 битное число со знаком. Это озна чает, что итоговый адрес всегда будет находиться в пределах нижней 64 КБ об ласти, не выходя за её границы. Данный режим адресации позволяет обращаться к ОЗУ и периферийным устройствам микроконтроллера, а также использовать без всякой модификации существующее ПО, написанное для ЦПУ MSP430 (Рис. 4.15).
|
Нижние 64 КБ |
|
|
|
|
Rn.19:16 = 0 |
19 16 15 |
0 |
|
FFFFF |
|
|
||
|
|
|
Регистр ЦПУ |
|
|
|
0 |
|
|
|
|
|
Rn |
|
|
|
|
|
|
|
|
S Смещение (в байтах) |
16 битный индекс |
|
|
|
|
|
со знаком |
10000 |
|
|
|
|
0FFFF |
КБ |
|
|
|
|
16 битное сложение |
|
||
Rn.19:0 |
64 |
|
|
|
Нижние |
|
|
|
|
|
0 |
|
Адрес в памяти |
|
|
|
|
||
00000 |
|
|
|
|
Рис. 4.15. Индексный режим адресации в нижней 64 КБ области памяти.
106 Глава 4. 16#битное RISC ЦПУ MSP430X
Длина: |
Два или три слова. |
Операция: |
Индекс (смещение), представляющий собой 16 битное число со |
|
знаком и находящийся в следующем после команды слове, при |
|
бавляется к содержимому регистра ЦПУ Rn. Биты 19:16 результа |
|
та обнуляются, формируя 16 битный адрес из диапазона |
|
00000h…0FFFFh. Операндом является содержимое ячейки памя |
|
ти по данному адресу. |
Коммента |
Допускается для источника и приёмника. Ассемблер автомати |
рий: |
чески вычисляет смещение и вставляет его в итоговый код. |
Пример
ADD.B 1000h(R5),0F000h(R6)
Эта команда выполняет сложение 8 битного значения операнда источника, расположенного по адресу 1000h(R5), с содержимым операнда приёмника, рас положенного по адресу 0F000h(R6). Результат сложения сохраняется в операнде приёмнике. Оба операнда расположены в нижней 64 КБ области памяти, пос кольку биты 19:16 регистров R5 и R6 сброшены.
Источник: |
Байт с адресом R5 + 1000h, равным 0479Ch + 1000h = 0579Ch (пос |
||||||||||||||
|
|
ле усечения до 16 битного значения). |
|
|
|
|
|
|
|
||||||
Приёмник: |
Байт с адресом R6 + F000h, равным 01778h + F000h = 00778h (пос |
||||||||||||||
|
|
ле усечения до 16 битного значения). |
|
|
|
|
|
|
|
||||||
|
|
До операции |
|
|
После операции |
|
|
||||||||
|
Адресное |
|
|
Регистры |
|
|
Адресное |
|
|
Регистры |
|||||
пространство |
|
|
|
|
пространство |
|
|
|
|
|
|||||
1103Ah |
|
|
|
|
|
|
1103Ah |
|
PC |
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
xxxxh |
|
R5 |
0479Ch |
|
xxxxh |
R5 |
0479Ch |
|
|||||||
|
|
|
|
|
|
|
11038h |
|
|
|
|
|
|
||
11038h |
F000h |
|
R6 |
01778h |
|
F000h |
|
R6 |
01778h |
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
11036h |
1000h |
|
|
|
|
|
11036h |
1000h |
|
|
|
|
|
|
|
11034h |
55D6h |
|
PC |
|
|
11034h |
55D6h |
|
|
|
|
|
|
||
|
|
|
|
|
|
01778h |
|
|
|
|
|
|
32h |
src |
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
||||
0077Ah |
xxxxh |
|
|
|
|
0077Ah |
xxxxh |
|
|
|
|||||
|
|
|
+F000h |
|
|
|
+45h |
dst |
|||||||
|
|
|
|
|
|
00778h |
|
|
|
|
|
|
77h |
Sum |
|
00778h |
xx45h |
|
|
|
|
00778h |
xx77h |
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0479Ch |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0579Eh |
xxxxh |
|
+1000h |
0579Eh |
xxxxh |
|
|
|
0579Ch |
|
|
0579Ch |
xx32h |
|
0579Ch |
xx32h |
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
4.4. Режимы адресации 107
Команды MSP430 и индексный режим адресации верхней области памяти
Если регистр ЦПУ Rn указывает на адрес, расположенный за пределами ниж ней 64 КБ области памяти, то для вычисления адреса операнда используются биты 19:16 регистра. Таким образом, операнд может быть расположен в диапазоне адре сов Rn ±32 КБ, поскольку индекс X является 16 битным числом со знаком. При этом итоговый адрес может выйти за пределы адресного пространства ЦПУ и в ре зультате отобразиться на нижнюю 64 КБ область памяти (см. Рис. 4.16 и Рис. 4.17).
Верхняя область памяти Rn.19:16 > 0
19 |
16 15 |
0 |
FFFFF
|
1 ... 15 |
|
Rn.19:0 |
Rn ±32 КБ |
|
|
S |
S Смещение (в байтах) |
10000 |
|
|
0FFFF |
KБ |
|
|
20 битное сложение |
|
00000 |
Нижние 64 |
|
|
|
Регистр ЦПУ Rn
16 битный индекс со знаком (знак расширяется до 20 бит)
Адрес в памяти
Рис. 4.16. Индексный режим адресации верхней области памяти.
FFFFF |
|
|
Rn.19:0 |
KБ |
|
±32 |
||
|
||
10000 |
|
|
0,FFFF |
64 KБ |
|
Rn.19:0 |
||
Нижние |
||
0000C |
Rn.19:0 |
|
Rn.19:0 |
KБ |
|
±32 |
Рис. 4.17. Выход за границы адресного пространства при индексном режиме адресации.
108 Глава 4. 16#битное RISC ЦПУ MSP430X
Длина: |
Два или три слова. |
Операция: |
Индекс (смещение), представляющий собой 16 битное число со |
|
знаком и находящийся в следующем после команды слове, при |
|
бавляется к 20 битному содержимому регистра ЦПУ Rn. В ре |
|
зультате формируется 20 битный адрес из диапазона 0…FFFFFh. |
|
Операндом является содержимое ячейки памяти по данному ад |
|
ресу. |
Комментарий: Допускается для источника и приёмника. Ассемблер автомати чески вычисляет смещение и вставляет его в итоговый код.
Пример
ADD.W 8346h(R5),2100h(R6)
Эта команда выполняет сложение 16 битных значений операнда источника и операнда приёмника, расположенных по адресам, указанным в команде. 16 бит ный результат сложения сохраняется в операнде приёмнике. Оба операнда могут быть расположены по любому адресу из допустимого диапазона.
Источник: Слово с адресом R5 + 8346h. Отрицательное 16 битное смещение 8346h преобразуется к 20 битному значению, в результате чего ад рес операнда получается равным 23456h + F8346h = 1B79Ch.
Приёмник: Слово с адресом R6 + 2100h, равным 15678h + 2100h = 17778h.
|
До операции |
|
После операции |
||||||
|
Адресное |
|
Регистры |
|
Адресное |
|
Регистры |
||
пространство |
|
|
пространство |
|
|
||||
1103Ah |
|
|
|
|
1103Ah |
|
PC |
|
|
|
|
|
|
|
|
|
|||
xxxxh |
R5 |
23456h |
|
xxxxh |
R5 |
23456h |
|||
|
|
|
|
|
|
|
|
|
|
11038h |
2100h |
R6 |
15678h |
|
11038h |
2100h |
|
R6 |
15678h |
|
|
|
|
|
|
|
|
|
|
11036h |
8346h |
|
|
|
11036h |
8346h |
|
|
|
11034h |
5596h |
PC |
|
|
11034h |
5596h |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
15678h |
|
|
|
05432h |
src |
|
|
|
|
|
|
|||
1777Ah |
xxxxh |
|
1777Ah |
xxxxh |
||||
|
+02100h |
|
+02345h |
dst |
||||
|
|
|
17778h |
|
|
|
07777h |
Sum |
17778h |
2345h |
|
17778h |
7777h |
||||
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
23456h |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1B79Eh |
xxxxh |
|
+F8346h |
1B79Eh |
xxxxh |
|
|
|
1B79Ch |
|
|
1B79Ch |
5432h |
|
1B79Ch |
5432h |
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Рис. 4.18. Пример использования индексного режима адресации.
4.4. Режимы адресации 109
Команды MSP430X и индексный режим адресации
При использовании индексного режима адресации с командами MSP430X, операнды могут быть расположены по любому адресу в диапазоне Rn ± 19 бит.
Длина: |
Три или четыре слова. |
Операция: Адрес операнда вычисляется как сумма 20 битного содержимого регистра ЦПУ и 20 битного индекса. Четыре старших бита индекса хранятся в слове расширения, а остальные 16 битов — в слове, рас положенном после команды. Содержимое регистра не изменяется.
Коммента Допускается для источника и приёмника. Ассемблер автоматичес рий: ки вычисляет смещение и вставляет его в итоговый код.
Пример
ADDX.A 12346h(R5),32100h(R6)
Эта команда выполняет сложение 20 битных значений операнда источника и операнда приёмника, расположенных по адресам, указанным в команде. Резуль тат сложения сохраняется в операнде приёмнике.
Источник: Два слова, первое из которых расположено по адресу R5 + 12346h. То есть адрес операнда равен 23456h + 12346h = 3579Ch.
Приёмник: Два слова, первое из которых расположено по адресу R6 + 32100h. То есть адрес операнда равен 45678h + 32100h = 77778h.
Вслове расширения содержатся старшие биты значений смещения источника
иприёмника и бит A/L, определяющий разрядность данных. Поскольку исполь зуются 20 битные значения, слово команды соответствует однобайтной опера ции, при этом биты A/L:B/W = 01.
|
|
До операции |
|
После операции |
|
|
|||||||||
|
|
Адресное |
|
|
Регистры |
|
Адресное |
|
Регистры |
||||||
пространство |
|
|
пространство |
|
|
|
|
||||||||
2103Ah |
|
|
|
|
|
|
|
|
2103Ah |
|
|
|
|
|
|
|
|
|
|
|
|
|
PC |
|
|
|
|||||
xxxxh |
|
|
R5 |
23456h |
xxxxh |
R5 |
23456h |
|
|||||||
21038h |
2100h |
|
R6 |
45678h |
21038h |
2100h |
|
R6 |
45678h |
|
|||||
21036h |
2346h |
|
|
|
|
|
21036h |
2346h |
|
|
|
|
|
||
21034h |
55D6h |
|
|
|
|
|
21034h |
55D6h |
|
|
|
|
|
||
21032h |
1883h |
|
PC |
|
|
21032h |
1883h |
|
|
|
|
|
|||
|
|
|
|
|
|
|
45678h |
|
|
|
65432h |
src |
|||
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
||||||
7777Ah |
0001h |
|
|
|
|
7777Ah |
0007h |
|
|||||||
|
|
|
+32100h |
|
|
+12345h |
dst |
||||||||
77778h |
2345h |
|
|
|
|
77778h |
7777h |
|
|||||||
|
|
|
77778h |
|
77777h |
Sum |
|||||||||
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3579Eh |
0006h |
|
|
|
23456h |
3579Eh |
0006h |
|
|
|
|
|
|||
3579Ch |
5432h |
|
|
|
+12346h |
|
3579Ch |
5432h |
|
|
|
|
|
||
|
|
|
|
|
|
|
3579Ch |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
110 Глава 4. 16#битное RISC ЦПУ MSP430X
4.4.3. Относительный режим адресации
При использовании относительного режима адрес операнда вычисляется как сумма смещения (число со знаком) и текущего значения счётчика команд. Су ществует три разновидности относительного режима:
относительный режим при адресации нижней области памяти объёмом 64 КБ;
относительный режим при адресации командами MSP430 памяти за преде лами нижней 64 КБ области;
относительный режим в командах MSP430X.
Относительный режим адресации в нижней 64CКБ области памяти
Если счётчик команд PC указывает на адрес в нижней 64 КБ области памяти, то биты 19:16 итогового адреса сбрасываются после сложения содержимого PC с индексом, представляющим собой 16 битное число со знаком. Это означает, что итоговый адрес всегда будет находиться в пределах нижней 64 КБ области, не вы ходя за её границы. Данный режим адресации позволяет обращаться к ОЗУ и пе риферийным устройствам микроконтроллера, а также использовать без всякой модификации существующее ПО, написанное для ЦПУ MSP430 (Рис. 4.19).
Операция: |
Индекс (смещение), представляющий собой 16 битное число со |
|
знаком и находящийся в следующем после команды слове, при |
|
бавляется к текущему значению счётчика команд PC. Биты 19:16 |
|
результата обнуляются, формируя 16 битный адрес из диапазо |
|
на 00000h…0FFFFh. Операндом является содержимое ячейки |
|
памяти по данному адресу. |
Длина: |
Два или три слова. |
Комментарий: Допускается для источника и приёмника. Ассемблер автомати чески вычисляет смещение и вставляет его в итоговый код.
Пример
ADD.B EDE,TONI
Эта команда выполняет сложение 8 битного значения операнда источника EDE с содержимым операнда приёмника TONI. Результат сложения сохраняется в операнде приёмнике. Оба операнда расположены в нижней 64 КБ области памяти.
Источник: |
Для адресации байта EDE, расположенного по адресу 0579Ch, ис |
|
пользуется выражение PC + 04766h. Значение смещения опреде |
|
ляется выражением 0579Ch – 01036h = 04766h, где 01036h — ад |
|
рес, по которому хранится смещение в данном примере. |
Приёмник: |
Для адресации байта TONI, расположенного по адресу 00778h, ис |
|
пользуется выражение PC + F740h. Значение смещения определя |
|
ется выражением 00778h – 01038h = FF740h (усечено до 16 бит), |
|
где 01038h — адрес, по которому хранится смещение в данном |
|
примере. |