Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
378
Добавлен:
21.05.2015
Размер:
7.55 Mб
Скачать
  1. Краткое описание набора инструкций

Мнемо-код

Опер-анды

Описание

Операция

Флаги

Кол циклов

Арифметические и логические инструкции

ADD

Rd, Rr

Сложение без учета переноса

Rd Rd+Rr

Z,C,N,V,S,H

1

ADC

Rd, Rr

Сложение с учетом переноса

Rd Rd+Rr+C

Z,C,N,V,S,H

1

ADIW

Rd, K

Сложение слова с константой

Rd Rd+1:Rd+K

Z, C, N, V, S

2

SUB

Rd, Rr

Вычитание без учета переноса

Rd Rd-Rr

Z,C,N,V,S,H

1

SUBI

Rd, K

Вычитание константы

Rd Rd-K

Z,C,N,V,S,H

1

SBC

Rd, Rr

Вычитание с учетом переноса

Rd Rd-Rr-C

Z,C,N,V,S,H

1

SBCI

Rd, K

Вычитание константы с учетом переноса

Rd Rd-K-C

Z,C,N,V,S,H

1

SBIW

Rd, K

Вычитание константы из слова

Rd+1:Rd Rd+1:Rd-K

Z, C, N, V, S

2

AND

Rd, Rr

Логическое И

Rd Rd·Rr

Z, N, V, S

1

ANDI

Rd, K

Логическое И с константой

Rd Rd·K

Z, N, V, S

1

OR

Rd, Rr

Логическое ИЛИ

Rd Rd v Rr

Z, N, V, S

1

ORI

Rd, K

Логическое ИЛИ с константой

Rd Rd v K

Z, N, V, S

1

EOR

Rd, Rr

Исключающее ИЛИ

Rd RdRr

Z, N, V, S

1

COM

Rd

Дополнение до единицы

Rd $FF-Rd

Z, C, N, V, S

1

NEG

Rd

Дополнение до двух

Rd $00-Rd

Z,C,N,V,S,H

1

SBR

Rd, K

Установка бита (бит) регистра

Rd Rd v K

Z, N, V, S

1

CBR

Rd, K

Сброс бита (бит) регистра

Rd Rd·($FF-K)

Z, N, V, S

1

INC

Rd

Инкремент

Rd Rd+1

Z, N, V, S

1

DEC

Rd

Декремент

Rd Rd-1

Z, N, V, S

1

TST

Rd

Проверка на ноль или минус

Rd Rd·Rd

Z, N, V, S

1

CLR

Rd

Сброс регистра

Rd RdRd

Z, N, V, S

1

SER

Rd

Установка регистра

Rd $FF

Нет

1

MUL

Rd, Rr

Умножение беззнаковых чисел

R1:R0 Rd x Rr (UU)

Z, C

2

MULS

Rd, Rr

Умножение знаковых чисел

R1:R0 Rd x Rr (SS)

Z, C

2

MULSU

Rd, Rr

Умножение знакового числа на беззнаковое

R1:R0 Rd x Rr (SU)

Z, C

2

FMUL

Rd, Rr

Дробное умножение беззнаковых чисел

R1:R0 Rd x Rr<<1 (UU)

Z, C

2

FMULS

Rd, Rr

Дробное умножение знаковых чисел

R1:R0 Rd x Rr<<1 (SS)

Z, C

2

FMULSU

Rd, Rr

Дробное умножение знакового числа на беззнаковое

R1:R0 Rd x Rr<<1 (SU)

Z, C

2

DES

K

Шифрование данных

R15:R0 ENCRYPT(R15:R0,K), если H=0, R15:R0DECRYPT(R15:R0,K), если H=1

 

1/2

Инструкции перехода

RJMP

k

Относительный переход

PC PC+k+1

Нет

2

IJMP

 

Косвенный переход по Z-указателю

PC(15:0) Z PC(21:16)0

Нет

2

EIJMP

 

Расширенный косвенный переход по Z-указателю

PC(15:0) Z PC(21:16)EIND

Нет

2

JMP

k

Переход

PC k

Нет

3

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

1

CPC

Rd, Rr

Сравнение с переносом

Rd-Rr-C

Z,C,N,V,S,H

1

CPI

Rd, K

Сравнение с константой

Rd-K

Z,C,N,V,S,H

1

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, если NV = 0

Нет

1/2

BRLT

k

Переход, если меньше с учетом знака

PC PC+k+1, если NV = 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

Нет

1

MOVW

Rd, Rr

Копирование регистровой пары

Rd+1:Rd Rr+1:Rr

Нет

1

LDI

Rd, K

Запись константы в регистр

Rd K

Нет

1

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-1X-1 RdX(X)

Нет

2(1)(2)

LD

Rd, Y

Косвенное чтение

Rd (Y)

Нет

1(1)(2)

LD

Rd, Y+

Косвенное чтение с последующим инкрементом

Rd (Y) YY+1

Нет

1(1)(2)

LD

Rd, -Y

Косвенное чтение с предварительным декрементом

Y Y-1Y-1 RdY(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) ZZ+1

Нет

1(1)(2)

LD

Rd, -Z

Косвенное чтение с предварительным декрементом

Z Z-1Z-1 RdZ(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 XX+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 YY+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 ZZ+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)

Нет

3

LPM

Rd, Z

Чтение памяти программ

Rd (Z)

Нет

3

LPM

Rd, Z+

Чтение памяти программ с последующим инкрементом

Rd (Z) ZZ+1

Нет

3

ELPM

Rd, Z

Расширенное чтение памяти программ

Rd (RAMPZ:Z)

Нет

3

ELPM

Rd, Z+

Расширенное чтение памяти программ с последующим инкрементированием

Rd (RAMPZ:Z) Z Z+1

Нет

3

SPM

 

Запись в память программ

(RAMPZ:Z) R1:R0

Нет

-

SPM

Z+

Запись в память программ с последующим инкрементированием на 2

(RAMPZ:Z) R1:R0 Z Z+2

Нет

-

IN

Rd, A

Чтение памяти ввода-вывода

Rd I/O(A)

Нет

1

OUT

A, Rr

Запись в память ввода-вывода

I/O(A) Rr

Нет

1

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

1

LSR1

Rd

Логический сдвиг вправо

Rd(n) Rd(n+1); Rd(7) 0; C Rd(0)

Z, C, N, V

1

ROL

Rd

Циклический сдвиг влево через перенос

Rd(0) C; Rd(n+1) Rd(n); C Rd(7)

Z, C, N, V, H

1

ROR

Rd

Циклический сдвиг вправо через перенос

Rd(7) C Rd(n) Rd(n+1) C Rd(0)

Z, C, N, V

1

ASR

Rd

Арифметический сдвиг вправо

Rd(n) Rd(n+1), n=0…6

Z, C, N, V

1

SWAP

Rd

Обмен тетрад

Rd(3…0) Rd(7…4)

Нет

1

BSET

s

Установка флага

SREG(s) 1

SREG(s)

1

BCLR

s

Сброс флага

SREG(s) 0

SREG(s)

1

SBI

A, b

Установка бита в регистре ввода-вывода

I/O(A, b) 1

Нет

1

CBI

A, b

Сброс бита в регистре ввода-вывода

I/O(A, b) 0

Нет

1

BST

Rr, b

Запись бита регистра в бит Т

T Rr(b)

Т

1

BLD

Rd, b

Чтение бита Т в бит регистра

Rr(b) T

Нет

1

SEC

 

Установка флага переноса

C 1

C

1

CLC

 

Сброс флага переноса

C 0

C

1

SEN

 

Установка флага минуса

N 1

N

1

CLN

 

Сброс флага минуса

N 0

N

1

SEZ

 

Установка флага нуля

Z 1

Z

1

CLZ

 

Сброс флага нуля

Z 0

Z

1

SEI

 

Общее разрешение прерываний

I 1

I

1

CLI

 

Общий запрет прерываний

I 0

I

1

SES

 

Установка флага знакового сравнения

S 1

S

1

CLS

 

Сброс флага знакового сравнения

S 0

S

1

SEV

 

Установка флага переполнения дополнения до двух

V 1

V

1

CLV

 

Сброс флага переполнения дополнения до двух

V 0

V

1

SET

 

Установка бита Т в SREG

T 1

T

1

CLT

 

Сброс бита Т в SREG

T 0

T

1

SEH

 

Установка флага полупереноса в SREG

H 1

H

1

CLH

 

Сброс флага полупереноса в SREG

H 0

H

1

Инструкции управления микроконтроллером

BREAK

 

Останов

см. описание

Нет

1

NOP

 

Нет операции

 

Нет

1

SLEEP

 

Переход в экономичный режим работы

см. описание

Нет

1

WDR

 

Сброс сторожевого таймера

Нет

1

Прим.:

  1. Указанное количество циклов распространяется только на доступ к внутренней памяти и не действительно для доступов, выполняющихся через интерфейс внешней памяти.

  2. На доступ к внутреннему SRAM требуется один дополнительный цикл.

Соседние файлы в папке Архитектура ЭВМ