Мы поможем в написании ваших работ!
ЗНАЕТЕ ЛИ ВЫ?
|
Краткое описание набора инструкций
| Мнемо-код
| Опер-анды
| Описание
| Операция
| Флаги
| Кол циклов
| | Арифметические и логические инструкции
| | ADD
| Rd, Rr
| Сложение без учета переноса
| Rd Rd+Rr
| Z,C,N,V,S,H
|
| | ADC
| Rd, Rr
| Сложение с учетом переноса
| Rd Rd+Rr+C
| Z,C,N,V,S,H
|
| | ADIW
| Rd, K
| Сложение слова с константой
| Rd Rd+1:Rd+K
| Z, C, N, V, S
|
| | SUB
| Rd, Rr
| Вычитание без учета переноса
| Rd Rd-Rr
| Z,C,N,V,S,H
|
| | SUBI
| Rd, K
| Вычитание константы
| Rd Rd-K
| Z,C,N,V,S,H
|
| | SBC
| Rd, Rr
| Вычитание с учетом переноса
| Rd Rd-Rr-C
| Z,C,N,V,S,H
|
| | SBCI
| Rd, K
| Вычитание константы с учетом переноса
| Rd Rd-K-C
| Z,C,N,V,S,H
|
| | SBIW
| Rd, K
| Вычитание константы из слова
| Rd+1:Rd Rd+1:Rd-K
| Z, C, N, V, S
|
| | AND
| Rd, Rr
| Логическое И
| Rd Rd·Rr
| Z, N, V, S
|
| | ANDI
| Rd, K
| Логическое И с константой
| Rd Rd·K
| Z, N, V, S
|
| | OR
| Rd, Rr
| Логическое ИЛИ
| Rd Rd v Rr
| Z, N, V, S
|
| | ORI
| Rd, K
| Логическое ИЛИ с константой
| Rd Rd v K
| Z, N, V, S
|
| | EOR
| Rd, Rr
| Исключающее ИЛИ
| Rd Rd Rr
| Z, N, V, S
|
| | COM
| Rd
| Дополнение до единицы
| Rd $FF-Rd
| Z, C, N, V, S
|
| | NEG
| Rd
| Дополнение до двух
| Rd $00-Rd
| Z,C,N,V,S,H
|
| | SBR
| Rd, K
| Установка бита (бит) регистра
| Rd Rd v K
| Z, N, V, S
|
| | CBR
| Rd, K
| Сброс бита (бит) регистра
| Rd Rd·($FF-K)
| Z, 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, N, V, S
|
| | CLR
| Rd
| Сброс регистра
| Rd Rd Rd
| Z, N, V, S
|
| | SER
| Rd
| Установка регистра
| Rd $FF
| Нет
|
| | MUL
| Rd, Rr
| Умножение беззнаковых чисел
| R1:R0 Rd x Rr (UU)
| Z, C
|
| | MULS
| Rd, Rr
| Умножение знаковых чисел
| R1:R0 Rd x Rr (SS)
| Z, C
|
| | MULSU
| Rd, Rr
| Умножение знакового числа на беззнаковое
| R1:R0 Rd x Rr (SU)
| Z, C
|
| | FMUL
| Rd, Rr
| Дробное умножение беззнаковых чисел
| R1:R0 Rd x Rr<<1 (UU)
| Z, C
|
| | FMULS
| Rd, Rr
| Дробное умножение знаковых чисел
| R1:R0 Rd x Rr<<1 (SS)
| Z, C
|
| | FMULSU
| Rd, Rr
| Дробное умножение знакового числа на беззнаковое
| R1:R0 Rd x Rr<<1 (SU)
| Z, C
|
| | DES
| K
| Шифрование данных
| R15:R0 ENCRYPT(R15:R0,K), если H=0, R15:R0 DECRYPT(R15:R0,K), если H=1
|
| 1/2
| | Инструкции перехода
| | RJMP
| k
| Относительный переход
| PC PC+k+1
| Нет
|
| | IJMP
|
| Косвенный переход по Z-указателю
| PC(15:0) Z PC(21:16) 0
| Нет
|
| | EIJMP
|
| Расширенный косвенный переход по Z-указателю
| PC(15:0) Z PC(21:16) EIND
| Нет
|
| | JMP
| k
| Переход
| PC k
| Нет
|
| | RCALL
| k
| Относительный вызов подпрограммы
| PC PC+k+1
| Нет
| 2/3(1)
| | ICALL
|
| Косвенный вызов подпрограммы по Z-указателю
| PC(15:0) Z PC(21:16) 0
| Нет
| 2/3(1)
| | EICALL
|
| Расширенный косвенный вызов подпрограммы по Z-указателю
| PC(15:0) Z PC(21:16) EIND
| Нет
| 3(1)
| | CALL
| k
| Вызов подпрограммы
| PC k
| Нет
| 3/4(1)
| | RET
|
| Выход из подпрограммы
| PC STACK
| Нет
| 4/5(1)
| | RETI
|
| Выход из процедуры обработки прерывания
| PC STACK
| I
| 4/5(1)
| | CPSE
| Rd, Rr
| Сравнение и пропуск, если равно
| PC PC+2 или 3, если Rd=Rr
| Нет
| 1/2/3
| | CP
| Rd, Rr
| Сравнение
| Rd-Rr
| Z,C,N,V,S,H
|
| | CPC
| Rd, Rr
| Сравнение с переносом
| Rd-Rr-C
| Z,C,N,V,S,H
|
| | CPI
| Rd, K
| Сравнение с константой
| Rd-K
| Z,C,N,V,S,H
|
| | SBRC
| Rr,b
| Пропуск, если бит регистра равен нулю
| PC PC+2 или 3, если Rr(b)=0
| Нет
| 1/2/3
| | SBRS
| Rr,b
| Пропуск, если бит регистра равен единице
| PC PC+2 или 3, если Rr(b)=1
| Нет
| 1/2/3
| | SBIC
| A, b
| Пропуск, если бит регистра в/в равен нулю
| PC PC+2 или 3, если I/O(A, b)=0
| Нет
| 2/3/4
| | SBIS
| A, b
| Пропуск, если бит регистра в/в равен единице
| PC PC+2 или 3, если I/O(A, b)=1
| Нет
| 2/3/4
| | BRBS
| s, k
| Переход, если флаг статуса равен единице
| PC PC+k+1, если SREG(s) = 1
| Нет
| 1/2
| | BRBC
| s, k
| Переход, если флаг статуса равен нулю
| PC PC+k+1, если SREG(s) = 0
| Нет
| 1/2
| | BREQ
| k
| Переход, если равно
| PC PC+k+1, если Z = 1
| Нет
| 1/2
| | BRNE
| k
| Переход, если не равно
| PC PC+k+1, если Z = 0
| Нет
| 1/2
| | BRCS
| k
| Переход, если флаг переноса равен единице
| PC PC+k+1, если C = 1
| Нет
| 1/2
| | BRCC
| k
| Переход, если флаг переноса равен нулю
| PC PC+k+1, если C = 0
| Нет
| 1/2
| | BRSH
| k
| Переход, если больше или равно
| PC PC+k+1, если C = 0
| Нет
| 1/2
| | BRLO
| k
| Переход, если меньше
| PC PC+k+1, если C = 1
| Нет
| 1/2
| | BRMI
| k
| Переход, если минус
| PC PC+k+1, если N = 1
| Нет
| 1/2
| | BRPL
| k
| Переход, если плюс
| PC PC+k+1, если N = 0
| Нет
| 1/2
| | BRGE
| k
| Переход, если больше или равно с учетом знака
| PC PC+k+1, если N V = 0
| Нет
| 1/2
| | BRLT
| k
| Переход, если меньше с учетом знака
| PC PC+k+1, если N V = 1
| Нет
| 1/2
| | BRHS
| k
| Переход, если установлен флаг полупереноса
| PC PC+k+1, если H = 1
| Нет
| 1/2
| | BRHC
| k
| Переход, если сброшен флаг полупереноса
| PC PC+k+1, если H = 0
| Нет
| 1/2
| | BRTS
| k
| Переход, если установлен флаг Т
| PC PC+k+1, если Т = 1
| Нет
| 1/2
| | BRTC
| k
| Переход, если сброшен флаг Т
| PC PC+k+1, если Т = 0
| Нет
| 1/2
| | BRVS
| k
| Переход, если установлен флаг переполнения
| PC PC+k+1, если V = 1
| Нет
| 1/2
| | BRVC
| k
| Переход, если сброшен флаг переполнения
| PC PC+k+1, если V = 0
| Нет
| 1/2
| | BRIE
| k
| Переход, если прерывания разрешены
| PC PC+k+1, если I = 1
| Нет
| 1/2
| | BRID
| k
| Переход, если прерывания запрещены
| PC PC+k+1, если I = 0
| Нет
| 1/2
| | Инструкции передачи данных
| | MOV
| Rd, Rr
| Копирование регистра
| Rd Rr
| Нет
|
| | MOVW
| Rd, Rr
| Копирование регистровой пары
| Rd+1:Rd Rr+1:Rr
| Нет
|
| | LDI
| Rd, K
| Запись константы в регистр
| Rd K
| Нет
|
| | LDS
| Rd, k
| Прямое чтение из памяти данных в регистр
| Rd (k)
| Нет
| 2(1)(2)
| | LD
| Rd, X
| Косвенное чтение
| Rd (X)
| Нет
| 1(1)(2)
| | LD
| Rd, X+
| Косвенное чтение с постинкрементом
| Rd (X); X X+1
| Нет
| 1(1)(2)
| | LD
| Rd, -X
| Косвенное чтение с предварительным декрементом
| X X-1 X-1 Rd X (X)
| Нет
| 2(1)(2)
| | LD
| Rd, Y
| Косвенное чтение
| Rd (Y)
| Нет
| 1(1)(2)
| | LD
| Rd, Y+
| Косвенное чтение с последующим инкрементом
| Rd (Y) Y Y+1
| Нет
| 1(1)(2)
| | LD
| Rd, -Y
| Косвенное чтение с предварительным декрементом
| Y Y-1 Y-1 Rd Y (Y)
| Нет
| 2(1)(2)
| | LDD
| Rd,Y+q
| Косвенное чтение со смещением
| Rd (Y+q)
| Нет
| 2(1)(2)
| | LD
| Rd, Z
| Косвенное чтение
| Rd (Z)
| Нет
| 1(1)(2)
| | LD
| Rd, Z+
| Косвенное чтение с последующим инкрементом
| Rd (Z) Z Z+1
| Нет
| 1(1)(2)
| | LD
| Rd, -Z
| Косвенное чтение с предварительным декрементом
| Z Z-1 Z-1 Rd Z (Z)
| Нет
| 2(1)(2)
| | LDD
| Rd, Z+q
| Косвенное чтение со смещением
| Rd (Z+q)
| Нет
| 2(1)(2)
| | STS
| k, Rr
| Прямая запись в память данных
| (k) Rr
| Нет
| 2(1)
| | ST
| X, Rr
| Косвенная запись
| (X) Rr
| Нет
| 1(1)
| | ST
| X+, Rr
| Косвенная запись с последующим инкрементом
| (X) Rr X X+1
| Нет
| 1(1)
| | ST
| -X, Rr
| Косвенная запись с предварительным декрементом
| X X-1; (X) Rr
| Нет
| 2(1)
| | ST
| Y, Rr
| Косвенная запись
| (Y) Rr
| Нет
| 1(1)
| | ST
| Y+, Rr
| Косвенная запись с последующим инкрементом
| (Y) Rr Y Y+1
| Нет
| 1(1)
| | ST
| -Y, Rr
| Косвенная запись с предварительным декрементом
| Y Y-1; (Y) Rr
| Нет
| 2(1)
| | STD
| Y+q, Rr
| Косвенная запись со смещением
| (Y+q) Rr
| Нет
| 2(1)
| | ST
| Z, Rr
| Косвенная запись
| (Z) Rr
| Нет
| 1(1)
| | ST
| Z+, Rr
| Косвенная запись с последующим инкрементом
| (Z) Rr Z Z+1
| Нет
| 1(1)
| | ST
| -Z, Rr
| Косвенная запись с предварительным декрементом
| Z Z-1 (Z) Rr
| Нет
| 2(1)
| | STD
| Z+q, Rr
| Косвенная запись со смещением
| (Z+q) Rr
| Нет
| 2(1)
| | LPM
|
| Чтение памяти программ
| R0 (Z)
| Нет
|
| | LPM
| Rd, Z
| Чтение памяти программ
| Rd (Z)
| Нет
|
| | LPM
| Rd, Z+
| Чтение памяти программ с последующим инкрементом
| Rd (Z) Z Z+1
| Нет
|
| | ELPM
| Rd, Z
| Расширенное чтение памяти программ
| Rd (RAMPZ:Z)
| Нет
|
| | ELPM
| Rd, Z+
| Расширенное чтение памяти программ с последующим инкрементированием
| Rd (RAMPZ:Z) Z Z+1
| Нет
|
| | SPM
|
| Запись в память программ
| (RAMPZ:Z) R1:R0
| Нет
| -
| | SPM
| Z+
| Запись в память программ с последующим инкрементированием на 2
| (RAMPZ:Z) R1:R0 Z Z+2
| Нет
| -
| | IN
| Rd, A
| Чтение памяти ввода-вывода
| Rd I/O(A)
| Нет
|
| | OUT
| A, Rr
| Запись в память ввода-вывода
| I/O(A) Rr
| Нет
|
| | PUSH
| Rr
| Поместить регистр в стек
| STACK Rr
| Нет
| 1(1)
| | POP
| Rd
| Извлечение регистра из стека
| Rd STACK
| Нет
| 2(1)
| | Операции над битами
| | LSL
| Rd
| Логический сдвиг влево
| Rd(n+1) Rd(n); Rd(0) 0; C Rd(7)
| Z, C, N, V, H
|
| | LSR1
| Rd
| Логический сдвиг вправо
| Rd(n) Rd(n+1); Rd(7) 0; C Rd(0)
| Z, C, N, V
|
| | ROL
| Rd
| Циклический сдвиг влево через перенос
| Rd(0) C; Rd(n+1) Rd(n); C Rd(7)
| Z, C, N, V, H
|
| | ROR
| Rd
| Циклический сдвиг вправо через перенос
| Rd(7) C Rd(n) Rd(n+1) C Rd(0)
| Z, C, N, V
|
| | ASR
| Rd
| Арифметический сдвиг вправо
| Rd(n) Rd(n+1), n=0…6
| Z, C, N, V
|
| | SWAP
| Rd
| Обмен тетрад
| Rd(3…0) Rd(7…4)
| Нет
|
| | BSET
| s
| Установка флага
| SREG(s) 1
| SREG(s)
|
| | BCLR
| s
| Сброс флага
| SREG(s) 0
| SREG(s)
|
| | SBI
| A, b
| Установка бита в регистре ввода-вывода
| I/O(A, b) 1
| Нет
|
| | CBI
| A, b
| Сброс бита в регистре ввода-вывода
| I/O(A, b) 0
| Нет
|
| | BST
| Rr, b
| Запись бита регистра в бит Т
| T Rr(b)
| Т
|
| | BLD
| Rd, b
| Чтение бита Т в бит регистра
| Rr(b) T
| Нет
|
| | 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
|
| | CLS
|
| Сброс флага знакового сравнения
| S 0
| S
|
| | SEV
|
| Установка флага переполнения дополнения до двух
| V 1
| V
|
| | CLV
|
| Сброс флага переполнения дополнения до двух
| V 0
| V
|
| | SET
|
| Установка бита Т в SREG
| T 1
| T
|
| | CLT
|
| Сброс бита Т в SREG
| T 0
| T
|
| | SEH
|
| Установка флага полупереноса в SREG
| H 1
| H
|
| | CLH
|
| Сброс флага полупереноса в SREG
| H 0
| H
|
| | Инструкции управления микроконтроллером
| | BREAK
|
| Останов
| см. описание
| Нет
|
| | NOP
|
| Нет операции
|
| Нет
|
| | SLEEP
|
| Переход в экономичный режим работы
| см. описание
| Нет
|
| | WDR
|
| Сброс сторожевого таймера
| Нет
|
| Прим.:
1. Указанное количество циклов распространяется только на доступ к внутренней памяти и не действительно для доступов, выполняющихся через интерфейс внешней памяти.
2. На доступ к внутреннему SRAM требуется один дополнительный цикл.
Приложение А. Временные диаграммы модуля EBI
|