Студопедия — 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; просмотров: 500. Нарушение авторских прав; Мы поможем в написании вашей работы!



Вычисление основной дактилоскопической формулы Вычислением основной дактоформулы обычно занимается следователь. Для этого все десять пальцев разбиваются на пять пар...

Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...

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

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

Условия приобретения статуса индивидуального предпринимателя. В соответствии с п. 1 ст. 23 ГК РФ гражданин вправе заниматься предпринимательской деятельностью без образования юридического лица с момента государственной регистрации в качестве индивидуального предпринимателя. Каковы же условия такой регистрации и...

Седалищно-прямокишечная ямка Седалищно-прямокишечная (анальная) ямка, fossa ischiorectalis (ischioanalis) – это парное углубление в области промежности, находящееся по бокам от конечного отдела прямой кишки и седалищных бугров, заполненное жировой клетчаткой, сосудами, нервами и...

Основные структурные физиотерапевтические подразделения Физиотерапевтическое подразделение является одним из структурных подразделений лечебно-профилактического учреждения, которое предназначено для оказания физиотерапевтической помощи...

Ведение учета результатов боевой подготовки в роте и во взводе Содержание журнала учета боевой подготовки во взводе. Учет результатов боевой подготовки - есть отражение количественных и качественных показателей выполнения планов подготовки соединений...

Сравнительно-исторический метод в языкознании сравнительно-исторический метод в языкознании является одним из основных и представляет собой совокупность приёмов...

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

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