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



Шрифт зодчего Шрифт зодчего состоит из прописных (заглавных), строчных букв и цифр...

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

Практические расчеты на срез и смятие При изучении темы обратите внимание на основные расчетные предпосылки и условности расчета...

Функция спроса населения на данный товар Функция спроса населения на данный товар: Qd=7-Р. Функция предложения: Qs= -5+2Р,где...

ТРАНСПОРТНАЯ ИММОБИЛИЗАЦИЯ   Под транспортной иммобилизацией понимают мероприятия, направленные на обеспечение покоя в поврежденном участке тела и близлежащих к нему суставах на период перевозки пострадавшего в лечебное учреждение...

Кишечный шов (Ламбера, Альберта, Шмидена, Матешука) Кишечный шов– это способ соединения кишечной стенки. В основе кишечного шва лежит принцип футлярного строения кишечной стенки...

Принципы резекции желудка по типу Бильрот 1, Бильрот 2; операция Гофмейстера-Финстерера. Гастрэктомия Резекция желудка – удаление части желудка: а) дистальная – удаляют 2/3 желудка б) проксимальная – удаляют 95% желудка. Показания...

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

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

Закон Гука при растяжении и сжатии   Напряжения и деформации при растяжении и сжатии связаны между собой зависимостью, которая называется законом Гука, по имени установившего этот закон английского физика Роберта Гука в 1678 году...

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