3.3 Режимы адресации
Семь режимов адресации для операнда источника и четыре режима адресации для операнда назначения могут адресовать полное адресное пространство без исключений. В таблице 3.3 приводится конфигурация битов для режимов As (источник) и Ad (назначение).
Таблица 3.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 для байтовых команд и на 2 для команд-слов. |
11 / - |
Прямой (непосредственный) режим |
#N |
Слово, следующее за командой, содержит непосредственную константу N. Использован косвенный автоинкрементный режим @PC+ |
Семь упомянутых способов адресации подробно рассматриваются в следующих разделах. В большинстве примеров показаны схожие режимы адресации для источника и получателя, но в команде возможны любые правильные комбинации способов адресации источника и получателя.
Примечание: использование меток EDE и TONI
Везде в документации по семейству MSP430 используются универсальные метки EDE и TONI. Они являются только метками, не имеющими никакого специального назначения.
|
3.3.1 Регистровый режим
Таблица 3.4. Описание регистрового режима
Код ассемблера |
Содержимое ПЗУ |
MOV R10,R11 |
MOV R10, R11 |
Длина: |
Одно или два слова |
Операция: |
Пересылка содержимого R10 в R11. Содержимое R10 не изменяется. |
Комментарий: |
Действительно для источника и получателя. |
Пример: |
MOV R10,R11
|
До |
|
После |
R10 |
|
R10 |
|
R11 |
|
R11 |
|
PC |
|
PC |
|
|
Примечание: данные в регистрах
Данные в регистре могут быть доступны с помощью байтовых команд или команд-слов. Если используются байтовые команды, старший байт всегда будет содержать в результате «0». Биты статуса обрабатываются согласно результату байтовой команды.
|
3.3.2 Индексный режим
Таблица 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): |
3.3.3 Символьный режим
Таблица 3.6. Описание символьного режима.
Код ассемблера |
Содержимое ПЗУ |
MOV EDE,TONI |
MOV X(PC),Y(PC)
X=EDE-PC
Y=TONI-PC |
Длина: |
Два или три слова |
Операция: |
Пересылка содержимого с исходного адреса EDE (равного сумме содержимого PC + X) по адресу назначения TONI (содержимое PC + Y). Слова после команды содержат разницу между PC и адресами источника или получателя соответственно. Ассемблер автоматически вычисляет и вставляет смещения X и Y. В символьном режиме программный счетчик автоматически инкрементируется так, что выполнение программы продолжается со следующей команды. |
Комментарий: |
действительно для источника и получателя |
Пример: |
MOV EDE,TONI ;Адрес источника EDE=0F016h
;Адрес получателя TONI=01114h |
3.3.4 Абсолютный режим
Таблица 3.7. Описание абсолютного режима
Код ассемблера |
Содержимое ПЗУ |
MOV &EDE,&TONI |
MOV X(0),Y(0)
X=EDE
Y=TONI |
Длина: |
Два или три слова |
Операция: |
Пересылка содержимого с исходного адреса EDE по адресу назначения TONI. Слова после команды содержат абсолютные адреса источника и получателя. В абсолютном режиме программный счетчик автоматически инкрементируется так, что выполнение программы продолжается со следующей команды. |
Комментарий: |
Действительно для источника и получателя |
Пример: |
MOV &EDE,&TONI ;Адрес источника EDE=0F016h
;Адрес получателя TONI=01114h |
Этот режим адресации предназначен главным образом для аппаратных периферийных модулей, расположенных по абсолютным, фиксированным адресам. Они адресуются в абсолютном режиме, что гарантирует переносимость программы (например, при написании позиционно-независимого, переносимого кода).
3.3.5 Косвенный регистровый режим
Таблица 3.8. Описание косвенного регистровый режима
Код ассемблера |
Содержимое ПЗУ |
MOV @R10,0(R11) |
MOV @R10,0(R11) |
Длина: |
Одно или два слова |
Операция: |
Пересылка содержимого с исходного адреса (содержится в R10) по адресу назначения (содержится в R11). Регистры не изменяются. |
Комментарий: |
Действительно только для операнда источника. В качестве операнда получателя подставляется 0(Rd) |
Пример: |
MOV.B @R10,0(R11) |
3.3.6 Косвенный автоинкрементный режим
Таблица 3.9. Описание косвенного автоинкрементного режима
Код ассемблера |
Содержимое ПЗУ |
MOV @R10+,0(R11) |
MOV @R10+,0(R11) |
Длина: |
Одно или два слова |
Операция: |
Пересылка содержимого с исходного адреса (содержится в R10) по адресу назначения (содержится в R11). Регистр R10 инкрементируется после выборки на 1 для байтовых операций или на 2 для команд-слов, таким образом указывается следующий адрес без дополнительных действий. Это полезно для обработки таблиц. |
Комментарий: |
Действительно только для операнда источника. В качестве операнда получателя подставляется 0(Rd) плюс вторая команда INCD Rd. |
Пример: |
MOV.B @R10+,0(R11) |
Автоинкремент содержимого регистра происходит после выборки операнда. Этот процесс показан на рис.3.8.
3.3.7 Прямой режим
Таблица 3.10. Описание прямого (непосредственный) режима
Код ассемблера |
Содержимое ПЗУ |
MOV #45h,TONI |
MOV @PC+,X(PC)
45
X=TONI-PC |
Длина: |
Два или три слова.
На одно слово меньше, если может использоваться константа генераторов CG1 или CG2. |
Операция: |
Пересылка непосредственной константы 45h, находящейся в слове, следующем за командой, по адресу назначения TONI. Когда происходит выборка источника, программный счетчик указывает на слово, следующее за командой, и выполняется пересылка содержимого по назначению. |
Комментарий: |
Действительно только для операнда источника |
Пример: |
MOV #45h,TONI |
Для туристов - Чехия недвижимость - бизнесменам и инвесторам
|