Файл: Семейство микроконтроллеров MSP430X1XX, руководство пользователя (2004).pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 16.06.2025
Просмотров: 2784
Скачиваний: 1
Раздел III. |
16-разрядное RISC CPU |
3.2.4. Регистры генератора констант CG1 и CG2
Шесть обычно используемых констант генерируются с помощью регистров R2 и R3 генератора констант, что исключает необходимость использования дополнительного 16-разрядного слова в программном коде. Константы выбираются путем изменения режима адресации (As) регистра-источника, в соответствии с таблицей 3.2.
Таблица 3.2. Значения генераторов констант CG1, CG2
Регистр |
As |
Константа |
Комментарий |
R2 |
00 |
- - - - - |
Регистровый режим |
R2 |
01 |
(0) |
Режим абсолютной (безусловной) адресации |
R2 |
10 |
00004h |
+4, побитовая обработка |
R2 |
11 |
00008h |
+8, побитовая обработка |
R3 |
00 |
00000h |
0, обработка по словам |
R3 |
01 |
00001h |
+1 |
R3 |
10 |
00002h |
+2, побитовая обработка |
R3 |
11 |
0FFFFh |
-1, обработка по словам |
Генератор констант обладает следующими преимуществами:
•Не требуются особые команды
•Код не содержит дополнительного слова для шести констант
•Не требуется код (команда) доступа к памяти для получения константы Ассемблер автоматически использует генератор констант, если одна из
шести констант используется как непосредственный исходный операнд. При использовании регистров R2 и R3 в режиме генерации констант, адресация к ним не может быть явной – они действуют только как регистры-источники.
Генератор команд – расширенная система команд
Набор RISС-команд семейства MSP430 состоит только из 27 команд. Однако, генератор констант позволяет поддерживать MSP430-ассемблеру 24 дополнительные эмулированные команды. К примеру, команда с одним операндом:
CLR dst
эмулируется командой с двумя операндами такой же длины:
MOV R3,dst
где #0 замещается ассемблером, а R3 используется в режиме As=00 Команда INC dst замещается командой ADD 0(R3),dst
Библиотека Компэла |
43 |
|
MSP430x1xxFamily
3.2.5. Регистры общего назначения R4-R15
Двенадцать регистров с R4 по R15 являются регистрами общего назначения. Все эти регистры могут быть использованы в качестве регистров данных, указателей адресов или индексных значений и доступны с помощью команд работы с байтами или словами, как показано на рис. 3.7.
Рис. 3-7. Операции регистр-байт/байт-регистр
Пример операции регистр-байт |
Пример операции байт-регистр |
||||
R5=0A28Fh |
R5=01202Fh |
||||
R6=0203h |
R6=0223h |
||||
Mem(0203h)=012h |
Mem(0223h)=05Fh |
||||
ADD.B |
ADD.B |
||||
R5,0(R6) |
@R6,R5 |
||||
08Fh |
05Fh |
||||
+012h |
+002h |
||||
0A1h |
00061h |
||||
Mem(0203h)=0A1h |
R5=00061h |
||||
C=0, Z=0, N=1 |
C=0, Z=0, N=0 |
||||
(младший байт |
(адресуемый байт)+(младший байт |
||||
регистра)+(адресуемый байт) |
регистра) |
||||
->(адресуемый байт) |
->(младший байт регистра, ноль в |
||||
старшем байте) |
|||||
3.3. Режимы адресации
Семь режимов адресации для операнда источника и четыре режима адресации для операнда назначения могут адресовать полное адресное пространство без исключений. В таблице 3.3 приводится конфигурация битов для режимов As (источник) и Ad (назначение).
Таблица 3.3 Режимы адресации операндов источника/получателя
As/Ad |
Режим адресации |
Синтаксис |
Описание |
||
00 / 0 |
Регистровый режим |
Rn |
Содержимое регистра является операндом |
||
01 / 1 |
Индексный режим |
X(Rn) |
Значение (Rn+X) указывает на операнд. X |
||
сохранен в следующем слове |
|||||
Библиотека Компэла |
|||||
44 |
|||||
Раздел III. 16-разрядное RISC CPU
Таблица 3.3 (Окончание) |
||||
As/Ad |
Режим адресации |
Синтаксис |
Описание |
|
Значение (PC+X) указывает на операнд. X |
||||
01 / 1 |
Символьный режим |
ADDR |
сохранен в следующем слове. Использован |
|
индексный режим X(PC) |
||||
Абсолютный (безу- |
Слово, следующее за командой, содержит |
|||
01 / 1 |
&ADDR |
абсолютный адрес. X сохранен в следующем |
||
словный) режим |
||||
слове. Использован индексный режим X(SR) |
||||
10 / - |
Косвенный регистро- |
@Rn |
Содержимое Rn использовано как указатель |
|
вый режим |
на операнд |
|||
Содержимое Rn использовано как указатель |
||||
11 / - |
Косвенный автоин- |
@Rn+ |
на операнд. Содержимое Rn впоследствии |
|
кремент |
увеличивается на 1 для байтовых команд и на |
|||
2 для команд-слов. |
||||
Прямой (непосред- |
Слово, следующее за командой, содержит |
|||
11 / - |
#N |
непосредственную константу N. Использован |
||
ственный) режим |
||||
косвенный автоинкрементный режим @PC+ |
||||
Семь упомянутых способов адресации подробно рассматриваются в следующих разделах. В большинстве примеров показаны схожие режимы адресации для источника и получателя, но в команде возможны любые правильные комбинации способов адресации источника и получателя.
Примечание: использование меток EDE и TONI
Везде в документации по семейству MSP430 используются универсальные метки EDE и TONI. Они являются только метками, не имеющими никакого специального назначения.
3.3.1. Регистровый режим
Регистровый режим описан в таблице 3.4.
Таблица 3.4. Описание регистрового режима |
|||||||||||
Код ассемблера |
Содержимое ПЗУ |
||||||||||
MOV R10,R11 |
MOV R10, R11 |
||||||||||
Длина: Одно или два слова |
|||||||||||
Операция: Пересылка содержимого R10 в R11. Содержимое R10 не изменяется. |
|||||||||||
Комментарий: Действительно для источника и получателя. |
|||||||||||
Пример: MOV R10,R11 |
|||||||||||
До |
После |
||||||||||
R10 |
0A023h |
R10 |
0A023h |
||||||||
R11 |
0FA15h |
R11 |
0A023h |
||||||||
PC |
PCold |
PC |
PCold+2 |
||||||||
Библиотека Компэла |
|||||||||||
45 |
|||||||||||
MSP430x1xxFamily
Примечание: данные в регистрах
Данные в регистре могут быть доступны с помощью байтовых команд или команд-слов. Если используются байтовые команды, старший байт всегда будет содержать в результате «0». Биты статуса обрабатываются согласно результату байтовой команды.
3.3.2. Индексный режим
Индексный режим описан в таблице 3.5.
Таблица 3.5. Описание индексного режима |
||
Код ассемблера |
Содержимое ПЗУ |
|
MOV 2(R5), 6(R6) |
MOV X(R5), Y(R6) X=2 Y=6 |
|
Длина: Два или три слова
Операция: Пересылка содержимого с исходного адреса (равного сумме содержимого R5 + 2) по адресу назначения (содержимое R6 + 6). Регистры источника и получателя (R5 и R6) не изменяются. В индексном режиме программный счетчик автоматически инкрементируется таким образом, что выполнение программы продолжается со следующей команды.
Комментарий: Действительно для источника и получателя
Пример: MOV 2(R5),6(R6):
46 |
Библиотека Компэла |
|
Раздел III. |
16-разрядное RISC CPU |
3.3.3. Символьный режим
Символьный режим описан в таблице 3.6.
Таблица 3.6. Описание символьного режима.
Код ассемблера |
Содержимое ПЗУ |
MOV EDE, TONI
MOV X(PC), Y(PC)
X=EDE-PCY=TONI-PC
Длина: Два или три слова
Операция: Пересылка содержимого с исходного адреса EDE (равного сумме содержимого PC + X) по адресу назначения TONI (содержимое PC + Y). Слова после команды содержат разницу
между PC и адресами источника или получателя соответственно. Ассемблер автоматически вычисляет и вставляет смещения X и Y. В символьном режиме программный счетчик автоматически инкрементируется так, что выполнение программы продолжается со следующей команды.
Комментарий: действительно для источника и получателя
Пример: MOV EDE,TONI ;Адрес источника EDE=0F016h ;Адрес получателя TONI=01114h
Библиотека Компэла |
47 |
|
MSP430x1xxFamily
3.3.4. Абсолютный режим
Абсолютный режим описан в таблице 3.7.
Таблица 3.7. Описание абсолютного режима |
||
Код ассемблера |
Содержимое ПЗУ |
|
MOV &EDE, &TONI |
MOV X(0), Y(0) X=EDEY=TONI |
|
Длина: Два или три слова
Операция: Пересылка содержимого с исходного адреса EDE по адресу назначения TONI. Слова после команды содержат абсолютные адреса источника и получателя. В абсолютном режиме программный счетчик автоматически инкрементируется так, что выполнение программы продолжается со следующей команды.
Комментарий: Действительно для источника и получателя
Пример: MOV &EDE,&TONI ;Адрес источника EDE=0F016h ;Адрес получателя TONI=01114h
Этот режим адресации предназначен главным образом для аппаратных периферийных модулей, расположенных по абсолютным, фиксированным адресам. Они адресуются в абсолютном режиме, что гарантирует переносимость программы (например, при написании позиционно-независимого, переносимого кода).
48 |
Библиотека Компэла |
|
Раздел III. |
16-разрядное RISC CPU |
3.3.5. Косвенный регистровый режим
Косвенный регистровый режим описан в таблице 3.8.
Таблица 3.8. Описание косвенного режима |
||
Код ассемблера |
Содержимое ПЗУ |
|
MOV @R10, 0(R11) |
MOV @R10, 0(R11) |
|
Длина: Одно или два слова
Операция: Пересылка содержимого с исходного адреса (содержится в R10) по адресу назначения (содержится в R11). Регистры не изменяются.
Комментарий: Действительно только для операнда источника. В качестве операнда получателя подставляется 0(Rd)
Пример: MOV.B @R10, 0(R11)
Библиотека Компэла |
49 |
|