Шумахер У. Полупроводниковая электроника
.pdfINFSEMI_2-Text.fm, стр. 318 из 589 (September 3, 2010, 17:06)
318 7. Микроконтроллеры
Адресация с использованием базового |
ресных регистров. Регистр с чётным номе- |
||||||||
адреса + смещение |
|
|
ром содержит базовый адрес, в старшей по- |
||||||
Адресация с использованием |
базового |
ловине нечётного регистра содержится раз- |
|||||||
мер буфера, а в младшей — индекс буфера. |
|||||||||
адреса и смещения удобна, когда необходи- |
|||||||||
Результирующим адресом является сумма |
|||||||||
мо осуществить доступ к структурным эле- |
|||||||||
базового адреса и индекса. |
|
||||||||
ментам и локальным переменным (с ис- |
|
||||||||
После того, как было произведено обра- |
|||||||||
пользованием указателя стека в |
качестве |
||||||||
щение по выбранному адресу, индекс изме- |
|||||||||
базового |
адреса), |
а также к |
статическим |
||||||
няется (к |
нему |
прибавляется 10-битное |
|||||||
данным (с адресным регистром в качестве |
|||||||||
смещение со знаком, которое указывается |
|||||||||
указателя базового адреса). Результирую- |
|||||||||
непосредственно в теле команды). Если это |
|||||||||
щий адрес представляет собой сумму содер- |
|||||||||
смещение меньше размера буфера, значе- |
|||||||||
жимого |
адресного регистра |
и |
величины |
||||||
ние индекса будет автоматически изменять- |
|||||||||
смещения (с учётом знака). Величина сме- |
|||||||||
ся по кругу от одного конца буфера к друго- |
|||||||||
щения составляет 10 бит или 16 бит для не- |
|||||||||
му. К примеру, если буфер имеет размер |
|||||||||
которых |
команд, |
что позволяет |
осущест- |
||||||
50 байт, а значение индекса составляет 48 и |
|||||||||
влять адресацию |
всего доступного про- |
||||||||
увеличивается на смещение, равное 4, то |
|||||||||
странства памяти. |
|
|
|
||||||
|
|
|
новое значение индекса будет равно 2 |
||||||
|
|
|
|
|
|||||
Адресация с последующей модификацией |
(48 + 4 – 50). |
|
|
||||||
На циклический буфер наложены следу- |
|||||||||
Этот режим адресации использует нахо- |
|||||||||
ющие ограничения: |
|
||||||||
дящееся в адресном регистре значение в ка- |
начало циклического буфера должно |
||||||||
честве окончательного адреса, но после |
быть выровнено по границе, кратной |
||||||||
осуществления доступа к ячейке памяти из- |
64 бит; |
|
|
|
|||||
меняет содержимое адресного регистра, до- |
размер буфера должен быть кратен фор- |
||||||||
бавляя к нему 10-битное смещение со зна- |
мату данных, в неявном виде задаваемо- |
||||||||
ком. Наличие знака смещения позволяет |
му командой, которая осуществляет об- |
||||||||
сдвигать указатель адреса как вперёд, так и |
ращение к памяти. Так, например, когда |
||||||||
назад. Оба этих варианта могут быть ис- |
используется |
команда LOAD |
WORD, |
||||||
пользованы, например, для последователь- |
размер |
буфера должен быть |
кратен |
||||||
ного доступа к элементам массива или для |
4 байт, |
а при |
использовании команды |
||||||
удаления |
(«выталкивания» |
по |
команде |
LOAD DOUBLE WORD — кратен 8 байт. |
|||||
POP) данных из стека. |
|
|
Адресация с инвертированием битов |
||||||
Адресация с предварительной |
|
||||||||
|
адреса |
|
|
|
|||||
модификацией |
|
|
|
Данный тип адресации применяется в |
|||||
В этом режиме адресации к значению ад- |
|||||||||
алгоритмах быстрого преобразования Фурье |
|||||||||
ресного регистра добавляется 10-битное |
(БПФ), поскольку эти алгоритмы обычно |
||||||||
смещение со знаком, и полученный резуль- |
используют для представления результатов |
||||||||
тат сохраняется в адресном регистре в ка- |
формат с инвертированием битов. Текущее |
||||||||
честве конечного значения адреса, по кото- |
состояние указателя адреса хранится в паре |
||||||||
рому и производится обращение. Знак вы- |
адресных регистров. Чётный (по номеру) |
||||||||
бирается в зависимости от того, вперёд или |
регистр содержит базовый адрес, в младшей |
||||||||
назад необходимо передвинуть |
указатель |
половине |
нечётного регистра содержится |
||||||
адреса. Данный режим адресации может |
индекс массива, а в его старшей полови- |
||||||||
быть использован, например, для последо- |
не — величина модификации. Результиру- |
||||||||
вательного доступа к элементам массива |
ющий адрес представляет собой сумму ба- |
||||||||
или для сохранения (PUSH) данных в стеке. |
зового адреса и индекса. После каждого об- |
||||||||
Циклическая адресация |
|
|
ращения к памяти индекс инвертируется, к |
||||||
|
|
нему прибавляется значение модификато- |
|||||||
|
|
|
|
|
|||||
Основное применение циклической ад- |
ра и результат вновь инвертируется. Если, |
||||||||
ресации — это обращение к данным в цик- |
например, значение модификатора равно |
||||||||
лическом буфере в процессе цифровой |
1024 (как правило, оно представляет собой |
||||||||
фильтрации. В этом случае текущее состоя- |
число, полученное путём инвертирования |
||||||||
ние указателя адреса сохраняется в паре ад- |
двоичного числа, значение которого равно |