33370

Система команд и способы адресации памяти данных

Доклад

Коммуникация, связь, радиоэлектроника и цифровые приборы

При прямой адресации адреса операндов содержатся непосредственно в слове команды.4 5 бит слова команды рис. Прямая адресация одного регистра общего назначения Примером команд использующих этот способ адресации являются команды работы со стеком PUSH Rr POP Rd команды инкремента INC Rd декремента DEC Rd а также некоторые команды арифметических операций.d4 5 бит слова команды рис.

Русский

2013-09-05

76.5 KB

21 чел.

Система команд и способы адресации памяти данных

Микроконтроллер AT90S8515 поддерживают 8 способов адресации для доступа к различным областям памяти данных (РОН, РВВ, ОЗУ).

В действительности способов адресации всего два: прямая адресация и косвенная. Однако каждый способ адресации имеет несколько разновидностей в зависимости от того, к какой области памяти производится обращение (для прямой адресации) или какие дополнительные действия выполняются над индексным регистром (для косвенной адресации).

При прямой адресации адреса операндов содержатся непосредственно в слове команды. В соответствии со структурой памяти данных существуют следующие разновидности прямой адресации: прямая адресация одного РОН, прямая адресация двух РОН, прямая адресация РВВ, прямая адресация ОЗУ.

1) Прямая адресация одного регистра общего назначения

Этот способ адресации используется в командах, оперирующих с одним из регистров общего назначения. При этом адрес регистра-операнда Rr/Rd  (его номер r/d=R31÷R0) содержится в разрядах 8...4 (5 бит) слова команды рис. 1.

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

0

КОП

r/d4÷r/d0

КОП

Рис. 1. Прямая адресация одного регистра общего назначения

Примером команд, использующих этот способ адресации, являются команды работы со стеком (PUSH Rr, POP Rd), команды инкремента (INC Rd), декремента (DEC Rd), а также некоторые команды арифметических операций.

2) Прямая адресация двух регистров общего назначения

Этот способ адресации используется в командах, оперирующих одновременно с двумя регистрами общего назначения. При этом адрес регистра-источника Rr содержится в разрядах r9, r3...r0 (5 бит), а адрес регистра приемника Rd в разрядах d8...d4 (5 бит) слова команды (рис. 2).

К командам, использующим этот способ адресации, относятся команды пересылки данных из регистра в регистр (MOV Rd, Rn), а также большинство команд арифметических операций.

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

0

КОП

r4

d4÷d0

r3÷r0

Рис. 2. Прямая адресация двух регистров общего назначения

Некоторые команды имеющие только один регистр-операнд, используют рассматриваемый способ адресации. В этом случае источником и приемником является один и тот же регистр. В качестве примера можно привести команду очистки регистра (Clr Rd), которая в действительности выполняет операцию «Исключающее ИЛИ» регистра с самим собой (EOR Rd, Rd).

3) Прямая адресация регистра ввода/вывода

Данный способ адресации используется командами "IN Rd,RBB" и "OUT RBB,Rr" пересылки данных между регистром ввода/вывода и регистровым файлом. В этом случае адрес регистра ввода/вывода содержится в разрядах 10, 9, 3...0 (6 бит), а адрес РОН - в разрядах 8...4 (5 бит) слова команды (рис. 3).

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

0

КОП

i/o5÷i/o4

r/d4÷r/d0

i/o3÷i/o0

Рис. 3. Прямая адресация регистра ввода/вывода

4) Прямая адресация ОЗУ

Данный способ используется при обращении ко всему адресному пространству памяти данных.

В системе команд имеется только две  команды, использующие этот способ адресации. Это команды пересылки байта между одним из РОН и ячейкой ОЗУ - "LDS  Rd,k" и "STS  k,Rr" . Каждая из этих команд занимает в памяти программ два слова (32 бита). В старшем слове содержится код операции и адрес регистра общего назначения (в разрядах 8 ÷ 4). В младшем слове находится адрес ячейки памяти (k), к которой происходит обращение (рис. 4).

Старшее слово

31

30

29

28

27

26

25

24

23

22

21

20

19

18

17

16

КОП

r/d4÷r/d0

КОП

Младшее слово

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

0

Прямой адрес ячейки памяти (ОЗУ) 0÷65535

Рис. 4. Прямая адресация ОЗУ

При косвенной адресации адрес ячейки памяти находится в одном из индексных регистров X, Y и Z. В зависимости от дополнительных манипуляций, которые производятся над содержимым индексного регистра, различают следующие разновидности косвенной адресации: простая косвенная адресация, относительная косвенная адресация, косвенная адресация с преддекрементом и косвенная адресация с постинкрементом.

1) Простая косвенная адресация

При использовании команд простой косвенной адресации обращение производится по адресу ячейки памяти, который находится в индексном регистре (рис. 5). Никаких действий с содержимым индексного регистра при этом не производится.

Старшее слово

(команда)

31

30

29

28

27

26

25

24

23

22

21

20

19

18

17

16

КОП

r/d4÷r/d0

КОП

Младшее

слово

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

0

Адрес ячейки ОЗУ (0÷65535), содержащейся в X, Y или Z 

Микроконтроллер поддерживает 6 команд (по 2 для каждого индексного регистра) простой косвенной адресации: "LD Rd, X/Y/Z" (пересылка байта из ОЗУ в РОН) и "ST X/Y/Z, Rr" (пересылка байта из РОН в ОЗУ). Адрес регистра общего назначения содержится в разрядах 8…4  слова команды.

Рис. 5. Простая косвенная адресация

2) Относительная косвенная адресация

При использовании команд относительной косвенной адресации адрес ячейки памяти, к которой производится обращение, получается суммированием содержимого индексного регистра (Y или Z) и константы, задаваемой в команде (рис.6).

Соответственно микроконтроллеры поддерживают 4 команды относительной косвенной адресации (две для регистра Y и две для регистра Z): "LDD Rd,Y+q/Z+q",  (пересылка байта из ОЗУ в РОН) и "STD Y+q/Z+q,Rr" (пересылка байта из РОН в ОЗУ). Адрес регистра общего назначения содержится в разрядах 8...4, а величина смещения - в разрядах 13, 11, 10, 2...0. Поскольку под смещение отводится только 6 бит, оно не может превышать значение 64.

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

0

КОП

q5

КОП

q4, q3

КОП

r/d4÷r/d0

КОП

q2÷q0

где: qq0 - величина смещения 0≤q≤63.

Рис. 6. Относительная косвенная адресация

3) Косвенная адресация с преддекрементом

При использовании команд косвенной адресации с преддекрементом содержимое индексного регистра сначала уменьшается на 1, а затем производится обращение по полученному адресу (рис. 7).

Микроконтроллер поддерживают 6 команд (по 2 для каждого индексного регистра) косвенной адресации с преддекрементом: "LD Rd,-X/-Y/-Z" (пересылка байта из ОЗУ в РОН) и "ST -X/-Y/-Z,Rd" (пересылка байта из РОН в ОЗУ). Адрес регистра общего назначения содержится в разрядах 8...4 слова команды.

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

0

КОП

r/d4÷r/d0

КОП

Рис. 7. Косвенная адресация с преддекрементом

8) Косвенная адресация с постинкрементом

При использовании команд косвенной адресации с постинкрементом после обращения по адресу, который находится в индексном регистре, содержимое индексного регистра увеличивается на 1 (рис. 8).

Микроконтроллер поддерживает 6 команд (по 2 для каждого индексного регистра) косвенной адресации с постинкрементом: "LD Rd,X+/Y+/Z+" (пересылка байта из ОЗУ в РОН) и "ST X+/Y+/Z+, Rd" (пересылка байта из РОН в ОЗУ). Адрес регистра общего назначения содержится в разрядах 8...4 слова команды.

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

0

КОП

r/d4÷r/d0

КОП

Рис. 8. Косвенная адресация с постинкрементом

Система команд

В микроконтроллерах AVR практически все команды занимают одну ячейку памяти. Исключение составляют команды, у которых одним из операндов является 16-разрядный адрес памяти программ. Большинство команд выполняется за один машинный цикл.

Программа для любого микроконтроллера представляет собой последовательность команд, записанных в памяти программ. Большинство команд при выполнении изменяют содержимое одного или нескольких регистров общего назначения, регистров ввода/вывода или ячеек ОЗУ.

Для обращения к различным областям адресного пространства памяти данных используются различные команды, реализующие, в свою очередь, различные способы адресации.

Доступ к регистрам ввода/вывода осуществляется по их адресам, являющимся операндами команды. Чтобы задать соответствие стандартных символических имен регистров реальным адресам, необходимо подключить в начале программы (при помощи директивы ассемблера .INCLUDE) файл определения адресов регистров ввода/вывода.

Необходимо помнить, что если для обращения к регистру ввода/вывода используются команды обмена с ОЗУ, то к символическому имени требуется прибавить число $20.

Большинство команд описывается 16-разрядным словом, которое называется также кодом операций (КОП). Код операции - это число, расположенное в памяти программ и определяющее действие, которое необходимо произвести между источником и приемником. Ряд команд, у которых один из операндов является 16-разрядным адресом, занимает две ячейки памяти программ. Соответственно код операции таких команд является 4-байтным числом.

В ряде случаев значение операнда-источника может содержаться непосредственно в коде операции, а не в регистре. Это происходит в том случае, когда операндом-источником является непосредственное значение (константа). Использование констант позволяет повысить удобочитаемость программы, а также упростить ее отладку и дальнейшее развитие.

Все множество команд микроконтроллеров AVR семейства Classic можно разбить на несколько групп:

• команды арифметических и логических операций;

• команды пересылки данных;

• команды передачи управления;

• команды операций с битами и команды сдвига;

• команды управления системой.

Команды арифметических операций предназначены для выполнения таких  операций, как сложение (ADD Rd, Rr), вычитание (SUB Rd, Rr), инкремент (INC Rd, Rr) и декремент (DEC Rd, Rr) регистров. Все операции производятся только над регистрами общего назначения. При этом микроконтроллеры AVR позволяют легко оперировать как знаковыми, так и беззнаковыми числами, а также работать с числами, представленными в дополнительном коде.

Команды логических операций позволяют выполнять стандартные логические операции над байтами, такие как «логическое умножение» (AND Rd, Rr), «логическое сложение» (OR Rd, Rr), операцию «исключающее ИЛИ» (EOR Rd, Rr), а также вычисление обратного и дополнительного кодов числа. К этой группе можно отнести также команды очистки/установки регистров. Все операции производятся над регистрами общего назначения, результат охраняется в одном из РОН.

Команды группы пересылки данных предназначены для пересылки содержимого ячеек, находящихся в адресном пространстве памяти данных. Разделение адресного пространства на три части (РОН, РВВ, ОЗУ) предопределило разнообразие команд данной группы. Пересылка данных, выполняемая командами группы, может производиться в следующих направлениях:

  •   РОН  РОН;
  •   РОН  РВВ;
  •   РОН  память данных (3 вида адресации).

Команды пересылки данных: MOV Rd, Rr (пересылка между РОН), LDI Rd, K (загрузка константы в РОН), LD Rd, X (косвенное чтение),  ST X, Rr (косвенная запись), IN Rd, RBB (пересылка из РВВ в РОН), OUT RBB, Rr (пересылка из РОН в РВВ).

Также к данной группе можно отнести стековые команды PUSH и POP, позволяющие сохранять в стеке и восстанавливать из стека содержимое РОН.

На выполнение команд данной группы требуется от одного до трех машинных циклов в зависимости от команды.

В группу команд передачи управления входят команды перехода (RJMP k-относительный безусловный переход, IJMP - косвенный безусловный переход), вызова подпрограмм (RCALL k – относительный вызов подпрограммы , ICALL k- косвенный вызов подпрограммы) и возврата из них (RET - возврат из подпрограммы, RETI-) и команды типа «проверка/пропуск», пропускающие следующую за ними команду при выполнении некоторого условия. Также к этой группе относятся команды сравнения, формирующие флаги регистра SREG и предназначенные, как правило, для работы совместно с командами условного перехода.

К группе команд операций с битами относятся команды, выполняющие установку или сброс заданного разряда РОН или РВВ.

Команды управления системой:

  •  NOP- пустая команда;
  •  SLEEP - перевод микроконтроллера в режим пониженного энергопотребления;
  •  WDR - сброс сторожевого таймера.


 

А также другие работы, которые могут Вас заинтересовать

983. Организация работы ОАО Костромская ГРЭС в условиях реструктуризации в электроэнергетике 386.5 KB
  Основой энергетики сегодняшнего дня являются топливные запасы угля, нефти и газа, которые удовлетворяют примерно девяносто процентов энергетических потребностей человечества. Динамика изменения тарифа на электроэнергию за 1999 - 2001 года.
984. Железобетонные плиты перекрытия и покрытия 427.5 KB
  Тепловая обработка входит в технологический процесс изготовления железобетонных изделий и занимает 70-80 % времени всего цикла изготовления изделий. Проектируемый цех по производству многопустотных плит перекрытий производительностью 19000 м3/год планируется разместить на территории действующего завода ОАО СЖБ-3 в городе Витебске.
985. Разработка аппаратной части системы автокалибровки и измерения скалярных параметров СВЧ устройств на базе современных микроконтроллеров 674 KB
  Классификация аппаратуры измерения комплексных параметров СВЧ сигнала. Требования к разрабатываемой системе и постановка задачи. Состав каждого комплекта прибора и требования к конструкции. Разработка аппаратной части измерительной системы Р2- Растр.
986. Месторождение Тенгиз 676 KB
  Геолого-промысловая характеристика месторождения. Определение забойных давлений оценка коэффициентов продуктивности скважин по данным поверхностных замеров. Оценка эффективности закачки газа по результатом гидродинамических исследований скважин. Основы системы оперативного контроля за разработкой нефтегазоконденсатных месторождений на начальной стадии.
987. Проектирование сопроцессора для умножения чисел в обратном коде 417.5 KB
  Разработка функциональной схемы операционного автомата. Особенности реализации Узлов спецпроцессора выполненных на реальных микросхемах. Разработка структурной схемы управляющего автомата. Описание функциональных узлов операционного автомата.
988. Финансово-экономический анализ предприятия агропромышленного комплекса 714 KB
  Классификация основных методов и приемов финансово-экономического анализа предприятия и его информационная база. Виды деятельности, форма собственности и основные технико-экономические показатели предприятия. Анализ статей баланса, их структуры и динамики, оценка ликвидности баланса.
989. Расчет и проектирование коническо-цилиндрического редуктора 739.5 KB
  Частота вращения тихоходного вала редуктора. Выбор материалов и допускаемые напряжения. Определение геометрических размеров передач. Определение геометрических размеров зубчатых колес. Определение сил в конической зубчатой передаче. Выбор материалов и допускаемые напряжения.
990. Планирование деятельности предприятия 496 KB
  Составление сметы расходов на производство и реализацию продукции. Определение плановой величины материальных расходов. Расчет величины прочих расходов на производство и реализацию продукции.
991. Электропитающие системы и электрические сети 236 KB
  Баланс активной мощности и выбор генераторов ТЭЦ. Обоснование схемы и напряжения электрической сети. Регулирование напряжения. Расчет установившегося режима электрической сети. Приведение нагрузок узлов и мощности ТЭЦ к стороне ВН.