Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Относительная адресация памяти программ




После операций RJMP или RCALL выполнение программы про­должается с адреса PC+k+l. Относительный адрес к может состав­лять от-2048 до 2047.

 

PC +k

PC+k+1 ->PC

 

Система команд AVR

Арифметические и логические команды

Мнемоника Описание Действие Флаги Циклы
ADD Rd.Rr Сложить два регистра Rd<Rd+Rr Z,C,N,V,H  
ADC Rd.Rr Сложить с переносом Rd<Rd+Rr+C Z,C,N,V,H  
ADIW Rdl.K Сложить слово с константой Rdh,KRdh,l+K Z,C,N,V,S  
SUB Rd.Rr Вычесть два регистра Rd<Rd-Rr Z,C,N,V,H  
SUBI Rd,K Вычесть константу Rd<Rd-K Z,C,N,V,H  
SBIW Rdl.K Вычесть слово с константой Rdh.KRdh.l-K Z,C,N,V,S  
SBC Rd.Rr Вычесть с переносом Rd<Rd-Rr-C Z,C,N,V,H  
SBCI Rd,K Вычесть с переносом Rd<Rd-K-C Z,CSN,V,H  
AND Rd,Rr Логическое И Rd<RdANDRr Z,N,V  
ANDI Rd.K Логическое И Rd<RdANDK Z.N.V  
OR Rd,Rr Логическое ИЛИ Rd<Rd OR Rr Z.N.V  
ORI Rd.K Логическое ИЛИ Rd<RdORK Z.N.V  
EOR Rd.Rr Исключающее ИЛИ Rd<RdXORRr Z,N,V  
COMRd Дополнение до 1 Rd<$FF-Rd Z,C,N,V  
NEGRd Дополнение до 2 Rd<$00 - Rd Z,C,N,V,H  
SBR Rd,K Установить бит(ы) в регистре Rd<Rd OR К Z,N,V  
CBR Rd.K Сбросить бит(ы) в регистре Rd<RdAND(FFh-K) Z,N,V  
INCRd Увеличить на 1 Rd<Rd+1 Z,N,V  
DECRd Уменьшить на 1 Rd<Rd-1 Z,N,V  
TSTRd Проверить на 0 или Rd<RdANDRd Z,N,V  
CLRRd Очистить регистр Rd<RdXORRd Z,N,V  
SERRd Установить регистр Rd<$FF None  

Команды ветвления

Мнемоник Описание Действие Флаги Циклы
RJMPk Относительный переход РС<РС+к+1 None  
LJMP Переход по адресу (Z) PC<Z None  
RCALLk Относительный вызов подпрограм­мы РС<РС+к+1 None  
ICALL Вызов подпрограммы по адресу (Z) PC<Z None  
RET Выход из подпрограммы PC<STACK None  
REfl Выход из прерывания PC<STACK S  
CPSERd.Rr Сравнить, пропуск, если равно if(Rd=Rr) PC<PC+2 или З None 1/2
CP Rd,Rr Сравнить Rd-Rr Z.N.V.C.H  
CPC Rd.Rr Сравнить с переносом Rd-Rr-C Z,N,V,C,H  
CPI Rd,K Сравнить с константой Rd-K Z,N,V,C,H  
BREQk Переход, если равно if(Z=1)PC<PC+k+1 None 1/2
BRNEk Переход, если неравно if(Z=0)PC<PC+k+1 None 1/2
BRCSk Переход, если установлен перенос if(C=1)PC<PC+k+1 None 1/2
BRCCk Переход, если сброшен перенос if(C=O) PC<PC+k+1 None 1/2
BRSHk Переход, если равно или больше if(C=O) PC<PC+k+1 None 1/2
BRLO к Переход, если меньше if(C=1)PC<PC+k+1 None 1/2
BRMIk Переход, если минус if(N=1)PC<PC+k+1 None 1/2
BRPLk Переход, если плюс if(N=O) PC<PC+k+1 None 1/2
BRGEk Переход, если больше или равно со знаком if(NXORV=0)PC<PC+k+1 None 1/2
BRLTk Переход, если меньше нуля со знаком if(NXORV=1)PC<PC+k+1 None 1/2

Команды пересылки

Мнемони Описание Действие Флаги Циклы
MOVRd.Rr Пересылка между регистрами Rd<Rr None  
LDI Rd,K Загрузить константу Rd<K None  
LDRd,X Загрузить регистр непосредственно Rd<(X) None  
LD Rd,X+ Загрузить регистр непосредственно с постинк­рементом Rd<(X),X<X+1 None  
ID Rd,-X Загрузить регистр непосредственно с предва­рительным декрементом X<X-1,Rd<(X) None  
LDRd.Y Загрузить регистр непосредственно Rd<(Y) None  
LD Rd,Y+ Загрузить регистр непосредственно с постинкремент. Rd<(Y),Y<Y+1 None  
LD Rd,-Y Загрузить регистр непосредственно с предва­рительным декрементом Y<Y-1,Rd<(Y) None  
LDD Rd,Y+q Загрузить регистр непосредственно со смеще­нием Rd<(Y+q) None  
U)Rd,Z Загрузить регистр непосредственно Rd<(Z) None  
LD Rd,Z+ Загрузить регистр непосредственно с постинкрементом Rd<(Z),Z<Z+1 None  
LD Rd,-Z Загрузить регистр непосредственно с предварительным декрементом Z<Z-1,Rd<(Z) None  
LDD Rd,Z+q Загрузить регистр непосредственно со смеще­нием Rd<(Z+q) None  
LDS Rd,k Загрузить из ОЗУ Rd<(k) None  
STX,Rr Записать регистр непосредственно (X)<Rr None  
STX+,Rr Записать регистр непосредственно с постинк­рементом (X)<Rr,X<X+1 None  
ST -X,Rr Записать регистр непосредственно с предва­рительным декрементом X<X-1,(X)<Rr None  
STY,Rr Записать регистр непосредственно (Y)<Rr None  
STY+.Rr Записать регистр непосредственно с постинк­рементом (Y)<Rr,Y<Y+1 None  
ST -Y.Rr Записать регистр непосредственно с пред.декрементом Y<Y-1,(Y)<Rr None  
STDY+q.Rr Записать регистр непосредственно со смеще­нием (Y+q)<Rr None  
STZ,Rr Записать регистр непосредственно (Z)<Rr None  
STZ+.Rr Записать регистр непосредственно с постинк­рементом (Z)<Rr,Z<Z+1 None  
ST-Z,Rr Записать регистр непосредственно с предва­рительным декрементом Z<Z-1,(Z)<Rr None  
STDY+q.Rr Запись регистра непосредственно со смещени­ем (Y+q)<Rr None  
STSk.Rr Записать в ОЗУ (k)<Rr None  
LPM Загрузка из памяти программ R0<(Z) None  
IN Rd, P Ввод из порта Rd<P None  
OUTP.Rr Вывод в порт P<Rr None  
PUSH Rr Записать в стек STACK<Rr None  
POPRr Прочитать из стека Rr<STACK None  
Поделиться:





Читайте также:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...