Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Методы адресации. Форматы команд

Читайте также:
  1. A. Методы измерения мертвого времени
  2. HR– менеджмент: технологии, функции и методы работы
  3. I. 2.4. Принципы и методы исследования современной психологии
  4. III команда
  5. III. Методы оценки знаний, умений и навыков на уроках экономики
  6. III. Общелогические методы и приемы исследования.
  7. IV. Биогенетические методы, способствующие увеличению продолжительности жизни

При создании программы для микроконтроллера на языке Ассемблер разработчик оперирует программно доступными ресурсами микропроцессорной системы. У микроконтроллера ATmega16 эти ресурсы включают: программно доступные регистры микроконтроллера и внутреннюю память данных.

Каждая команда языка Ассемблер “сообщает” процессору выполняемую операцию и методы доступа к операндам или место размещения операндов.

Обрабатываемые в процессоре микроконтроллера данные (операнды) могут располагаться в регистрах РОН, в ячейках памяти или в регистрах ввода/вывода. В вычислительной системе с общей шиной данных, к которой относится и микроконтроллер, любой из этих источников данных имеет уникальный адрес. Способ задания адреса операнда (способ адресации) определяется командой. Название способа адресации определяется, в основном, местом размещения операнда.

Напоминаем, что команда может размещаться в одной или двух ячейках программной памяти, т.е. имеет длину 16 или 32 разряда. Часть разрядов команды, называемая кодом операции (КОП), определяет вид выполняемой процессором операции: сложение, вычитание, сдвиг, пересылка и др. Эти разряды поступают на входы дешифратора выбора устройства в АЛУ: сумматор, комплект схем И, комплект схем ИЛИ и др.. Кроме того, код операции определяет способ адресации операндов. Другая часть разрядов является кодом адреса или кодом операнда.

Регистровая адресация. Операнд(ы) размещаются в регистрах РОН. Адрес(а) регистров указываются в команде соответствующими разрядами команды. Пример двухоперандной команды сложения двух регистров ADD Rd,Rr (результат помещается в регистр на место первого операнда). Символы ddddd определяют адрес регистра хранения первого операнда. Символы rrrrr определяют адрес регистра хранения второго операнда. Выполняемая операция условно обозначается следующим образом: Rd Rd + Rr – сложение значений в регистрах Rd и Rr и помещение результата в регистр Rd.

 

Номера Разрядов                                
Команда             r d d d d d r r r r
  Разряды кода операции (КОП)   Адрес регистра Rd (операнда 1) Адрес регистра Rr (операнда 2)
                                       

 

 
 

 
 
 


Рисунок 6

 

Разряды команды 15-10 - поле кода операции. Часть этих разрядов подключена к АЛУ и предназначена для выбора устройства в АЛУ (в данном случае в АЛУ будет выбран сумматор). Разряды адреса регистра второго операнда (rrrrr) разъединены. Помещение результата операции на место регистра первого операнда определяется кодом операции. Если первый операнд хранится в регистре r6 (адрес 00110), а второй – в регистре r23 (адрес 10111), то код команды будет 0000 1110 0110 0111 или $0E67. Результат будет помещен в регистр r6.

Пример однооперандной команды INC Rd - добавить единицу в регистр РОН. Выполняемая операция RdRd+1. Формат команды имеет вид, представленный на рис. 7.

 

Номера Разрядов                                
Команда               d d d d d        
  Разряды кода операции   Адрес регистра РОН   Разряды кода операции
                                     

Рисунок 7

Рисунок 8

Непосредственная адресация. Операнд находится в самой команде и размещается за кодом операции. Особенностью микроконтроллеров семейства AVR является использование в командах с непосредственной адресацией только регистров R16 – R31. Примером команды с непосредственной адресацией является команда загрузки регистра байтом. Ассемблерная запись этой команды LDI Rd,D8. Условная запись операции: RdD8 (восьмиразрядные данные помещаются в регистр Rd). Формат команды приведен на рисунке 9.

 

 

Номера разрядов                                
Команда         D 7 D6 D5 D4 d d d d D3 D2 D1 D0
Описа-ние Код операции Старшие разряды операнда D8 Адрес регистра R16 –R31 Младшие разряды операнда D8
                                       

 

Рисунок 9

 

 

Разряды операнда D8 разнесены по команде по четыре разряда. Адрес регистра указывается только четырьмя его младшими разрядами (старший разряд адреса регистра РОН равный 1 определяется кодом операции). Для конкретной команды LDI R21,$D7(шестнадцатиричный операнд D7 загружается в регистр R21) код команды: 1110 1101 0101 0111 или $ED77. Здесь третья тетрада 0101 – младшие разряды номера регистра R21. Можно сказать, что старший разряд адреса регистра R21 равный единице определяется “по умолчанию”. Следовательно, получается адрес регистра 10101=21.

Прямая адресация. Операнд выбирается или помещается в ячейку памяти данных (ОЗУ, РОН или регистр ВВ), адрес которой находится в самой команде. Этот способ адресации используется практически только при обращениях к ячейкам ОЗУ. Такие команды занимают две ячейки программной памяти (два слова или четыре байта или 32 разряда). Первое слово – собственно команда, а второе слово является адресом ячейки памяти данных. Формат двухсловной команды пересылки (сохранения) содержимого регистра в ячейку ОЗУ LDS Rd,ADR имеет вид:

Первое слово команды:

 

 

Номера разрядов                                
Команда               d d d d d        
Описа-ние Разряды кода операции   Адрес регистра Rd   Разряды кода операции
                                     

 

Рисунок 10

 

 

Второе слово команды:

 

Номера разрядов                                
Описа-ние Адрес ячейки памяти данных

 

Рисунок 11

 

16-разрядный адрес ячейки памяти ОЗУ, из которой будет считываться содержимое, содержится во втором слове команды. Команда занимает две ячейки программной памяти и выполняется за два цикла. Выполняемая по команде операция Rd(ADR) – загрузить регистр РОН из ячейки ОЗУ, адрес которой в команде.

Примечание: запомнить!!!!: символом “()” обозначается ячейка памяти, а значение в скобках является адресом ячейки или указывает на регистр, в котором размещается ее адрес.

Пример: LDS R4,100 – загрузить R4 содержимым ячейки ОЗУ, адрес которой 100 (100 – десятичное значение). Код команды: 1001 0010 0100 0000 0000 0000 0110 0100 или $9240 0064.

 

Косвенная регистровая адресация. Операнд выбирается из ячейки или помещается в ячейку памяти, адрес которой находится в регистре, определяемом кодом операции. В качестве адресного регистра может использоваться любой из регистров X,Y,Z. Пример команды LDS Rd,X. Выполняемая операция: Rd(X) - загрузка регистра Rd содержимым ячейки ОЗУ, адрес которой выбирается из регистра Х. Формат команды приведен на рисунке 12.

 

Номера Разрядов                                
Команда               d d d d d        
Описа-ние Разряды кода операции   Адрес регистра - приемника Rd   Разряды кода операции
                                     

 

Рисунок 12

 

Разряды кода операции распределены по коду команды. Используемый в качестве адресного регистр (X,Y,Z) определяется кодом операции.

Косвенная адресация к памяти данных с постинкрементом и преддекрементом. Эти способы являются разновидностями способа косвенной регистровой адресации. В случае постинкремента после выполнения пересылки операнда, с использованием косвенно адресуемой ячейки, содержимое адресного регистра (X,Y,Z) увеличивается на единицу, а в случае преддекремента предварительно содержимое адресного регистра уменьшается на единицу, а потом производится обращение к ячейке памяти (запись или считывание). Такой способ адресации позволяет ускорить доступ к массивам данных (становится не нужной команда инкремента или декремента адреса ячейки). Формат команд аналогичен формату с косвенной регистровой адресацией. Примеры команд:

LD Rd,X+ Rd(X), X+1

ST -Y,Rr Y-1, (Y)Rr

Косвенная адресация к памяти данных со смещением. Этот способ является также косвенным, но адрес ячейки памяти является суммой содержимого регистра Y или Z и смещения q, заданного в самой команде. Для смещения используются шесть разрядов, следовательно, предельные значения смещения 0 и 63.

Пример команды: LDD Rd,Z+q Выполняемая операция: Rd(Z+q) – загрузка регистра РОН из ячейки памяти, адрес которой является суммой содержимого регистра Z и смещения q.

Формат команды (рисунок 13), кроме кода операции содержит шесть разрядов смещения и пять разрядов адреса регистра РОН.

 

Номера Разрядов                                
Команда     q   q q   d d d d d   q q q
Описа-ние Разряды кода операции и старшие разряды q   Адрес регистра - приемника   Разряды кода операции и q
                                     

 

Рисунок 13

 

 

Стековая адресация. Этот способ адресации является разновидностью косвенной адресации, но адрес ячейки ОЗУ (стека) выбирается из указателя стека SP. Команда загрузки в стек: PUSH Rr. Выполняемая операция: (SP)Rr, SP-1 – содержимое регистра РОН копируется в ячейку ОЗУ, адрес которой в указателе стека SP (в стек) и затем содержимое указателя стека уменьшается на 1. Формат команды аналогичен формату команды с косвенной адресацией. Указание на использование регистра SP находится в коде операции.

Команда чтения из стека: POP Rd. Выполняемая операция: SP+1, Rd(SP) – содержимое указателя стека SP увеличивается на 1 и затем содержимое ячейки ОЗУ(стека), адрес которой выбирается из указателя стека, копируется в регистр РОН Rd. Так как стек “растет” в сторону младших адресов, то целесообразно начало стека организовать в старшей ячейке ОЗУ. Так как стек используется практически в любой программе, то первыми командами должны быть команды размещения в указателе стека адреса начала стека.

Принцип стека: “ последнее загруженное значение считывается первым”.

 


Дата добавления: 2015-07-20; просмотров: 138 | Нарушение авторских прав


Читайте в этой же книге: УПРАВЛЯЮЩИЕ СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ. | Особенности микроконтроллеров | Условное графическое обозначение микроконтроллера | Организация программной памяти | Организация памяти данных | Команды передачи данных (пересылки) | Команды передачи управления | Команды сдвигов и операций с битами | Встроенные устройства | Подсистема прерываний микроконтроллера |
<== предыдущая страница | следующая страница ==>
Арифметико-логическое устройство и регистр состояния процессора| Система команд

mybiblioteka.su - 2015-2024 год. (0.011 сек.)