Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Микропроцессорная техника / Семейство микроконтроллеров MSP430x2xx_

.pdf
Скачиваний:
94
Добавлен:
05.03.2016
Размер:
2.03 Mб
Скачать

4.4. Режимы адресации 111

Нижние 64 KБ

 

 

 

 

PC.19:16 = 0

 

19 16 15

0

 

FFFFF

 

0

 

Счётчик

 

 

команд PC

 

 

 

 

 

 

 

 

 

S Смещение (в байтах)

16 битный индекс со знаком

10000

 

 

 

 

0FFFF

KБ64

16 битное сложение

 

 

 

 

 

 

PC.19:0

Нижние

 

 

 

00000

0

 

Адрес в памяти

 

 

 

 

Рис. 4.19. Относительный режим адресации в нижней 64 КБ области памяти.

 

До операции

После операции

 

Адресное

 

Адресное

пространство

пространство

0103Ah

 

 

0103Ah

 

PC

 

 

 

xxxxh

 

xxxxh

 

 

 

 

 

 

01038h

F740h

 

01038h

F740h

 

 

 

 

 

 

 

01036h

4766h

 

01036h

4766h

 

01034h

05D0h

PC

01034h

50D0h

 

 

 

 

 

 

 

 

 

 

01038h

 

 

 

32h

src

 

 

 

 

 

 

0077Ah

xxxxh

 

0077Ah

xxxxh

 

+0F740h

 

+45h

dst

 

 

 

00778h

 

 

 

77h

Sum

00778h

xx45h

 

00778h

xx77h

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

01036h

 

 

 

 

 

 

 

 

 

 

 

 

0579Eh

xxxxh

 

+04766h

0579Eh

xxxxh

 

 

 

0579Ch

 

 

0579Ch

xx32h

 

0579Ch

xx32h

 

 

 

 

 

 

 

 

 

 

 

 

 

 

112 Глава 4. 16#битное RISC ЦПУ MSP430X

Команды MSP430 и относительный режим адресации верхней области памяти

Если счётчик команд указывает на адрес, расположенный за пределами нижней 64 КБ области памяти, то для вычисления адреса операнда используются биты 19:16 этого регистра. Таким образом, операнд может быть расположен в диапазоне адре сов PC ±32 КБ, поскольку индекс X является 16 битным числом со знаком. При этом итоговый адрес может выйти за пределы адресного пространства ЦПУ и в ре зультате отобразиться на нижнюю 64 КБ область памяти (см. Рис. 4.20 и Рис. 4.21).

Длина:

Два или три слова.

Операция:

Индекс (смещение), представляющий 16 битное число со зна

 

ком и находящийся в следующем после команды слове, прибав

 

ляется к 20 битному содержимому счётчика команд PC. В ре

 

зультате формируется 20 битный адрес из диапазона

 

0…FFFFFh. Операндом является содержимое ячейки памяти по

 

данному адресу.

Комментарий: Допускается для источника и приёмника. Ассемблер автомати чески вычисляет смещение и вставляет его в итоговый код.

Верхняя область памяти

 

PC.19:16 > 0

FFFFF

 

PC.19:0

PC ±32 KБ

10000

 

0FFFF

 

00000

 

19

16 15

0

1 ... 15

Счётчик команд PC

S

S Смещение (в байтах)

16 битный индекс со знаком

(знак расширяется до 20 бит)

20 битное сложение

 

Нижние 64

 

 

Адрес в памяти

Рис. 4.20. Относительный режим адресации верхней области памяти.

FFFFF

 

PC.19:0

КБ

±32

 

10000

 

0FFFF

64 KБ

PC.19:0

Нижние

0000C

PC.19:0

 

PC.19:0

 

±32

Рис. 4.21. Выход за границы адресного пространства при использовании относительного ре жима адресации.

4.4. Режимы адресации 113

Пример

ADD.W EDE,&TONI

Эта команда выполняет сложение 16 битных значений операнда источника EDE и операнда приёмника TONI. 16 битный результат сложения сохраняется в операнде приёмнике. В данном примере команда расположена по адресу 2F034h.

Источник:

Для адресации слова EDE, расположенного по адресу 3379Ch,

 

используется выражение PC + 04766h. Значение смещения опре

 

деляется выражением 3379Ch – 2F036h = 04766h, где 2F036h —

 

адрес, по которому хранится смещение в данном примере.

Приёмник:

Для адресации слова TONI используется его абсолютный адрес

 

00778h.

До операции

После операции

 

 

Адресное

 

 

 

Адресное

 

 

 

пространство

 

 

пространство

 

 

 

2F03Ah

 

 

 

 

2F03Ah

 

 

PC

 

 

 

 

 

 

 

 

xxxxh

 

 

 

xxxxh

 

 

 

 

 

 

 

 

 

 

 

 

 

2F038h

0778h

 

 

 

2F038h

0778h

 

 

 

 

2F036h

4766h

 

 

 

2F036h

4766h

 

 

 

 

2F034h

5092h

 

PC

2F034h

5092h

 

 

 

 

 

 

 

 

2F036h

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3379Eh

xxxxh

 

 

+04766h

3379Eh

xxxxh

 

 

 

 

3379Ch

5432h

 

 

3379Ch

3379Ch

5432h

 

 

 

 

 

 

 

 

 

 

 

 

 

5432h

src

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0077Ah

xxxxh

 

 

 

0077Ah

xxxxh

 

 

+2345h

 

 

 

 

 

dst

00778h

2345h

 

 

 

00778h

7777h

 

 

7777h

 

 

 

 

 

Sum

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Команды MSP430X и относительный режим адресации

При использовании относительного режима адресации с командами MSP430X, операнды могут быть расположены по любому адресу в диапазоне PC ± 19 бит.

Длина:

Три или четыре слова.

Операция:

Адрес операнда вычисляется как сумма 20 битного значения

 

счётчика команд и 20 битного индекса. Четыре старших бита

 

индекса хранятся в слове расширения, а остальные 16 битов —

 

в слове, расположенном после команды.

Комментарий: Допускается для источника и приёмника. Ассемблер автомати чески вычисляет смещение и вставляет его в итоговый код.

114 Глава 4. 16#битное RISC ЦПУ MSP430X

Пример

ADDX.B EDE,TONI

Эта команда выполняет сложение 8 битных значений операнда источника EDE и операнда приёмника TONI. Результат сложения сохраняется в операнде приёмнике.

Источник:

Для адресации байта EDE, расположенного по адресу 3579Ch,

 

 

используется выражение PC + 14766h. Значение смещения оп

 

 

ределяется выражением 3579Ch – 21036h = 14766h, где 21036h —

 

 

адрес, по которому хранится смещение в данном примере.

Приёмник:

Для адресации байта TONI, расположенного по адресу 77778h,

 

 

используется выражение PC + 56740h. Значение смещения оп

 

 

ределяется выражением 77778h – 21038h = 56740h, где 21038h —

 

 

адрес, по которому хранится смещение в данном примере.

До операции

 

После операции

 

Адресное пространство

 

Адресное пространство

 

2103Ah

 

 

 

 

 

 

2103Ah

 

PC

 

 

 

 

 

 

 

 

 

 

xxxxh

 

 

 

 

xxxxh

 

21038h

 

 

 

 

 

 

21038h

 

 

 

 

 

6740h

 

 

 

 

6740h

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

21036h

 

4766h

 

 

 

 

21036h

4766h

 

 

 

21034h

 

50D0h

 

 

 

 

21034h

50D0h

 

 

 

21032h

 

18C5h

PC

 

21032h

18C5h

 

 

 

 

 

 

 

 

21038h

 

 

 

 

32h

src

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

7777Ah

 

xxxxh

 

 

7777Ah

xxxxh

 

 

 

+56740h

 

 

+45h

dst

77778h

 

xx45h

 

 

77778h

 

77778h

xx77h

 

77h

Sum

 

 

 

 

 

21036h

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3579Eh

 

xxxxh

 

 

+14766h

 

3579Eh

xxxxh

 

 

 

3579Ch

 

xx32h

 

 

3579Ch

 

3579Ch

xx32h

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4.4.4. Абсолютный режим адресации

При использовании абсолютного режима в качестве адреса операнда исполь зуется значение, расположенное после слова команды. Существует две разновид ности абсолютного режима:

абсолютный режим при адресации нижней области памяти объёмом 64 КБ;

абсолютный режим в командах MSP430X.

4.4. Режимы адресации 115

Абсолютный режим адресации в нижней 64CКБ области памяти

Если абсолютный режим адресации используется с командой MSP430, то аб солютный адрес представляет собой 16 битное значение и, соответственно, ука зывает на адрес в нижней 64 КБ области памяти. Адрес вычисляется как смеще ние от нуля и сохраняется в следующем после команды слове. Этот режим адреса ции позволяет обращаться к ОЗУ и периферийным устройствам микроконтрол лера, а также использовать без всякой модификации существующее ПО, напи санное для ЦПУ MSP430.

Длина:

Два или три слова.

Операция:

Операндом является содержимое ячейки памяти по заданному

 

адресу.

Комментарий: Допускается для источника и приёмника. Ассемблер автомати чески вычисляет смещение от 0 го адреса и вставляет его в ито говый код.

Пример

ADD.W &EDE,&TONI

Эта команда выполняет сложение 16 битных значений операнда источника и операнда приёмника, расположенных по абсолютным адресам EDE и TONI со ответственно. Результат сложения сохраняется в операнде приёмнике.

Источник:

Слово, расположенное в памяти по адресу EDE.

 

 

Приёмник:

Слово, расположенное в памяти по адресу TONI.

 

До операции

После операции

 

Адресное пространство

Адресное пространство

 

 

 

 

 

2103Ah

 

 

PC

 

2103Ah

 

 

 

 

 

 

 

xxxxh

 

xxxxh

 

 

21038h

 

 

 

21038h

 

 

 

 

 

7778h

 

7778h

 

 

 

21036h

 

579Ch

 

21036h

579Ch

 

 

 

21034h

 

5292h

PC

21034h

5292h

 

 

 

 

 

 

 

 

 

 

5432h

src

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0777Ah

 

xxxxh

 

0777Ah

xxxxh

 

 

 

 

+2345h

dst

 

 

 

 

 

 

 

7777h

Sum

07778h

 

2345h

 

07778h

7777h

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0579Eh

xxxxh

0579Eh

xxxxh

0579Ch

5432h

0579Ch

5432h

 

 

 

 

 

 

 

 

116 Глава 4. 16#битное RISC ЦПУ MSP430X

Команды MSP430X и абсолютный режим адресации

При использовании абсолютного режима адресации с командой MSP430X, адрес представляет собой 20 битное значение и, соответственно, позволяет адре совать любую ячейку памяти в пределах всего адресного пространства. Адрес вы числяется как смещение от нуля. Четыре старших бита значения хранятся в слове расширения, а остальные 16 бит — в слове, расположенном после команды.

Длина:

Три или четыре слова.

Операция:

Операндом является содержимое ячейки памяти по заданному

 

адресу.

Комментарий: Допускается для источника и приёмника. Ассемблер автомати чески вычисляет смещение от 0 го адреса и вставляет его в ито говый код.

Пример

ADDX.A &EDE,&TONI

Эта команда выполняет сложение 20 битных значений операнда источника и операнда приёмника, расположенных по абсолютным адресам EDE и TONI со ответственно. Результат сложения сохраняется в операнде приёмнике.

Источник:

Два слова, расположенных в памяти, начиная с адреса EDE.

Приёмник:

Два слова, расположенных в памяти, начиная с адреса TONI.

До операции

 

 

После операции

Адресное пространство

Адресное пространство

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0103Ah

xxxxh

 

 

0103Ah

xxxxh

PC

 

 

 

 

 

 

 

 

 

01038h

F740h

 

 

01038h

F740h

 

 

 

01036h

4766h

 

 

01036h

4766h

 

 

 

01034h

05D0h

PC

01034h

50D0h

 

 

 

 

 

 

01038h

 

 

 

32h

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0077Ah

xxxxh

 

0077Ah

xxxxh

 

+0F740h

 

+45h

 

 

 

 

00778h

 

 

 

77h

00778h

xx45h

 

00778h

xx77h

 

 

 

 

 

 

 

 

01036h

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0579Eh

xxxxh

 

0579Eh

xxxxh

 

 

 

 

+04766h

 

 

 

 

 

 

0579Ch

 

 

 

 

 

0579Ch

xx32h

 

0579Ch

xx32h

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4.4. Режимы адресации 117

4.4.5. Косвенный регистровый режим адресации

При использовании косвенного регистрового режима в качестве адреса опе ранда используется содержимое регистра ЦПУ Rsrc. В этом режиме всегда ис пользуются 20 битные адреса.

Длина:

Один, два или три слова.

Операция:

Операндом является содержимое ячейки памяти по заданному

 

адресу. Содержимое регистра источника Rsrc не изменяется.

Комментарий: Допускается только для источника. Для операнда приёмника подставляется 0(Rdst).

Пример

ADDX.W @R5,2100h(R6)

Эта команда выполняет сложение 16 битных значений, расположенных по указанным адресам. Результат сложения сохраняется в операнде приёмнике.

Источник:

 

Слово, адресуемое регистром R5. В данном примере в регистре

 

 

 

содержится адрес 3579Ch.

 

 

 

 

 

 

 

 

 

Приёмник:

 

Слово с адресом R6 + 2100h, равным 45678h + 2100h = 47778h.

До операции

 

 

 

 

После операции

 

 

 

Адресное пространство

Регистры

Адресное пространство Регистры

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

21038h

 

 

 

 

 

 

 

 

 

21038h

 

 

PC R5

 

 

 

 

 

xxxxh

 

R5

3579Ch

 

 

 

xxxxh

 

3579Ch

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

21036h

 

2100h

 

R6

45678h

 

 

21036h

 

2100h

 

R6

 

45678h

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

21034h

 

55A6h

 

PC

 

 

 

21034h

 

55A6h

 

 

 

 

 

 

 

 

 

 

 

 

 

45678h

 

 

 

 

5432h

 

src

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4777Ah

 

xxxxh

 

 

 

 

4777Ah

 

xxxxh

 

 

 

 

 

+02100h

 

 

 

+2345h

 

dst

 

 

 

 

 

 

 

47778h

 

 

 

 

7777h

 

Sum

47778h

 

2345h

 

 

 

 

47778h

 

7777h

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3579Eh

xxxxh

 

3579Eh

xxxxh

 

 

 

 

 

 

 

3579Ch

5432h

R5

3579Ch

5432h

R5

 

 

 

 

 

 

 

 

 

 

 

 

118 Глава 4. 16#битное RISC ЦПУ MSP430X

4.4.6.Косвенный регистровый режим адресации с автоинкрементом

При использовании косвенного регистрового режима с автоинкрементом в качестве адреса операнда используется содержимое регистра ЦПУ Rsrc. После выборки операнда источника содержимое регистра Rsrc автоматически увеличи вается на 1, 2 или 4 при использовании 8 , 16 и 20 битных операндов соответ ственно. Если один и тот же регистр задействуется как источник и как приёмник, то для адресации операнда приёмника используется содержимое регистра после инкрементирования. В косвенном регистровом режиме с автоинкрементом всег да применяются 20 битные адреса.

Длина:

Один, два или три слова.

Операция:

Операндом является содержимое ячейки памяти по заданному

 

адресу.

Комментарий: Допускается только для источника.

Пример

ADD.B @R5+,0(R6)

Эта команда выполняет сложение 8 битных значений, расположенных по указанным адресам. Результат сложения сохраняется в операнде приёмнике.

Источник:

 

Байт, адресуемый регистром R5. В данном примере в регистре

 

 

 

содержится адрес 3579Ch.

 

 

 

 

 

 

 

 

 

Приёмник:

 

Байт с адресом R6 + 0h, равным в данном примере 00778h.

До операции

 

 

 

 

После операции

 

 

 

Адресное пространство

Регистры

Адресное пространство Регистры

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

21038h

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

xxxxh

 

R5

3579Ch

 

 

21038h

 

xxxxh

PC R5

 

3579Dh

 

21036h

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0000h

 

R6

00778h

 

 

21036h

 

0000h

 

R6

 

00778h

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

21034h

 

55F6h

 

PC

 

 

 

21034h

 

55F6h

 

 

 

 

 

 

 

 

 

 

 

 

 

00778h

 

 

 

 

32h

 

src

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0077Ah

 

xxxxh

 

 

 

 

0077Ah

 

xxxxh

 

 

 

 

 

+0000h

 

 

 

+45h

 

dst

 

 

 

 

 

 

 

00778h

 

 

 

 

77h

 

Sum

00778h

 

xx45h

 

 

 

 

00778h

 

xx77h

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

R5

 

 

 

 

 

3579Dh

xxh

 

3579Dh

xxh

3579Ch

32h

R5

3579Ch

xx32h

 

 

 

 

 

 

 

 

 

 

 

 

 

4.4. Режимы адресации 119

4.4.7. Непосредственный режим адресации

Непосредственный режим позволяет использовать в качестве операндов кон станты, которые при этом располагаются в памяти сразу после команды. Обраще ние к счётчику команд осуществляется с использованием косвенного режима ад ресации с автоинкрементом. Счётчик указывает на непосредственное значение, находящееся в следующем слове. После выборки этого значения PC увеличивает ся на 2 независимо от разрядности операнда. Существует две разновидности не посредственного режима:

8 или 16 битные константы в командах MSP430;

20 битные константы в командах MSP430X.

Команды MSP430 и непосредственный режим адресации

При использовании непосредственного режима адресации в команде MSP430, константа представляет собой 8 или 16 битное число и располагается в слове памяти, следующем за командой.

Длина:

Два или три слова. На одно слово меньше, если в качестве не

 

посредственного операнда может использоваться значение,

 

формируемое генератором констант.

Операция:

Операнд источник, являющийся 16 битной константой, ис

 

пользуется вместе с 16 битным операндом приёмником.

Комментарий: Допускается только для источника.

Пример

ADD #3456h,&TONI

Эта команда прибавляет 16 битное число 3456h к содержимому операнда приёмника с адресом TONI.

Источник:

16 битная константа 3456h.

 

 

 

 

Приёмник:

Слово, расположенное по адресу TONI.

 

 

 

До операции

После операции

 

Адресное пространство

Адресное пространство

 

2103Ah

 

 

2103Ah

 

PC

 

 

 

 

 

xxxxh

 

xxxxh

 

21038h

 

 

21038h

 

 

 

 

0778h

 

0778h

 

 

 

21036h

3456h

 

21036h

3456h

 

 

 

21034h

50B2h

PC

21034h

50B2h

 

 

 

 

 

 

 

 

 

3456h

src

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0077Ah

xxxxh

 

0077Ah

xxxxh

 

 

+2345h

dst

 

 

 

 

 

 

579Bh

Sum

00778h

2345h

 

00778h

579Bh

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

120 Глава 4. 16#битное RISC ЦПУ MSP430X

Команды MSP430X и непосредственный режим адресации

При использовании непосредственного режима адресации в команде MSP430X, константа представляет собой 20 битное число. Старшие четыре бита значения хранятся в слове расширения, а остальные 16 бит — в слове, располо женном после команды.

Длина:

Три или четыре слова.

 

На одно слово меньше, если в качестве непосредственного опе

 

ранда может использоваться значение, формируемое генерато

 

ром констант.

Операция:

Операнд источник, являющийся 20 битной константой, ис

 

пользуется вместе с 20 битным операндом приёмником.

Комментарий: Допускается только для источника.

Пример

ADDX.A #23456h,&TONI

Эта команда прибавляет 20 битное число 23456h к содержимому операнда

приёмника с адресом TONI.

 

 

 

 

 

Источник:

20 битная константа 23456h.

 

 

 

 

 

Приёмник:

Слово, расположенное по адресу TONI.

 

 

 

До операции

После операции

 

Адресное пространство

Адресное пространство

 

2103Ah

 

 

 

2103Ah

 

PC

 

 

 

 

 

xxxxh

 

 

xxxxh

 

 

 

 

 

 

 

 

 

 

 

21038h

7778h

 

21038h

7778h

 

 

 

 

 

 

 

 

 

 

 

 

 

21036h

3456h

 

21036h

3456h

 

 

 

 

 

 

 

 

 

 

 

21034h

50F2h

 

21034h

50F2h

 

 

 

21032h

1907h

PC

21032h

1907h

 

 

 

 

 

 

 

 

 

 

 

23456h

src

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

7777Ah

0001h

 

7777Ah

0003h

 

+12345h

dst

 

 

 

 

 

 

 

 

3579Bh

Sum

77778h

2345h

 

 

77778h

579Bh