Мы поможем в написании ваших работ!
ЗНАЕТЕ ЛИ ВЫ?
|
Краткое описание набора инструкций
Мнемо-код
| Опер-анды
| Описание
| Операция
| Флаги
| Кол циклов
| Арифметические и логические инструкции
| 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
|