
Предисловие
Подобных страниц, описывающих систему команд данной замечательной архитектуры микропроцессора очень много в сети Интернет. Поэтому не хотелось бы создать очередной обычный «велосипед», но наш «велосипед» будет особенным. Особенностью данной страницы будет то, чтобы вы не утруждались нажимать на ссылки на сторонние ресурсы и не утруждались по крупинкам собирать недостающие части информации по теме. Это очень удобно, если читаете через экран мобильного устройства или планшета.
Регистр статуса (SREG)
|
I/O регистры
|
Стек
|
Флаги
|
Описание команд
[spoiler name=»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 | Rd3•Rr3 + Rr3 + R3 + R3•Rd3 Устанавливается если есть перенос из бита 3, в ином случае очищается |
S | N⊕V, Для проверок со знаком |
V | Rd7•Rr7•R7 + Rd7•Rr7•R7 |
N | R7 Устанавливается если в результате установлен MSB, в ином случае очищается |
Z | Rd7•Rr7•R7•R7•R7•Rd7 Устанавливается если результат $00, в ином случае очищается |
C | Rd7•Rr7 + Rr7 + R7 + R7•Rd7 Устанавливается если есть перенос из MSB результата, в ином случае очищается |
R | (Результат) соответствует Rd после выполнения команды |
✎ Пример:
;СложитьR1 : R0 с R3 : R2 add r2, r0 ;Сложить младший байт adc r3, r1 ;Сложить старший байт с переносом
w Слов:
1 (2 байта)
⧗ Циклов:
1
[/spoiler]
[spoiler name=»ADD — Add without 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 | Rd7•Rr7•R7 + Rd7•Rr7•R7 Устанавливается если в результате операции образуется переполнение дополнения до двух, в ином случае очищается |
S | N⊕V, Для проверок со знаком |
V | Rd7•Rr7•R7 + Rd7•Rr7•R7 |
N | R7 Устанавливается если в результате установлен MSB, в ином случае очищается |
Z | R7•R6•R5•R4•R3•R2•R1•R0 Устанавливается если результат $00, в ином случае очищается |
C | Rd7•Rr7+Rr7•R7+R7•Rd7 Устанавливается если есть перенос из MSB результата, в ином случае очищается |
R | (Результат) соответствует Rd после выполнения команды |
✎ Пример:
add r1,r2 ; Сложить r2 с r1 (r1=r1+r2) adc r28,r28 ; Сложить r28 с самим собой (r28=r28+r28)
w Слов:
1 (2 байта)
⧗ Циклов:
1
[/spoiler]
[spoiler name=»ADIW — Add Immediate to Word, Сложить непосредственное значение со словом»]
☛ Описание:
Сложение непосредственного значения (0-63) с парой регистров и размещение результата в паре регистров. Команда работает с четырьмя верхними парами регистров, удобна для работы с регистрами указателями.
⨬ Операнды:
(i) Rdh:Rdl ← Rdh:Rdl + K |
||
Синтаксис | Операнды | Счетчик программы |
---|---|---|
(i) ADIW Rdl, K | dl ∈ {24,26,28,30}, 0 ≤ K ≤ 63 | PC ← PC + 1 |
✘ 16-разрядный код операции:
1001 | 0110 | KKdd | KKKK |
∑ Булевые выражения регистра статуса (SREG):
I | T | H | S | V | N | Z | C |
---|---|---|---|---|---|---|---|
— | — | — | ★ | ★ | ★ | ★ | ★ |
S | N⊕V, Для проверок со знаком |
V | Rdh7 R15 |
N | R15 Устанавливается если в результате установлен MSB, в ином случае очищается |
Z | R15•R14•R13•R12•R11•R10•R9•R8•R7•R6•R5•R4•R3•R2 Устанавливается если результат $0000, в ином случае очищается |
C | R15•Rdh7 Устанавливается если есть перенос из MSB результата, в ином случае очищается |
R | (Результат) соответствует Rdh:Rdl после выполнения команды (Rdh7 — Rdh0 = R15 — R8, Rdl7 — Rdl0 = R7 — R0) |
✎ Пример:
adiw r24, 1 ; Сложить 1 с r25:r24 adiw r30, 63 ; Сложить 63 с Z указателем (r31 : r30)
w Слов:
1 (2 байта)
⧗ Циклов:
2
[/spoiler]
Продолжение следует…