Система команд 8-ми разрядных RISC микроконтроллеров AVR
.pdfÊÒÖ-ÌÊ
Наши координаты:
Москва, 1-й Щемиловский пер, 16, 2 подъезд, 2 этаж Тел.: (095) 972 3416, 973 1855, 973 1923, факс 973 1864 E-mail: cec-mc@mega.ru
Наш сервер http://www.cec-mc.ru
ПОЛНЫЙ КОМПЛЕКС РАЗРАБОТКИ ЭЛЕКТРОННЫХ ИЗДЕЛИЙ ЛЮБОЙ СЛОЖНОСТИ, ВКЛЮЧАЮЩИЙ В СЕБЯ ИЗГОТОВЛЕНИЕ ОПЫТНОГО ОБРАЗ ЦА
ПРОИЗВОДСТВО ИЗДЕЛИЙ ПО ТЕХНИЧЕСКОЙ ДОКУМЕНТАЦИИ ЗАКАЗ ЧИКА
ПРОЕКТИРОВАНИЕ ПЕЧАТНЫХ ПЛАТ ЛЮБОЙ СЛОЖНОСТИ КАК С ПРИНЦИПИАЛЬНОЙ СХЕМЫ, ТАК И ИСПОЛНЕНИЕ ПРОЕКТА С ТЕХНИЧЕСКОГО ЗАДАНИЯ
ИЗГОТОВЛЕНИЕ ПЕЧАТНЫХ ПЛАТ ДО 5 КЛАССА, ДО 24 СЛОЕВ, С ПОЛНЫМ ЭЛЕКТРОКОНТРОЛЕМ
МОНТАЖ ПЕЧАТНЫХ ПЛАТ ЛЮБОЙ СЛОЖНОСТИ ВКЛЮЧАЯ ПОВЕРХНОСТНЫЙ, В ТОМ ЧИСЛЕ КОРПУСОВ BGA
ИЗГОТОВЛЕНИЕ ШТАМПОВАННЫХ И ФРЕЗЕРОВАННЫХ КОРПУСОВ ДЛЯ ПРОМЫШЛЕННОЙ АППАРАТУРЫ
КОМПЛЕКСНЫЕ ПОСТАВКИ ЭЛЕКТРОННЫХ КОМПОНЕНТОВ ДЛЯ ВЫПУСКАЕМЫХ ИЗДЕЛИЙ
165
ATMEL |
ÊÒÖ-ÌÊ |
СИСТЕМА КОМАНД
8-РАЗРЯДНЫХ RISC МИКРОКОНТРОЛЛЕРОВ
СЕМЕЙСТВА AVR
166
ÊÒÖ-ÌÊ
Система команд 8-разрядных RISC микроконтроллеров семейства AVR.
Принятые обозначения
Регистр статуса (SREG): SREG: Регистр статуса
C:Флаг переноса
Z:Флаг нулевого значения
N:Флаг отрицательного значения
V:Флаг-указатель переполнения дополнения до двух
S:NV, Для проверок со знаком
H:Флаг полупереноса
T:Флаг пересылки, используемый
командами BLD и BST
I:Флаг разрешения/запрещения глобального прерывания
Регистры и операнды:
Rd: |
Регистр назначения (и источник) в |
|
регистровом файле |
Rr: |
Регистр источник в регистровом файле |
R:Результат выполнения команды
K:Литерал или байт данных (8 бит)
k:Данные адреса константы для счетчика программ
b:Бит в регистровом файле или I/O
регистр (3 бита)
s:Бит в регистре статуса (3 бита)
Сводная таблица условных переходов
X, Y, Z: Регистр косвенной адресации (X=R27:R26, Y=R29:R28, Z=R31:R30)
P:Адрес I/O порта
q:Смещение при прямой адресации (6 бит)
I/O регистры
RAMPX, RAMPY, RAMPZ: Регистры связанные с X, Y и Z регистрами, обеспечивающие косвенную адресацию всей области СОЗУ микроконтроллера с объемом СОЗУ более 64 Кбайт.
Ñòåê:
STACK: Стек для адреса возврата и опущенных в стек регистров
SP: Указатель стека
Флаги:
<=> Флаг, на который воздействует команда
0: Очищенный командой Флаг
1: Установленный командой флаг -: Флаг, на который не воздействует
команда
Тестирование |
Булево |
|
|
Мнемоника |
Комплементарное |
Булево |
Мнемоника |
Комментарий |
||||||||||||||||||
условия |
выражение |
|
условие |
выражение |
|
|
||||||||||||||||||||
Rd > Rr |
Z (N |
|
|
|
V)=0 |
BRLT* |
Rd < Rr |
Z+(N |
|
|
|
V)=1 |
BRGE* |
Со знаком |
||||||||||||
Rd > Rr |
(N |
|
|
V)=0 |
BRGE |
Rd < Rr |
(N |
|
|
V)=1 |
BRLT |
Со знаком |
||||||||||||||
|
|
|
|
|||||||||||||||||||||||
|
|
|
|
|
||||||||||||||||||||||
Rd = Rr |
Z=1 |
|
|
|
|
|
|
|
|
|
BREQ |
Rd = Rr |
Z=0 |
|
|
|
|
BRNE |
Со знаком |
|||||||
Rd |
< |
Rr |
Z+(N |
|
|
|
|
|
|
|
V)=1 |
BRGE* |
Rd > Rr |
Z N |
|
|
|
V)=0 |
BRLT* |
Со знаком |
||||||
Rd < Rr |
(N |
|
|
V)=1 |
BRLT |
Rd > Rr |
(N |
|
|
|
|
V)=0 |
BRGE |
Со знаком |
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Rd > Rr |
C+Z=0 |
BRLO* |
Rd < Rr |
C+Z=1 |
BRSH* |
Без знака |
||||||||||||||||||||
Rd > Rr |
C=0 |
|
|
|
|
|
|
|
|
|
BRSH/BRCC |
Rd < Rr |
C=1 |
|
|
|
|
BRLO/BRCS |
Без знака |
|||||||
Rd = Rr |
Z=1 |
|
|
|
|
|
|
|
|
|
BREQ |
Rd = Rr |
Z=0 |
|
|
|
|
BRNE |
Без знака |
|||||||
Rd |
< |
Rr |
C+Z=1 |
BRSH* |
Rd > Rr |
C+Z=0 |
BRLO* |
Без знака |
||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Rd < Rr |
C=1 |
|
|
|
|
|
|
|
|
|
BRLO/BRCS |
Rd > Rr |
C=0 |
|
|
|
|
BRSH/BRCC |
Без знака |
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Перенос |
C=1 |
|
|
|
|
|
|
|
|
|
BRCS |
Нет переноса |
C=0 |
|
|
|
|
BRCC |
Простой |
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Отрицательное |
N=1 |
|
|
|
|
|
|
|
|
|
BRMI |
Положительное |
N=0 |
|
|
|
|
BRPL |
Простой |
|||||||
значение |
|
|
|
|
|
|
|
|
|
|
|
|
значение |
|
|
|
|
|
|
|
|
|
|
|
||
Переполнение |
V=1 |
|
|
|
|
|
|
|
|
|
BRVS |
Нет переполнения |
V=0 |
|
|
|
|
BRVC |
Простой |
|||||||
Нулевое значение |
Z=1 |
|
|
|
|
|
|
|
|
|
BREQ |
Не нулевое значение |
Z=0 |
|
|
|
|
BRNE |
Простой |
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
* Смена Rd и Rr при операции перед тестированием, т.е. CP Rd,Rr > CP Rr,Rd
167
ATMEL |
|
|
|
|
|
|
|
|
|
|
|
|
|
ÊÒÖ-ÌÊ |
Арифметические и логические команды |
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
||
Ìíåì- |
Îïåð- |
Описание |
Операция |
Флаги |
Ê-âî |
|||||||||
оника |
àíäû |
|
|
|
|
|
|
|
|
|
|
|
|
öèê- |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ëîâ |
|
|
|
|
|
|
|
||||||||
ADD |
Rd,Rr |
Add without Carry - |
Rd< |
Rd + Rr |
Z,C,N,V,H |
1 |
||||||||
|
|
Сложить без переноса |
|
|
|
|
|
|
|
|
|
|
|
|
ADC |
Rd,Rr |
Add with Carry - Сложить с переносом |
Rd< |
Rd + Rr + C |
Z,C,N,V,H |
1 |
||||||||
ADIW |
Rd,K |
Add Immediate to WordСложить |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
непосредственное значение со словом |
Rdh:Rdl< |
Rdh:Rdl + K |
Z,C,N,V |
2 |
||||||||
SUB |
Rd,Rr |
Subtract without Carry - |
Rd< |
Rd - Rr |
Z,C,N,V,H |
1 |
||||||||
|
|
Вычесть без переноса |
|
|
|
|
|
|
|
|
|
|
|
|
SUBI |
Rd,K |
Subtract Immediate - Вычесть |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
непосредственное значение |
Rd< Rd - K |
Z,C,N,V,H |
1 |
|||||||||
SBC |
Rd,Rr |
Subtract with Carry - Вычесть с переносом |
Rd< |
Rd - Rr - C |
Z,C,N,V,H |
1 |
||||||||
SBCI |
Rd,K |
Subtract Immediate with Carry - Вычесть |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
непосредственное значение с переносом |
Rd< |
Rd - K - C |
Z,C,N,V,H |
1 |
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SBIW |
Rd,K |
Subtract Immediate from WordВычесть |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
непосредственное значение из слова |
Rdh:Rdl< Rdh:Rdl - K |
Z,C,N,V |
2 |
|||||||||
|
|
|
|
|
|
|
|
|
||||||
AND |
Rd,Rr |
Logical ANDВыполнить логическое AND |
Rd< |
Rd |
|
Rr |
Z,N,V |
1 |
||||||
ANDI |
Rd,K |
Logical AND with Immediate- |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Выполнить логическое AND |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
c непосредственным значением |
Rd< |
Rd |
|
K |
Z,N,V |
1 |
||||||
|
|
|
|
|
|
|
||||||||
OR |
Rd,Rr |
Logical OR - Выполнить логическое OR |
Rd< |
Rd v Rr |
Z,N,V |
1 |
||||||||
ORI |
Rd,K |
Logical OR with Immediate - |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Выполнить логическое OR с |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
непосредственным значением |
Rd< |
Rd v K |
Z,N,V |
1 |
||||||||
EOR |
Rd,Rr |
Exclusive OR - Выполнить |
Rd< |
Rd |
|
|
|
|
|
Rr |
Z,N,V |
1 |
||
|
|
исключающее OR |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
COM |
Rd |
One’s Complement - Выполнить |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
дополнение до единицы |
Rd< $FF - Rd |
Z,C,N,V |
1 |
|||||||||
NEG |
Rd |
Two’s Complement - Выполнить |
Rd< |
$00 - Rd |
Z,C,N,V,H |
1 |
||||||||
|
|
дополнение до двух |
|
|
|
|
|
|
|
|
|
|
|
|
SBR |
Rd,K |
Set Bits in Register- |
Rd< |
Rd v K |
Z,N,V |
1 |
||||||||
|
|
Установить биты в регистре |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
CBR |
Rd,K |
Clear Bits in Register - |
Rd< |
Rd |
($FF - K) |
Z,N,V |
1 |
|||||||
|
|
Очистить биты в регистре |
|
|
|
|
|
|
|
|
|
|
|
|
INC |
Rd |
Increment - Инкрементировать |
Rd< |
Rd + 1 |
Z,N,V |
1 |
||||||||
DEC |
Rd |
Decrement - Декрементировать |
Rd< Rd - 1 |
Z,N,V |
1 |
|||||||||
TST |
Rd |
Test for Zero or Minus - |
Rd< |
Rd |
|
|
|
|
|
Rd |
Z,N,V |
1 |
||
|
|
Проверить на ноль или минус |
|
|
|
|
|
|
|
|
|
|
|
|
CLR |
Rd |
Clear Register- Очистить регистр |
Rd< |
Rd |
|
|
|
|
|
|
Rd |
Z,N,V |
1 |
|
|
|
|
|
|
|
|
||||||||
SER |
Rd |
Set all bits in Register- |
Rd< |
$FF |
Íåò |
1 |
||||||||
|
|
Установить все биты регистра |
|
|
|
|
|
|
|
|
|
|
|
|
CP |
Rd,Rr |
CompareСравнить |
Rd |
- Rr |
|
|
|
|
|
|
|
Z,C,N,V,H |
1 |
|
CPC |
Rd,Rr |
Compare with Carry - |
Rd - Rr - C |
Z,C,N,V,H |
1 |
|||||||||
|
|
Сравнить с учетом переноса |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
CPI |
Rd,K |
Compare with Immediate- |
Rd - K |
|
|
|
|
|
|
|
Z,C,N,V,H |
1 |
||
|
|
Сравнить c константой |
|
|
|
|
|
|
|
|
|
|
|
|
168
ÊÒÖ-ÌÊ
Команды переходов
Ìíå- |
Îïå- |
Описание |
Операция |
|
Ôëà- |
Ê-âî |
|
ìîíè- |
ðàí- |
|
|
|
|
ãè |
öèê- |
êà |
äû |
|
|
|
|
|
ëîâ |
RJMP |
k |
RelativeJump-Перейтиотносительно |
PC< PC + k + 1 |
|
Íåò |
2 |
|
IJMP |
|
Indirect JumpПерейти косвенно |
PC< |
Z |
|
Íåò |
2 |
JMP |
k |
JumpПерейти |
PC< |
k |
|
Íåò |
3 |
RCALL |
k |
Relative Call to Subroutine - Вызвать |
|
|
|
|
|
|
|
подпрограмму относительно |
PC< |
PC + k + 1 |
|
Íåò |
3 |
ICALL |
|
Indirect Call to Subroutine - Вызвать |
|
|
|
|
|
|
|
подпрограмму косвенно |
PC< |
Z |
|
Íåò |
3 |
CALL |
k |
Long Call to a Subroutine - Выполнить |
|
|
|
|
|
|
|
длинный вызов подпрограммы |
PC< |
k |
|
Íåò |
4 |
RET |
|
Return from Subroutine - |
PC< |
STACK |
|
Íåò |
4 |
|
|
Вернуться из подпрограммы |
|
|
|
|
|
RETI |
|
Return from InterruptВернуться из прерывания |
PC< |
STACK |
|
I |
4 |
CPSE |
Rd,Rr |
Compare Skip if EqualСравнить и |
If Rd = Rr then |
|
|
|
|
|
|
пропустить если равно |
PC< |
PC + 2 (or 3), |
|
Íåò |
1/2/3 |
SBRC |
Rr,b |
Skip if Bit in Register is ClearedПропустить |
If Rr (b) = 0 then PC< |
PC |
|
|
|
|
|
если бит в регистре очищен |
+ 2 (or 3) |
|
Íåò |
1/2/3 |
|
SBRS |
Rr,b |
Skip if Bit in Register is SetПропустить |
If Rr(b) = 1 then PC< |
PC |
|
|
|
|
|
если бит в регистре установлен |
+ 2 (or 3) |
|
Íåò |
1/2/3 |
|
SBIC |
P,b |
Skip if Bit I/O Register is Cleared - Пропустить |
If I/O(P,b) = 0 then PC< |
|
|
||
|
|
если бит в регистре I/O очищен |
PC + 2 (or 3) |
|
Íåò |
1/2/3 |
|
SBIS |
P,b |
Skip if Bit I/O Register is SetПропустить |
If I/O(P,b) = 1 then PC< |
|
|
||
|
|
если бит в регистре I/O установлен |
PC + 2 (or 3) |
|
Íåò |
1/2/3 |
|
BRBS |
s,k |
Branch if Bit in SREG is SetПерейти если |
If SREG(s) = 1 then |
|
|
|
|
|
|
бит в регистре статуса установлен |
PC< |
PC + k +1 |
|
Íåò |
1/2 |
BRBC |
s,k |
Branch if Bit in SREG is Cleared - Перейти |
If SREG(s) = 0 then |
|
|
|
|
|
|
если бит в регистре статуса очищен |
PC< |
PC + k +1 |
|
Íåò |
1/2 |
BREQ |
k |
Branch if EqualПерейти если равно |
If Rd = Rr (Z = 1) then |
|
|
|
|
|
|
|
PC< |
PC + k +1 |
|
Íåò |
1/2 |
BRNE |
k |
Branch if Not EqualПерейти если не равно |
If Rd = Rr (Z = 0) then |
|
|
|
|
|
|
|
PC< |
PC + k +1 |
|
Íåò |
1/2 |
BRCS |
k |
Branch if Carry SetПерейти если флаг |
If Ñ= 1 then |
|
|
|
|
|
|
переноса установлен |
PC< |
PC + k +1 |
|
Íåò |
1/2 |
BRCC |
k |
Branch if Carry ClearedПерейти если |
If Ñ= 0 then |
|
|
|
|
|
|
флаг переноса очищен |
PC< |
PC + k +1 |
|
Íåò |
1/2 |
BRSH |
k |
Branch if Same or Higher (Unsigned) - Перейти |
If Rd > Rr (C = 0) then |
|
|
|
|
|
|
если равно или больше (без знака) |
PC< |
PC + k +1 |
|
Íåò |
1/2 |
BRLO |
k |
Branch if Lower (Unsigned) - Перейти если |
If Rd < Rr (C = 1) then |
|
|
|
|
|
|
меньше (без знака) |
PC< |
PC + k +1 |
|
Íåò |
1/2 |
BRMI |
k |
Branch if Minus - Перейти если минус |
If N = 1 then |
|
Íåò |
1/2 |
|
|
|
|
PC< |
PC + k +1 |
|
|
|
BRPL |
k |
Branch if PlusПерейти если плюс |
If N = 0 then |
|
Íåò |
1/2 |
|
|
|
|
PC< |
PC + k +1 |
|
|
|
BRGE |
k |
Branch if Greater or Equal (Signed)- Перейти |
f Rd > Rr (N V = 0) then |
|
|
||
|
|
еслибольшеилиравно(сучетомзнака) |
PC< PC + k +1 |
|
Íåò |
1/2 |
|
|
|
|
|
|
|
|
|
169
ATMEL |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ÊÒÖ-ÌÊ |
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BRLT |
|
k |
|
BranchifLessThen(Signed)-Перейти |
|
If Rd < Rr (N |
V |
|
= 1) |
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|||||||||
|
|
|
|
еслименьшечем(сознаком) |
|
then PC< PC + k +1 |
|
|
Íåò |
1/2 |
||||||||
BRHS |
|
k |
|
Branch if Half Carry Flag is SetПерейти если |
|
If H = 1 then |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
флагполупереносаустановлен |
|
PC< PC + k +1 |
|
|
Íåò |
1/2 |
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BRHC |
|
k |
|
Branch if Half Carry Flag is Cleared - Перейти |
|
If H = 0 then |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
еслифлагполупереносаочищен |
|
PC< PC + k +1 |
|
|
Íåò |
1/2 |
||||||||
BRTS |
|
k |
|
Branch if T Flag is SetПерейти если |
|
If T = 1 then |
|
|
|
|
|
|
|
Íåò |
1/2 |
|||
|
|
|
|
флагTустановлен |
|
PC< PC + k +1 |
|
|
|
|
|
|
||||||
BRTC |
|
k |
|
Branch if T Flag is ClearedПерейти |
|
If T = 0 then |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
если флаг T очищен |
|
PC< PC + k +1 |
|
|
Íåò |
1/2 |
||||||||
BRVS |
|
k |
|
BranchifOverflowSet-Перейтиесли |
|
If V = 1 then |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
переполнениеустановлено |
|
PC< PC + k +1 |
|
|
Íåò |
1/2 |
||||||||
BRVC |
|
k |
|
BranchifOverflowCleared-Перейтиесли |
|
If V = 0 then |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
переполнениеочищено |
|
PC< PC + k +1 |
|
|
Íåò |
1/2 |
||||||||
BRIE |
|
k |
|
Branch if Global Interrupt is Enabled - Перейти |
|
If I = 1 then |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
еслиглобальноепрерываниеразрешено |
|
PC< PC + k +1 |
|
|
Íåò |
1/2 |
||||||||
BRID |
|
k |
|
Branch if Global Interrupt is Disabled - Перейти |
|
If I = 0 then |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
еслиглобальноепрерываниезапрещено |
|
PC< PC + k +1 |
|
|
Íåò |
1/2 |
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Команды пересылки данных |
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Ìíå- |
|
Îïåð- |
Описание |
|
|
|
|
|
Операция |
|
Ôëà- |
Ê-âî |
||||||
ìîíè- |
àíäû |
|
|
|
|
|
|
|
|
|
|
|
|
ãè |
|
öèê- |
||
êà |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ëîâ |
ELPM |
|
|
|
Extended Load ProgramMemoryРасширенная загрузка |
|
|
|
R0 |
< |
(Z+RAMPZ) |
Íåò |
|
3 |
|||||
|
|
|
|
|
памяти программ |
|
|
|
|
|
|
|
|
|
|
|
|
|
MOV |
Rd,Rr |
|
CopyRegister-Копироватьрегистр |
|
|
|
|
Rd< |
Rr |
|
Íåò |
|
1 |
|||||
LDI |
Rd,K |
|
LoadImmediate-Загрузитьнепосредственноезначение |
|
|
|
|
Rd< |
K |
|
Íåò |
|
1 |
|||||
LDS |
Rd,k |
|
Load Direct from RAM - |
|
|
|
|
Rd< |
(k) |
|
Íåò |
|
3 |
|||||
|
|
|
|
|
ЗагрузитьнепосредственноизСОЗУ |
|
|
|
|
|
|
|
|
|
|
|
|
|
LD |
Rd,X |
|
LD-LoadIndirect-Загрузитькосвенно |
|
|
|
|
Rd< |
(X) |
|
Íåò |
|
2 |
|||||
LD |
Rd,X+ |
|
LoadIndirectandPost-Increment-Загрузить |
|
|
|
|
Rd< |
(X), |
|
|
|
|
|||||
|
|
|
|
|
косвенноинкрементироваввпоследствии |
|
|
|
|
|
X< |
X + 1 |
|
Íåò |
|
2 |
||
LD |
Rd,-X |
|
LoadIndirectandPre-Decrement-Загрузить |
|
|
|
|
X< X - 1, |
|
|
|
|
||||||
|
|
|
|
|
косвеннодекрементировавпредварительно |
|
|
|
|
Rd< |
(X) |
|
Íåò |
|
2 |
|||
LD |
Rd,Y |
|
LoadIndirect-Загрузитькосвенно |
|
|
|
|
Rd< |
(Y) |
|
Íåò |
|
2 |
|||||
LD |
Rd,Y+ |
|
LoadIndirectandPost-Increment-Загрузить |
|
|
|
|
Rd< |
(Y), |
|
|
|
|
|||||
|
|
|
|
|
косвенноинкрементироваввпоследствии |
|
|
|
|
|
Y< |
Y + 1 |
|
Íåò |
|
2 |
||
LD |
Rd,-Y |
|
LoadIndirectandPre-Decrement-Загрузить |
|
|
|
|
Y< Y - 1, |
|
|
|
|
||||||
|
|
|
|
|
косвеннодекрементировавпредварительно |
|
|
|
|
Rd< |
(Y) |
|
Íåò |
|
2 |
|||
LDD |
Rd,Y+q |
|
LoadIndirectwithDisplacement- |
|
|
|
|
Rd< |
(Y + q) |
|
Íåò |
|
2 |
|||||
|
|
|
|
|
Загрузитькосвеннососмещением |
|
|
|
|
|
|
|
|
|
|
|
|
|
LD |
Rd,Z |
|
LoadIndirect-Загрузитькосвенно |
|
|
|
|
Rd< |
(Z) |
|
Íåò |
|
2 |
|||||
LD |
Rd,Z+ |
|
LoadIndirectandPost-Increment-Загрузить |
|
|
|
|
Rd< |
(Z), |
|
|
|
|
|||||
|
|
|
|
|
косвенноинкрементироваввпоследствии |
|
|
|
|
|
Z< |
Z + 1 |
|
Íåò |
|
2 |
||
LD |
Rd,-Z |
|
LoadIndirectandPre-Decrement-Загрузить |
|
|
|
|
Z< Z - 1, |
|
|
|
|
||||||
|
|
|
|
|
косвеннодекрементировавпредварительно |
|
|
|
|
Rd< |
(Z) |
|
Íåò |
|
2 |
|||
LDD |
Rd,Z+q |
|
LoadIndirectwithDisplacement- |
|
|
|
|
Rd< |
(Z + q) |
|
Íåò |
|
2 |
|||||
|
|
|
|
|
Загрузитькосвеннососмещением |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
170
ÊÒÖ-ÌÊ
STS |
k,Rr |
|
StoreDirecttoRAM-ЗагрузитьнепосредственновСОЗУ |
|
|
|
|
|
(k)< Rr |
|
|
|
Íåò |
3 |
|||
ST |
X,Rr |
|
StoreIndirect-Записатькосвенно |
|
|
|
|
|
(X)< Rr |
|
|
|
Íåò |
2 |
|||
ST |
X+,Rr |
|
StoreIndirectandPost-Increment-Записать |
|
|
|
|
|
(X)< Rr, |
|
|
|
|
|
|
||
|
|
|
|
косвенно инкрементировав впоследствии |
|
|
|
|
|
X< |
X + 1 |
|
Íåò |
2 |
|||
ST |
-X,Rr |
|
Store Indirect and Pre-Decrement - Записать |
|
|
|
|
|
X< |
X - 1, |
|
|
|
|
|||
|
|
|
|
косвенно декрементировав предварительно |
|
|
|
|
|
(X)< |
Rr |
|
|
|
Íåò |
2 |
|
ST |
Y,Rr |
|
Store Indirect - Записать косвенно |
|
|
|
|
|
(Y)< |
Rr |
|
|
|
Íåò |
2 |
||
ST |
Y+,Rr |
|
Store Indirect and Post-Increment - Записать |
|
|
|
|
|
(Y) < |
Rr, |
|
|
|
|
|
|
|
|
|
|
|
косвенно инкрементировав впоследствии |
|
|
|
|
|
Y< |
Y + 1 |
|
Íåò |
2 |
|||
ST |
-Y,Rr |
|
Store Indirect and Pre-Decrement - Записать |
|
|
|
|
|
Y< Y - 1, |
|
|
|
|
|
|
||
|
|
|
|
косвенно декрементировав предварительно |
|
|
|
|
|
(Y)< |
Rr |
|
|
|
Íåò |
2 |
|
STD |
Y+q,Rr |
|
Store Indirect with Displacement - |
|
|
|
|
|
(Y + q)< |
Rr |
|
Íåò |
2 |
||||
|
|
|
|
Записать косвенно со смещением |
|
|
|
|
|
|
|
|
|
|
|
|
|
ST |
Z,Rr |
|
Store Indirect - Записать косвенно |
|
|
|
|
|
(Z)< |
Rr |
|
|
|
Íåò |
2 |
||
ST |
Z+,Rr |
|
Store Indirect and Post-Increment - Записать |
|
|
|
|
|
(Z)< |
Rr, |
|
|
|
|
|
|
|
|
|
|
|
косвенно инкрементировав впоследствии |
|
|
|
|
|
Z< |
Z + 1 |
|
Íåò |
2 |
|||
ST |
-Z,Rr |
|
Store Indirect and Pre-Decrement - Записать |
|
|
|
|
|
Z< Z - 1, |
|
|
|
|
|
|
||
|
|
|
|
косвенно декрементировав предварительно |
|
|
|
|
|
(Z)< |
Rr |
|
|
|
Íåò |
2 |
|
STD |
Z+q, Rr |
|
Store Indirect with Displacement - |
|
|
|
|
|
(Z + q)< |
Rr |
|
Íåò |
2 |
||||
|
|
|
|
Записать косвенно со смещением |
|
|
|
|
|
|
|
|
|
|
|
|
|
LPM |
|
|
Load Program Memory - Загрузить байт памяти программ |
|
|
|
R0< |
(Z) |
|
|
|
Íåò |
3 |
||||
IN |
Rd,P |
|
Load an I/O Port to Register - Загрузить данные |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
из порта I/O в регистр |
|
|
|
|
|
Rd< |
P |
|
|
|
Íåò |
1 |
|
OUT |
P,Rr |
|
Store Register to I/O port - Записать данные |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
из регистра в порт I/O |
|
|
|
|
|
P< |
Rr |
|
|
|
Íåò |
1 |
|
PUSH |
Rr |
|
Push Register on Stack - Поместить регистр в стек |
|
|
|
|
|
STACK< |
Rr |
|
Íåò |
2 |
||||
POP |
Rd |
|
Pop Register from Stack - Загрузить регистр из стека |
|
|
|
|
Rd< |
STACK |
|
Íåò |
2 |
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
По-битовые команды и команды тестирования битов |
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
Ìíå- |
|
Опера |
Описание |
Операция |
|
|
Флаги |
|
Ê-âî |
||||||||
ìî- |
|
íäû |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
öèê- |
íèêà |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ëîâ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
LSL |
|
Rd |
Logical Shift LeftЛогически сдвинуть влево |
Rd(n+1)< |
|
|
Rd(n), |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
Rd(0)< |
0, C< |
Rd(7) |
|
Z,C,N,V,H |
1 |
|||||||
LSR |
|
Rd |
Logical Shift RightЛогически сдвинуть вправо |
Rd(n)< |
Rd(n+1), |
|
|
|
|
|
|
||||||
|
|
|
|
|
Rd(7)< |
0, C< |
Rd(0) |
|
Z,C,N,V |
|
1 |
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
ROL |
|
|
Rotate Left trough CarryСдвинуть влево через |
Rd(0)< |
C, |
|
|
|
|
|
|
|
|||||
|
|
|
перенос |
Rd(n+1)< |
Rd(n), |
|
|
|
|
|
|
||||||
|
|
|
|
|
C< |
Rd(7) |
|
|
|
|
Z,C,N,V,H |
1 |
|||||
ROR |
|
Rd |
Rotate Right trough CarryСдвинуть вправо |
Rd(7)< |
C, |
|
|
|
|
|
|
|
|||||
|
|
|
через перенос |
Rd(n)< |
Rd(n+1), |
|
|
|
|
|
|
||||||
|
|
|
|
|
C< |
Rd(0) |
|
|
|
|
Z,C,N,V |
|
1 |
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
ASR |
|
Rd |
Arithmetic Shift RightАрифметически |
Rd(n)< |
|
Rd(n+1), |
|
|
|
|
|
|
|||||
|
|
|
сдвинуть вправо |
n=0...6 |
|
|
|
|
|
|
Z,C,N,V |
|
1 |
||||
SWAP |
Rd |
Swap Nibbles - Поменять нибблы местами |
Rd(3...0)< >Rd(7...4) |
Íåò |
|
1 |
|||||||||||
BSET |
|
s |
Flag Set -Установить флаг |
SREG(s)< |
1 |
|
|
SREG(s) |
|
1 |
|||||||
BCLR |
|
s |
Flag Clear -Очистить флаг |
SREG(s)< |
0 |
|
|
SREG(s) |
|
1 |
|||||||
SBI |
|
P,b |
Set bit to I/O Register - Установить бит в регистр I/O |
I/O (P,b)< |
1 |
|
|
Íåò |
|
|
2 |
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
171
ATMEL |
|
|
|
|
ÊÒÖ-ÌÊ |
|
|
|
|
|
|
|
|
CBI |
P,b |
Clear Bit in I/O Register - Очистить бит в |
|
|
|
|
|
|
регистреI/O |
I/O(P,b)< 0 |
Íåò |
2 |
|
BST |
Rd,b |
Bit Store from Register to T - Переписать бит из |
|
|
|
|
|
|
регистра во флаг T |
T< |
Rd(b) |
T |
1 |
BLD |
Rd,b |
Bit Load from T to Register -Загрузить T флаг в |
|
|
|
|
|
|
бит регистра |
Rd(b)< T |
Íåò |
1 |
|
SEC |
|
Set Carry FlagУстановить флаг переноса |
Ñ< |
1 |
C |
1 |
|
|
|
|
|
|
|
CLC |
|
Clear Carry Flag -Очистить флаг переноса |
C< |
0 |
C |
1 |
|
|
|
|
|
|
|
SEN |
|
Set Negative FlagУстановить флаг |
N< |
1 |
N |
1 |
|
|
отрицательного значения |
|
|
|
|
|
|
|
|
|
|
|
CLN |
|
Clear Negative Flag -Очистить флаг |
|
|
|
|
|
|
отрицательного значения |
N< |
0 |
N |
1 |
SEZ |
|
Set Zero FlagУстановить флаг нулевого |
|
|
|
|
|
|
значения |
Z< |
1 |
Z |
1 |
|
|
|
|
|
|
|
CLZ |
|
Clear Zero Flag - Очистить флаг нулевого |
|
|
|
|
|
|
значения |
Z< |
0 |
Z |
1 |
SEI |
|
Set Global Interrupt FlagУстановить флаг |
|
|
|
|
|
|
глобального прерывания |
I< |
1 |
I |
1 |
CLI |
|
Clear Global Interrupt Flag -Очистить флаг |
|
|
|
|
|
|
глобального прерывания |
I< |
0 |
I |
1 |
SES |
|
Set Signed FlagУстановить флаг знака |
S< |
1 |
S |
1 |
|
|
|
|
|
|
|
CLS |
|
Clear Signed Flag - Очистить флаг знака |
S< |
0 |
S |
1 |
SEV |
|
Set Overflow FlagУстановить флаг |
|
|
|
|
|
|
переполнения |
V< |
1 |
V |
1 |
CLV |
|
Clear Overflow Flag - Очистить флаг |
|
|
|
|
|
|
переполнения |
V< |
0 |
V |
1 |
|
|
|
|
|
|
|
SET |
|
Set T FlagУстановить флаг T |
T< |
1 |
T |
1 |
|
|
|
|
|
|
|
CLT |
|
Clear T Flag - Очистить флаг T |
T< |
0 |
T |
1 |
|
|
|
|
|
|
|
SEH |
|
Set Half Carry FlagУстановить флаг полу |
|
|
|
|
|
|
переноса |
H< |
1 |
H |
1 |
|
|
|
|
|
|
|
CLH |
|
Clear Half Carry Flag -Очистить флаг полу |
|
|
|
|
|
|
переноса |
H< |
0 |
H |
1 |
NOP |
|
No Operation - Выполнить холостую команду |
|
|
Íåò |
1 |
|
|
|
|
|
|
|
SLEEP |
|
Sleep - Установить режим SLEEP |
См. описание |
Íåò |
1 |
|
|
|
|
команды |
|
|
|
|
|
|
|
|
|
|
WDR |
|
Watchdog ResetСбросить сторожевой таймер |
См. описание |
Íåò |
1 |
|
|
|
|
команды |
|
|
|
|
|
|
|
|
|
|
172
ÊÒÖ-ÌÊ
ADC - Add with Carry - Сложить с переносом
Описание:
Сложение двух регистров и содержимого флага переноса (С), размещение результата в регистре назначения Rd.
Операция:
(i) Rd < Rd + Rr + C
|
Синтаксис |
|
|
Операнды: |
|
|
|
|
Счетчик программ: |
|||||||||||
(i) |
ADC Rd,Rr |
|
|
0 |
< |
d |
< |
31, 0 |
< |
r |
< |
31 |
PC < |
PC + 1 |
||||||
|
|
|
|
|||||||||||||||||
|
|
|
||||||||||||||||||
16-разрядный код операции: |
|
|
|
|
|
|
|
|
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0001 |
|
|
11rd |
|
|
|
|
|
dddd |
|
|
|
|
rrrr |
|
|
|
||
Булевы выражения регистра статуса (SREG) |
|
|
|
|||||||||||||||||
I |
T |
H |
S |
V |
|
|
|
N |
Z |
|
C |
|
|
|
||||||
- |
- |
<=> |
<=> |
|
<=> |
|
<=> |
|
<=> |
|
<=> |
|
|
|
H:Rd3Rr3+Rr3+R3+R3Rd3
Устанавливается если есть перенос из бита 3, в ином случае о чищается
S: |
N V, Äëÿ ïðîâерок со знаком |
V: |
Rd7 Rr7 R7+Rd7 Rr7 R7 |
|
Устанавливается если в результате операции образуется п ереполнение |
|
дополнения до двух, в ином случае очищается |
N:R7
Устанавливается если в результате установлен MSB, в ином слу чае
очищается
Z:Rd7 Rr7R7R7 R7 Rd7
Устанавливается если результат $00, в ином случае очищается
C:Rd7Rr7+Rr7+R7+R7Rd7
Устанавливается если есть перенос из MSB результата, в ином случае очищается
R: (Результат) соответствует Rd после выполнения команды
Пример:
|
; |
СложитьR1 : R0 с R3 : R2 |
add r2, r0 |
; |
Сложить младший байт |
adc r3, r1 |
; |
Сложить старший байт с переносом |
Ñëîâ: 1 (2 байта)
Циклов: 1
173
ATMEL |
ÊÒÖ-ÌÊ |
ADD - Add without Carry - Сложить без переноса
Описание:
Сложение двух регистров без добавления содержимого флаг а переноса (С), размещение результата в регистре назначения Rd.
Операция:
(i) Rd< Rd + Rr
|
Синтаксис |
|
|
|
Операнды: |
|
|
|
|
|
|
Счетчик программ: |
||||||||
(i) |
ADD Rd,Rr |
|
|
0 |
< |
d |
|
<31, 0 |
< |
r |
<31 |
PC< PC + 1 |
||||||||
|
|
|
|
|
|
|
||||||||||||||
16-разрядный код операции: |
|
|
|
|
|
|
|
|
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0000 |
|
11rd |
|
|
|
|
|
dddd |
|
|
|
|
|
rrrr |
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
Булевы выражения регистра статуса (SREG) |
||||||||||||||||||||
I |
T |
H |
S |
V |
|
|
N |
|
Z |
C |
||||||||||
- |
- |
<=> |
|
<=> |
|
<=> |
|
<=> |
|
<=> |
|
|
<=> |
|
|
H:Rd3Rr3+Rr3+R3+R3Rd3
Устанавливается если есть перенос из бита 3, в ином случае о чищается
S:N V, Для проверок со знаком
V:Rd7Rr7R7+Rd7Rr7R7
Устанавливается если в результате операции образуется п ереполнение
дополнения до двух, в ином случае очищается
N:R7 Устанавливается если в результате установлен MSB, в ином случае очищается
Z:R7 R6R5R4R3R2 R1R0
Устанавливается если результат $00, в ином случае очищается
C:Rd7Rr7+Rr7 R7+R7Rd7
Устанавливается если есть перенос из MSB результата, в ином случае очищается
R (Результат) соответствует Rd после выполнения команды Пример:
add r1,r2 |
; Сложить r2 с r1 (r1=r1+r2) |
adc r28,r28 |
; Сложить r28 с самим собой |
|
(r28=r28+r28) |
Ñëîâ: 1 (2 байта) Циклов: 1
174