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 - сброс сторожевого таймера.


 

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

47659. Технологическое проектирование автотранспортного производства 665 KB
  Цель курсового проекта – формирование научных, профессиональных знаний и навыков в области технической эксплуатации подвижного состава автомобильного транспорта. При изучении дисциплины студенты получают знания о современных технологических процессах технического обслуживания и текущего ремонта автомобилей, об особенностях проектирования и реализации технологических процессов технической эксплуатации на предприятиях автомобильного транспорта
47660. Методичні вказівки. Чисельні методи в інформатиці 1.52 MB
  У тому випадку, коли заздалегідь невідомий ступінь багаточлена Лагранжа, який необхідно використовувати для забезпечення необхідної точності, уживають підхід, заснований на рекурентній схемі організації обчислень, яка звісна, як схема Ейткена
47661. Оптимизация распределения нагрузки электроэнергетической системы между работающими в ней электростанциями и их энергоблоками 208.5 KB
  Методические указания к выполнению лабораторной работы «Оптимизация распределения нагрузки электроэнергетической системы между работающими в ней электростанциями и их энергоблоками» по дисциплине «Автоматизация энергосистем» для студентов
47664. Методические рекомендации. Мировая экономика 572 KB
  Экономика профиль Мировая экономика: общие требования по организации выполнения работы требования по ее оформлению внедрению результатов работы рекомендации при подготовке к защите работы. Организация выполнения выпускной квалификационной работы дипломной работы
47667. Элементы и системы автоматизированного пневмогидропривода 3.55 MB
  В качестве задания даны основные схемы пневматических и гидравлических линейных и поворотных модулей приводов. Представлены инженерные методики расчета конструктивных и динамических параметров привода. Представлена методика построения пневматической системы управления. Приведены основные необходимые для расчетов справочные данные.