Студопедия — AVR АТMEGA 128
Студопедия Главная Случайная страница Обратная связь

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

AVR АТMEGA 128






 

 

 

ПРИЛОЖЕНИЕ Б
ИНСТРУКЦИИ ПРОЦЕССОРОВ AVR

 

Таблица Б.1 – Арифметические и логические команды

Мнемоника Операнды Описание Операция Флаги Циклы
ADD Rd,Rr Суммирование без переноса Rd = Rd + Rr Z,C,N,V,H,S  
ADC Rd,Rr Суммирование с переносом Rd = Rd + Rr + C Z,C,N,V,H,S  
SUB Rd,Rr Вычитание без переноса Rd = Rd - Rr Z,C,N,V,H,S  
SUBI Rd,K8 Вычитание константы Rd = Rd - K8 Z,C,N,V,H,S  
SBC Rd,Rr Вычитание с переносом Rd = Rd - Rr - C Z,C,N,V,H,S  
SBCI Rd,K8 Вычитание константы с переносом Rd = Rd - K8 - C Z,C,N,V,H,S  
AND Rd,Rr Логическое И Rd = Rd · Rr Z,N,V,S  
ANDI Rd,K8 Логическое И с константой Rd = Rd · K8 Z,N,V,S  
OR Rd,Rr Логическое ИЛИ Rd = Rd V Rr Z,N,V,S  
ORI Rd,K8 Логическое ИЛИ с константой Rd = Rd V K8 Z,N,V,S  
EOR Rd,Rr Логическое исключающее ИЛИ Rd = Rd EOR Rr Z,N,V,S  
COM Rd Побитная Инверсия Rd = $FF - Rd Z,C,N,V,S  
NEG Rd Изменение знака (Доп. код) Rd = $00 - Rd Z,C,N,V,H,S  
SBR Rd,K8 Установить бит (биты) в регистре Rd = Rd V K8 Z,C,N,V,S  
CBR Rd,K8 Сбросить бит (биты) в регистре Rd = Rd · ($FF - K8) Z,C,N,V,S  
INC Rd Инкрементировать значение регистра Rd = Rd + 1 Z,N,V,S  
DEC Rd Декрементировать значение регистра Rd = Rd -1 Z,N,V,S  
TST Rd Проверка на ноль либо отрицательность Rd = Rd · Rd Z,C,N,V,S  
CLR Rd Очистить регистр Rd = 0 Z,C,N,V,S  
SER Rd Установить регистр Rd = $FF None  
ADIW Rdl,K6 Сложить константу и слово Rdh:Rdl = Rdh:Rdl + K6 Z,C,N,V,S  
SBIW Rdl,K6 Вычесть константу из слова Rdh:Rdl = Rdh:Rdl - K6 Z,C,N,V,S  
MUL Rd,Rr Умножение чисел без знака R1:R0 = Rd * Rr Z,C  
MULS Rd,Rr Умножение чисел со знаком R1:R0 = Rd * Rr Z,C  
MULSU Rd,Rr Умножение числа со знаком с числом без знака R1:R0 = Rd * Rr Z,C  
FMUL Rd,Rr Умножение дробных чисел без знака R1:R0 = (Rd * Rr) << 1 Z,C  
FMULS Rd,Rr Умножение дробных чисел со знаком R1:R0 = (Rd *Rr) << 1 Z,C  
FMULSU Rd,Rr Умножение дробного числа со знаком с числом без знака R1:R0 = (Rd * Rr) << 1 Z,C  

Таблица Б.2 – Команды ветвления

Мнемоника Опе­ранды Описание Операция Флаги Циклы
           
RJMP k Относительный переход PC = PC + k +1 None  
IJMP Нет Косвенный переход на (Z) PC = Z None  
EIJMP Нет Расширенный косвенный пере­ход на (Z) STACK = PC+1, PC(15:0) = Z, PC(21:16) = EIND None  
JMP k Переход PC = k None  
RCALL k Относительный вызов подпро­граммы STACK = PC+1, PC = PC+k+1 None 3/4*
ICALL Нет Косвенный вызов (Z) STACK = PC+1, PC = Z None 3/4*
EICALL Нет Расширенный косвенный вы­зов (Z) STACK = PC+1, PC(15:0) = Z, PC(21:16) =EIND None 4*
CALL k Вызов подпрограммы STACK = PC+2, PC = k None 4/5*
RET Нет Возврат из подпрограммы PC = STACK None 4/5*
RETI Нет Возврат из прерывания PC = STACK I 4/5*
CPSE Rd,Rr Сравнить, пропустить если равны if (Rd ==Rr) PC = PC 2 or 3 None 1/2/3
CP Rd,Rr Сравнить Rd -Rr Z,C,N,V,H,S  
CPC Rd,Rr Сравнить с переносом Rd - Rr - C Z,C,N,V,H,S  
CPI Rd,K8 Сравнить с константой Rd - K Z,C,N,V,H,S  
SBRC Rr,b Пропустить, если бит в реги­стре очищен if(Rr(b)==0) PC = PC+2 or 3 None 1/2/3
SBRS Rr,b Пропустить, если бит в регистре установлен if(Rr(b)==1) PC = PC+2 or 3 None 1/2/3
SBIC P,b Пропустить, если бит в порту очищен if(I/O(P,b)==0) PC = PC+ or 3 None 1/2/3
SBIS P,b Пропустить, если бит в порту установлен if(I/O(P,b)==1) PC = PC+2 or 3 None 1/2/3
BRBC s,k Перейти, если флаг в SREG очищен if(SREG(s)==0) PC = PC+k+1 None 1/2
BRBS s,k Перейти, если флаг в SREG установлен if(SREG(s)==1) PC = PC+k+1 None 1/2
BREQ k Перейти, если равно if(Z==1) PC = PC + k + 1 None 1/2
BRNE k Перейти, если не равно if(Z==0) PC = PC + k + 1 None 1/2
BRCS k Перейти, если перенос установлен if(C==1) PC = PC + k + 1 None 1/2
BRCC k Перейти, если перенос очищен if(C==0) PC = PC + k + 1 None 1/2
BRSH k Перейти, если равно или больше if(C==0) PC = PC + k + 1 None 1/2
BRLO k Перейти, если меньше if(C==1) PC = PC + k + 1 None 1/2
BRMI k Перейти, если минус if(N==1) PC = PC + k + 1 None 1/2
BRPL k Перейти, если плюс if(N==0) PC = PC + k + 1 None 1/2
BRGE k Перейти, если больше или равно (со знаком) if(S==0) PC = PC + k + 1 None 1/2
BRLT k Перейти, если меньше (со знаком) if(S==1) PC = PC + k + 1 None 1/2

 

Продолжение таблицы Б.2

           
BRHS k Перейти, если флаг внутреннего переноса установлен if(H==1) PC = PC + k + 1 None 1/2
BRHC k Перейти, если флаг внутреннего переноса очищен if(H==0) PC = PC + k + 1 None 1/2
BRTS k Перейти, если флаг T установлен if(T==1) PC = PC + k + 1 None 1/2
BRTC k Перейти, если флаг T очищен if(T==0) PC = PC + k + 1 None 1/2
BRVS k Перейти, если флаг переполнения установлен if(V==1) PC = PC + k + 1 None 1/2
BRVC k Перейти, если флаг переполнения очищен if(V==0) PC = PC + k + 1 None 1/2
BRIE k Перейти, если прерывания разрешены if(I==1) PC = PC + k + 1 None 1/2
BRID k Перейти, если прерывания запрещены if(I==0) PC = PC + k + 1 None 1/2

* Для операций доступа к данным количество циклов указано при условии доступа к внутренней памяти данных, и не корректно при работе с внешним ОЗУ. Для инструкций CALL, ICALL, EICALL, RCALL, RET и RETI необходимо добавить три цикла плюс по два цикла для каждого ожидания в контроллерах с PC, меньшим 16 бит (128KB памяти программ). Для устройств с памятью программ, свыше 128KB, добавьте пять циклов плюс по три цикла на каждое ожидание.

 

Таблица Б.3 – Команды пересылки данных

Мнемоника Операнды Описание Операция Флаги Циклы
MOV Rd,Rr Скопировать регистр Rd = Rr  
MOVW Rd,Rr Скопировать пару регистров Rd+1:Rd = Rr+1:Rr, r,d even  
LDI Rd,K8 Загрузить константу Rd = K  
LDS Rd,k Прямая загрузка Rd = (k) 2*
LD Rd,X Косвенная загрузка Rd = (X) 2*
LD Rd,X+ Косвенная загрузка с пост-инкрементом Rd = (X), X=X+1 2*
LD Rd,-X Косвенная загрузка с пре-декрементом X=X-1, Rd = (X) 2*
LD Rd,Y Косвенная загрузка Rd = (Y) 2*
LD Rd,Y+ Косвенная загрузка с пост-инкрементом Rd = (Y), Y=Y+1 2*
LD Rd,-Y Косвенная загрузка с пре-декрементом Y=Y-1, Rd = (Y) 2*
LDD Rd,Y+q Косвенная загрузка с замещением Rd = (Y+q) 2*
LD Rd,Z Косвенная загрузка Rd = (Z) 2*
LD Rd,Z+ Косвенная загрузка с пост-инкрементом Rd = (Z), Z=Z+1 2*
LD Rd,-Z Косвенная загрузка с пре-декрементом Z=Z-1, Rd = (Z) 2*
LDD Rd,Z+q Косвенная загрузка с замещением Rd = (Z+q) 2*
STS k,Rr Прямое сохранение (k) = Rr 2*
ST X,Rr Косвенное сохранение (X) = Rr 2*
ST X+,Rr Косвенное сохранение с пост-инкрементом (X) = Rr, X=X+1 2*
ST -X,Rr Косвенное сохранение с пре-декрементом X=X-1, (X)=Rr 2*
ST Y,Rr Косвенное сохранение (Y) = Rr 2*
ST Y+,Rr Косвенное сохранение с пост-инкрементом (Y) = Rr, Y=Y+1  
ST -Y,Rr Косвенное сохранение с пре-декрементом Y=Y-1, (Y) = Rr  
ST Y+q,Rr Косвенное сохранение с замещением (Y+q) = Rr  
ST Z,Rr Косвенное сохранение (Z) = Rr  
ST Z+,Rr Косвенное сохранение с пост-инкрементом (Z) = Rr, Z=Z+1  
ST -Z,Rr Косвенное сохранение с пре-декрементом Z=Z-1, (Z) = Rr  
ST Z+q,Rr Косвенное сохранение с замещением (Z+q) = Rr  
LPM Нет Загрузка из программной памяти R0 = (Z)  
LPM Rd,Z Загрузка из программной памяти Rd = (Z)  
LPM Rd,Z+ Загрузка из программной памяти с пост-инкрементом Rd = (Z), Z=Z+1  
ELPM Нет Расширенная загрузка из памяти программ R0 = (RAMPZ:Z)  
ELPM Rd,Z Расширенная загрузка из памяти программ Rd = (RAMPZ:Z)  
ELPM Rd,Z+ Расширенная загрузка из программной памяти с пост-инкрементом Rd = (RAMPZ:Z), Z = Z+1  
SPM Нет Сохранение в программной памяти (Z) = R1:R0 -
ESPM Нет Расширенное сохранение в памяти программ (RAMPZ:Z) = R1:R0 -
IN Rd,P Чтение порта Rd = P  
OUT P,Rr Запись в порт P = Rr  
PUSH Rr Занесение регистра в стек STACK = Rr  
POP Rd Извлечение регистра из стека Rd = STACK  

* Для операций доступа к данным количество циклов указано при условии доступа к внутренней памяти данных, и не корректно при работе с внешним ОЗУ. Для инструкций LD, ST, LDD, STD, LDS, STS, PUSH и POP необходимо добавить один цикл.

 

Таблица Б.4 – Команды для работы с битами

Мнемоника Опе ранды Описание Операция Флаги Циклы
LSL Rd Логический сдвиг влево Rd(n+1)=Rd(n), Rd(0)=0, C=Rd(7) Z,C,N,V,H,S  
LSR Rd Логический сдвиг вправо Rd(n)=Rd(n+1), Rd(7)=0, C=Rd(0) Z,C,N,V,S  
ROL Rd Циклический сдвиг влево через C Rd(0)=C, Rd(n+1)=Rd(n), C=Rd(7) Z,C,N,V,H,S  
ROR Rd Циклический сдвиг вправо через C Rd(7)=C, Rd(n)=Rd(n+1), C=Rd(0) Z,C,N,V,S  
ASR Rd Арифметический сдвиг вправо Rd(n)=Rd(n+1), n=0,...,6 Z,C,N,V,S  
SWAP Rd Перестановка тетрад Rd(3..0) = Rd(7..4), Rd(7..4) = Rd(3..0) None  
BSET s Установка флага SREG(s) = 1 SREG(s)  
BCLR s Очистка флага SREG(s) = 0 SREG(s)  
SBI P,b Установить бит в порту I/O(P,b) = 1 None  
CBI P,b Очистить бит в порту I/O(P,b) = 0 None  
BST Rr,b Сохранить бит из регистра в T T = Rr(b) T  
BLD Rd,b Загрузить бит из T в регистр Rd(b) = T None  
SEC Нет Установить флаг переноса C =1 C  
CLC Нет Очистить флаг переноса C = 0 C  
SEN Нет Установить флаг отрицательного числа N = 1 N  
CLN Нет Очистить флаг отрицательного числа N = 0 N  
SEZ Нет Установить флаг нуля Z = 1 Z  
CLZ Нет Очистить флаг нуля Z = 0 Z  
SEI Нет Установить флаг прерываний I = 1 I  
CLI Нет Очистить флаг прерываний I = 0 I  
SES Нет Установить флаг числа со знаком S = 1 S  
CLN Нет Очистить флаг числа со знаком S = 0 S  
SEV Нет Установить флаг переполнения V = 1 V  
CLV Нет Очистить флаг переполнения V = 0 V  
SET Нет Установить флаг T T = 1 T  
CLT Нет Очистить флаг T T = 0 T  
SEH Нет Установить флаг внутреннего переноса H = 1 H  
CLH Нет Очистить флаг внутреннего переноса H = 0 H  
NOP Нет Нет операции Нет None  
SLEEP Нет Спать (уменьшить энергопотребление) Смотрите описание инструкции None  
WDR Нет Сброс сторожевого таймера Смотрите описание инструкции None  

 

 

В языке Assembler нет различия в регистре символов.

Операнды могут быть следующих видов:

§ Rd: Результирующий (и исходный) регистр в регистровом файле;

§ Rr: Исходный регистр в регистровом файле;

§ b: Константа (3 бита) или константное выражение;

§ s: Константа (3 бита) или константное выражение;

§ P: Константа (5-6 бит) или константное выражение;

§ K6; Константа (6 бит) или константное выражение;

§ K8: Константа (8 бит) или константное выражение;

§ k: Константа (размер зависит от инструкции), или константное выражение;

§ q: Константа (6 бит) или константное выражение;

§ Rdl: R24, R26, R28, R30. Для инструкций ADIW и SBIW;

§ X,Y,Z: Регистры косвенной адресации (X=R27:R26, Y=R29:R28, Z=R31:R30).







Дата добавления: 2015-09-07; просмотров: 497. Нарушение авторских прав; Мы поможем в написании вашей работы!



Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...

Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...

Важнейшие способы обработки и анализа рядов динамики Не во всех случаях эмпирические данные рядов динамики позволяют определить тенденцию изменения явления во времени...

ТЕОРЕТИЧЕСКАЯ МЕХАНИКА Статика является частью теоретической механики, изучающей условия, при ко­торых тело находится под действием заданной системы сил...

Дезинфекция предметов ухода, инструментов однократного и многократного использования   Дезинфекция изделий медицинского назначения проводится с целью уничтожения патогенных и условно-патогенных микроорганизмов - вирусов (в т...

Машины и механизмы для нарезки овощей В зависимости от назначения овощерезательные машины подразделяются на две группы: машины для нарезки сырых и вареных овощей...

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

Опухоли яичников в детском и подростковом возрасте Опухоли яичников занимают первое место в структуре опухолей половой системы у девочек и встречаются в возрасте 10 – 16 лет и в период полового созревания...

Способы тактических действий при проведении специальных операций Специальные операции проводятся с применением следующих основных тактических способов действий: охрана...

Искусство подбора персонала. Как оценить человека за час Искусство подбора персонала. Как оценить человека за час...

Studopedia.info - Студопедия - 2014-2024 год . (0.012 сек.) русская версия | украинская версия