Инструкции передачи данных
Мнемоника | Операнды | Описание | Операция | Флаги | Циклы |
MOV | , | Скопировать регистр | Rd = Rr | None | 1 |
MOVW | , | Скопировать пару регистров | Rd+1:Rd = Rr+1:Rr, r,d even | None | 1 |
LDI | , | Загрузить константу | Rd = K | None | 1 |
LDS | , | Прямая загрузка | Rd = (k) | None | 2* |
LD | , | Косвенная загрузка | Rd = (X) | None | 2* |
LD | , | Косвенная загрузка с пост-инкрементом | Rd = (X), X=X+1 | None | 2* |
LD | , | Косвенная загрузка с пре-декрементом | X=X-1, Rd = (X) | None | 2* |
LD | , | Косвенная загрузка | Rd = (Y) | None | 2* |
LD | , | Косвенная загрузка с пост-инкрементом | Rd = (Y), Y=Y+1 | None | 2* |
LD | , | Косвенная загрузка с пре-декрементом | Y=Y-1, Rd = (Y) | None | 2* |
LDD | ,+ | Косвенная загрузка с замещением | Rd = (Y+q) | None | 2* |
LD | , | Косвенная загрузка | Rd = (Z) | None | 2* |
LD | , | Косвенная загрузка с пост-инкрементом | Rd = (Z), Z=Z+1 | None | 2* |
LD | , | Косвенная загрузка с пре-декрементом | Z=Z-1, Rd = (Z) | None | 2* |
LDD | ,+ | Косвенная загрузка с замещением | Rd = (Z+q) | None | 2* |
STS | k,Rr | Прямое сохранение | (k) = Rr | None | 2* |
ST | , | Косвенное сохранение | (X) = Rr | None | 2* |
ST | , | Косвенное сохранение с пост-инкрементом | (X) = Rr, X=X+1 | None | 2* |
ST | , | Косвенное сохранение с пре-декрементом | X=X-1, (X)=Rr | None | 2* |
ST | , | Косвенное сохранение | (Y) = Rr | None | 2* |
ST | , | Косвенное сохранение с пост-инкрементом | (Y) = Rr, Y=Y+1 | None | 2 |
ST | , | Косвенное сохранение с пре-декрементом | Y=Y-1, (Y) = Rr | None | 2 |
ST | +, | Косвенное сохранение с замещением | (Y+q) = Rr | None | 2 |
ST | , | Косвенное сохранение | (Z) = Rr | None | 2 |
ST | , | Косвенное сохранение с пост-инкрементом | (Z) = Rr, Z=Z+1 | None | 2 |
ST | , | Косвенное сохранение с пре-декрементом | Z=Z-1, (Z) = Rr | None | 2 |
ST | +, | Косвенное сохранение с замещением | (Z+q) = Rr | None | 2 |
LPM | Нет | Загрузка из программной памяти | R0 = (Z) | None | 3 |
LPM | , | Загрузка из программной памяти | Rd = (Z) | None | 3 |
LPM | , | Загрузка из программной памяти с пост-инкрементом | Rd = (Z), Z=Z+1 | None | 3 |
ELPM | Нет | Расширенная загрузка из программной памяти | R0 = (RAMPZ:Z) | None | 3 |
ELPM | , | Расширенная загрузка из программной памяти | Rd = (RAMPZ:Z) | None | 3 |
ELPM | , | Расширенная загрузка из программной памяти с пост-инкрементом | Rd = (RAMPZ:Z), Z = Z+1 | None | 3 |
SPM | Нет | Сохранение в программной памяти | (Z) = R1:R0 | None | - |
ESPM | Нет | Расширенное сохранение в программной памяти | (RAMPZ:Z) = R1:R0 | None | - |
IN | , | Чтение порта | Rd = P | None | 1 |
OUT | , | Запись в порт | P = Rr | None | 1 |
PUSH | Занесение регистра в стек | STACK = Rr | None | 2 | |
POP | Извлечение регистра из стека | Rd = STACK | None | 2 |
* Для операций доступа к данным количество циклов указано при условии доступа к внутренней памяти данных, и не корректно при работе с внешним ОЗУ. Для инструкций LD, ST, LDD, STD, LDS, STS, PUSH и POP, необходимо добавить один цикл плюс по одному циклу для каждого ожидания.