Семь режимов адресации для операнда источника и четыре режима адресации для операнда приемника могут адресовать полное адресное пространство без исключений. В таблице Г.1 приводится конфигурация битов для режимов As (источник) и Ad (приемник).
Таблица Г.1 - Режимы адресации операндов источника/получателя
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+ |
Семь упомянутых способов адресации представлены в таблицах Г.2-Г8. В большинстве примеров показаны схожие режимы адресации для источника и получателя, но в команде возможны любые правильные комбинации способов адресации источника и получателя. Данные в регистре могут быть доступны с помощью байтовых команд или команд-слов. Если используются байтовые команды, старший байт всегда будет содержать в результате <0>. Биты статуса обрабатываются согласно результату байтовой команды.
Абсолютный режим адресации предназначен главным образом для аппаратных периферийных модулей, расположенных по абсолютным, фиксированным адресам. Данный режим гарантирует переносимость программы (например, при написании позиционно-независимого, переносимого кода).
Таблица Г.2 - Регистровый режим адресации
Код ассемблера | Содержимое ПЗУ |
MOV R10,R11 | MOV R10, R11 |
Длина: | Одно или два слова |
Операция: | Пересылка содержимого R10 в R11. Содержимое R10 не изменяется. |
Комментарий: | Действительно для источника и получателя. |
Пример: | MOV R10,R11 | До | | После | R10 | | R10 | | R11 | | R11 | | PC | | PC | | |
Таблица Г.3 - Индексный режим адресации
Код ассемблера | Содержимое ПЗУ |
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): |
Таблица Г.4 - Символьный режим адресации
Код ассемблера | Содержимое ПЗУ |
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 |
Таблица Г.5 - Абсолютный режим адресации
Код ассемблера | Содержимое ПЗУ |
MOV &EDE,&TONI | MOV X(0),Y(0) X=EDE Y=TONI |
Длина: | Два или три слова |
Операция: | Пересылка содержимого с исходного адреса EDE по адресу назначения TONI. Слова после команды содержат абсолютные адреса источника и получателя. В абсолютном режиме программный счетчик автоматически инкрементируется так, что выполнение программы продолжается со следующей команды. |
Комментарий: | Действительно для источника и получателя |
Пример: | MOV &EDE,&TONI ;Адрес источника EDE=0F016h ;Адрес получателя TONI=01114h |
Таблица Г.6 - Косвенный регистровый режим адресации
Код ассемблера | Содержимое ПЗУ |
MOV @R10,0(R11) | MOV @R10,0(R11) |
Длина: | Одно или два слова |
Операция: | Пересылка содержимого с исходного адреса (содержится в R10) по адресу назначения (содержится в R11). Регистры не изменяются. |
Комментарий: | Действительно только для операнда источника. В качестве операнда получателя подставляется 0(Rd) |
Пример: | MOV.B @R10,0(R11) |
Таблица Г.7 - Косвенный регистровый режим адресации с автоинкрементом
Код ассемблера | Содержимое ПЗУ |
MOV @R10+,0(R11) | MOV @R10+,0(R11) |
Длина: | Одно или два слова |
Операция: | Пересылка содержимого с исходного адреса (содержится в R10) по адресу назначения (содержится в R11). Регистр R10 инкрементируется после выборки на 1 для байтовых операций или на 2 для команд-слов, таким образом указывается следующий адрес без дополнительных действий. Это полезно для обработки таблиц. |
Комментарий: | Действительно только для операнда источника. В качестве операнда получателя подставляется 0(Rd) плюс вторая команда INCD Rd. |
Пример: | MOV.B @R10+,0(R11) |
Таблица Г.8 – Непосредственный режим адресации
Код ассемблера | Содержимое ПЗУ |
MOV #45h,TONI | MOV @PC+,X(PC) 45 X=TONI-PC |
Длина: | Два или три слова. На одно слово меньше, если может использоваться константа генераторов CG1 или CG2. |
Операция: | Пересылка непосредственной константы 45h, находящейся в слове, следующем за командой, по адресу назначения TONI. Когда происходит выборка источника, программный счетчик указывает на слово, следующее за командой, и выполняется пересылка содержимого по назначению. |
Комментарий: | Действительно только для операнда источника |
Пример: | MOV #45h,TONI |
Приложение Д
(справочное)