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