3.4. Сводные таблицы команд

В Табл. 3.3...3.8 указаны все команды, которыми располагают мик­роконтроллеры AVR семейства Classic. В каждой таблице команды сгруппированы по функциональному признаку. В таблицах приведены такие основные сведения о командах, как мнемоническое обозначе­ние команды, ее описание, число машинных циклов, необходимых для ее выполнения, а также флаги регистра SREG, на которые воздей­ствует эта команда. Информация в таблицах изложена в сжатом виде, а детальное описание всех команд приведено в разделе 3.5.

Необходимо сказать несколько слов о микроконтроллере AT90S1200. Дело в том, что эта модель поддерживает только 89 команд из 118, входящих в систему команд микроконтроллеров семейства. В таблицах команды, не поддерживаемые микроконтроллером AT90S1200, выделены серым цветом.

Таблица 3.3. Группа команд логических операций

Мнемоника

Описание

Операция

Циклы

Флаги

AND Rd,Rr

«Логическое И» двух РОН

Rd = Rd • Rr

 

Z,N,V

ANDI Rd,K

«Логическое И» РОН и константы

Rd = Rd • К

 

Z,N,V

EOR Rd,Rr

«Исключающее ИЛИ» двух РОН

Rd = Rd Ф Rr

 

Z,N,V

OR Rd,Rr

«Логическое ИЛИ» двух РОН

Rd = Rd v Rr

 

Z,N,V

ORI Rd,K

«Логическое ИЛИ» РОН и константы

Rd = Rd v К

 

Z,N,V

COM Rd

Перевод в обратный код

Rd = $FF - Rd

 

Z,C,N,V

NEG Rd

Перевод в дополнительный код

Rd = $00 - Rd

 

Z,C,N,V,H

CLR Rd

Сброс всех разрядов РОН

Rd = Rd Ф Rd

 

Z,N,V

SER Rd

Установка всех разрядов РОН

Rd = $FF

 

-

TST Rd

Проверка РОН на отрицательное или нулевое значение

Rd • Rd

 

Z,N,V

SWAP Rd

Обмен местами тетрад в РОН

Rd(3..0) = Rd(7..4), Rd(7..4) = Rd(3..0)

 

-

Таблица 3.4. Группа команд арифметических операций

Мнемоника

Описание

Операция

Циклы

Флаги

ADD Rd,Rr

Сложение двух РОН

иа = иа + ит

 

г,сДУ,И

ADC Rd,Rr

Сложение двух РОН с переносом

иа = иа +   + с

 

г,сДУ,И

ADIW Rd,K

Сложение регистровой пары с константой

иаым = иаым + к

 

г,сДУ,8

SUB Rd,Rr

Вычитание двух РОН

иа = ка -

 

г,сДУ,И

SUBI Rd,K

Вычитание константы из РОН

ка = иа - к

 

г,сДУ,И

SBC Rd,Rr

Вычитание двух РОН с заемом

иа = иа - ит - с

 

г,сДУ,И

SBCI Rd,K

Вычитание константы из РОН с заемом

иа = иа - к - с

 

г,сДУ,И

SBIW Rd,K

Вычитание константы из регистровой пары

иаым = иаым - к

 

г,сДУ,8

DEC Rd

Декремент РОН

иа = иа - 1

 

гдУ

INC Rd

Инкремент РОН

иа = иа + 1

 

 

ASR Rd

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

иа(п) = иа(п+1), п=о..б

 

г,сДУ

LSL Rd

Логический сдвиг влево

иа(п+1) = иа(п), иа(0) = о

 

г,сДУ

LSR Rd

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

иа(п) = иа(п+1), иа(7) = о

 

г,сДУ

 

Сдвиг влево через перенос

иа(0) = с, иа(п+1) = иа(п), с = иа(7)

 

г,сДУ

 

Сдвиг вправо через перенос

иа(7) = с, иа(п) = иа(п+1), с = иа(о)

 

г,сДУ

Таблица 3.5. Группа команд операций с разрядами

Мнемоника

Описание

Операция

Циклы

Флаги

CBR Rd,K

Сброс разряда(ов) РОН

иа = иа • ($рб - к)

1

г,

SBR Rd,K

Установка разряда(ов) РОН

иа = иа V к

1

г,

CBI A,b

Сброс разряда РВВ

А.Ь = 0

2

SBI A,b

Установка разряда РВВ

А.Ь = 1

2

BCLR s

Сброс флага

ЭиЕО^ = 0

1

 

BSET s

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

ЭиЕО^ = 1

1

 

BLD Rd,b

Загрузка разряда РОН из флага Т ($№0)

иа.ь = т

1

BST Rr,b

Запись разряда РОН в флаг Т ($иЕ0)

Т = иг.Ь

1

т

 

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

с = 0

1

С

 

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

с = 1

1

С

CLN

Сброс флага отр. числа

N = 0

1

N

SEN

Установка флага отр. числа

N = 1

1

N

CLZ

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

г = 0

1

г

SEZ

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

г = 1

1

г

CLI

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

I = 0

1

і

SEI

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

і = 1

1

і

Таблица 3.5 (окончание)

Мнемоника

Описание

Операция

Циклы

Флаги

от

Сброс флага знака

$ = 0

 

 

SES

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

$ = 1

 

$

ОТ

Сброс флага переполнения доп. кода

У = 0

 

У

SEV

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

У = 1

 

У

CLT

Сброс флага Т

Т = 0

 

Т

SET

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

Т = 1

 

Т

CLH

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

И = 0

 

И

SEH

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

И = 1

 

И

Таблица 3.6. Группа команд пересылки данных

Мнемоника

Описание

Операция

Циклы

Флаги

ЮТ Rd,Rr

Пересылка между РОН

иа = иг

1

LDI Rd,K

Загрузка константы в РОН

иа = к

1

LD ІЙД

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

иа = [X]

2

LD к<ад+

Косвенное чтение с постинкрементом

иа = [X], X = X + 1

2

 

Косвенное чтение с преддекрементом

X = X - 1, иа = [X]

2

LD Яс<Д

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

иа = [У]

2

 

Косвенное чтение с постинкрементом

иа = [У], у = у + 1

2

 

Косвенное чтение с преддекрементом

у=у - 1, иа = [У]

2

LDD ЯС,У+д

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

иа = [У+^

2

LD Rd,Z

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

иа = [г]

2

LD Rd,Z+

Косвенное чтение с постинкрементом

иа = [г], г = г + 1

2

LD Rd,-Z

Косвенное чтение с преддекрементом

г = г - 1, иа = [г]

2

LDD Rd,Z+q

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

иа = [Z+q]

2

LDS Rd,k

Непосредственное чтение из ОЗУ

иа = [к]

2

БТ X,Rr

Косвенная запись

[X] = иг

2

ST Х+Дг

Косвенная запись с постинкрементом

[X] = иг, X = X + 1

2

БТ -X,Rr

Косвенная запись с преддекрементом

X = X - 1, [X] = иг

2

БТ Y,Rr

Косвенная запись

[У] = иг

2

БТ Y+,Rr

Косвенная запись с постинкрементом

[У] = иг, У = У + 1

2

БТ -Y,Rr

Косвенная запись с преддекрементом

У = У - 1, [X] = иг

2

STD Y+q,Rr

Косвенная относительная запись

[У+^ = иг

2

БТ Z,Rr

Косвенная запись

[г] = иг

2

БТ Z+,Rr

Косвенная запись с постинкрементом

[г] = иг, г = г + 1

2

БТ -Z,Rr

Косвенная запись с преддекрементом

г = г - 1, [г] = иг

2

STD Z+q,Rr

Косвенная относительная запись

[г+^ = иг

2

БТБ кДг

Непосредственная запись в ОЗУ

[к] = иг

2

Таблица 3.6 (окончание)

 

 

 

 

 

 

 

 

 

 

 

 

Мнемоника

Описание

Операция

Циклы

Флаги

LPM

Загрузка данных из памяти программ

R0 = |Zj

3

-

IN Rd,A

Пересылка из РВВ в РОН

Rd = A

1

-

OUT A,Rr

Пересылка из РОН в РВВ

A = Rr

1

-

PUSH Rr

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

STA« = Rr

2

-

POP Rd

Извлечение байта из стека

Rd = STA«

2

-

Таблица 3.7. Группа команд передачи управления

Мнемоника

Описание

Операция

Циклы

Флаги

RJMP k

Относительный безусловный переход

PC = PC + k + 1

2

-

IJMP

Косвенный безусловный переход

PC = Z

2

-

RCALL

Относительный вызов подпрограммы

PC = PC + k + 1

3

-

ICALL

Косвенный вызов подпрограммы

PC = Z

3

-

RET

Возврат из подпрограммы

PC = STA^

4

-

RETI

Возврат из подпрограммы обработки прерывания

PC = STA^

4

I

CP Rd,Rr

Сравнение РОН

Rd - Rr

1

Z,N,V,C,H

CPC Rd,Rr

Сравнение РОН с учетом переноса

Rd - Rr - C

1

Z,N,V,C,H

CPI Rd,K

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

Rd - К

1

Z,N,V,C,H

CPSE Rd,Rr

Сравнение и пропуск следующей команды

Если Rd = Rr,

1/2/3

 

при равенстве

то PC = PC + 2 (3)

 

SBRC Rr,b

Пропуск след. команды, если разряд РОН

Если Rr.b = 0,

1/2/3

 

сброшен

то PC = PC + 2 (3)

 

SBRS Rr,b

Пропуск след. команды, если разряд РОН

Если Rr.b = 1,

1/2/3

 

установлен

то PC = PC + 2 (3)

 

SBIC A,b

Пропуск след. команды, если разряд РВВ

Если A.b = 0,

1/2/3

 

сброшен

то PC = PC + 2 (3)

 

SBIS A,b

Пропуск след. команды, если разряд РВВ

Если A.b = 1,

1/2/3

 

установлен

то PC = PC + 2 (3)

 

BRBC s,k

Переход, если флаг 8 регистра вШЕО сброшен

Если SREG.s = 0, то PC = PC + k + 1

1/2

-

BRBS s,k

Переход, если флаг 8 регистра вШЕО установ-

Если SREG.s = 1,

1/2

 

лен

то PC = PC + k + 1

 

BRCS k

Переход по переносу

Если C = 1, то PC = PC + k + 1

1/2

-

BRCC k

Переход, если нет переноса

Если C = 0,

то PC = PC + k + 1

1/2

-

BREQ k

Переход по условию «равно»

Если Z = 1, то PC = PC + k + 1

1/2

-

Таблица 3.7 (окончание)

Мнемоника

Описание

Операция

Циклы

Флаги

BRNE k

Переход по условию «не равно»

Если Ъ = 0, то РС = РС + к + 1

1/2

-

BRSH k

Переход по условию «выше или равно»

Если С = 0, то РС = РС + к + 1

1/2

-

BRLO k

Переход по условию «меньше»

Если С = 1, то РС = РС + к + 1

1/2

-

BRMI

Переход по условию «отрицательное значение»

Если N = 1, то РС = РС + к + 1

1/2

-

BRPL

Переход по условию «положительное значение»

Если N = 0, то РС = РС + к + 1

1/2

-

BRGE

Переход по условию «больше или равно» (числа со знаком)

Если ^ Ф V) = 0, то РС = РС + к + 1

1/2

-

BRLT

Переход по условию «меньше нуля» (числа со знаком)

Если ^ Ф V) = 1, то РС = РС + к + 1

1/2

-

BRHS

Переход по половинному переносу

Если Н = 1, то РС = РС + к + 1

1/2

-

BRHC

Переход, если нет половинного переноса

Если Н = 0,

то РС = РС + к + 1

1/2

-

BRTS

Переход, если флаг Т установлен

Если Т = 1, то РС = РС + к + 1

1/2

-

BRTC

Переход, если флаг Т сброшен

Если Т = 0, то РС = РС + к + 1

1/2

-

BRVS

Переход по переполнению доп. кода

Если V = 1, то РС = РС + к + 1

1/2

-

BRVC

Переход, если нет переполнения доп. кода

Если V = 0, то РС = РС + к + 1

1/2

-

BRID

Переход, если прерывания запрещены

Если I = 0, то РС = РС + к + 1

1/2

-

BRIE

Переход, если прерывания разрешены

Если I = 1, то РС = РС + к + 1

1/2

-

Таблица 3.8. Группа команд управления системой

Мнемоника

Описание

Операция

Циклы

Флаги

NOP

Нет операции

 

1

-

SLEEP

Переход в «спящий» режим

См. раздел 4.3

3

-

WDR

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

См. раздел 6.6

1

-