Инструкции 8-bit AVR assembler

Инструкции по работе с регистром SREG

BSET - Установить флаг в SREG

Описание

Устанавливает один бит в регистре SREG.

Флаг I = 1 если s = 7; иначе не изменятеся.

Флаг T = 1 если s = 6; иначе не изменятеся.

Флаг H = 1 если s = 5; иначе не изменятеся.

Флаг S = 1 если s = 4; иначе не изменятеся.

Флаг V = 1 если s = 3; иначе не изменятеся.

Флаг N = 1 если s = 2; иначе не изменятеся.

Флаг Z = 1 если s = 1; иначе не изменятеся.

Флаг C = 1 если s = 0; иначе не изменятеся.

Синтаксис Операнды Программный счетчик Размер (слов) Циклы
BSET s 0 ≤ s ≤ 7 PC ← PC + 1 1 1
16-битный код операции
1001 0100 0sss 1000
Статус-регистр
I T H S V N Z C
Пример кода
bset 6 ; Установить флаг T
bset 7 ; Разрешить прерывания

BCLR - Очистить флаг в SREG

Описание

Очищает один бит в регистре SREG.

Флаг I = 0 если s = 7; иначе не изменятеся.

Флаг T = 0 если s = 6; иначе не изменятеся.

Флаг H = 0 если s = 5; иначе не изменятеся.

Флаг S = 0 если s = 4; иначе не изменятеся.

Флаг V = 0 если s = 3; иначе не изменятеся.

Флаг N = 0 если s = 2; иначе не изменятеся.

Флаг Z = 0 если s = 1; иначе не изменятеся.

Флаг C = 0 если s = 0; иначе не изменятеся.

Синтаксис Операнды Программный счетчик Размер (слов) Циклы
BCLR s 0 ≤ s ≤ 7 PC ← PC + 1 1 1
16-битный код операции
1001 0100 1sss 1000
Статус-регистр
I T H S V N Z C
Пример кода
bclr 0; Очистить флаг переноса
bclr 7; Запретить прерывания

BST - Сохранить бит из регистра во флаг T в SREG

Описание

Сохраняет бит b из Rd во во флаг T в SREG.

T = 0 если бит b в Rd очищен, иначе Т = 1.

Синтаксис Операнды Программный счетчик Размер (слов) Циклы
BST Rd, b 0 ≤ d ≤ 31, 0 ≤ b ≤ 7 PC ← PC + 1 1 1
16-битный код операции
1111 101d dddd 0bbb
Статус-регистр
I T H S V N Z C
- - - - - - -
Пример кода
; Копирование бита
bst r1, 2 ; Сохранить бит 2 из r1 во флаг T
bld r0, 4 ; Загрузить флаг T в бит 4 в r0

BLD - Загрузить бит в регистр из флага T из SREG

Описание

Копирует бит из флага T из SREG в бит b в регистре Rd.

R(b) = 0 если флаг T = 0, иначе R(b) = 1.

Синтаксис Операнды Программный счетчик Размер (слов) Циклы
BLD Rd, b 0 ≤ d ≤ 31, 0 ≤ b ≤ 7 PC ← PC + 1 1 1
16-битный код операции
1111 100d dddd 0bbb
Статус-регистр
I T H S V N Z C
- - - - - - - -
Пример кода
см. инструкцию BST

SEC - Установить флаг переноса

Описание

Устанавливает флаг C в SREG.

C = 1

Синтаксис Операнды Программный счетчик Размер (слов) Циклы
SEC - PC ← PC + 1 1 1
16-битный код операции
1001 0100 0000 1000
Статус-регистр
I T H S V N Z C
- - - - - - - 1
Пример кода
sec ; Установить флаг переноса
adc r0, r0 ; r0 = r0 + r0 + 1

CLC - Очистить флаг переноса

Описание

Очищает флаг C в SREG.

C = 0

Синтаксис Операнды Программный счетчик Размер (слов) Циклы
CLC - PC ← PC + 1 1 1
16-битный код операции
1001 0100 1000 1000
Статус-регистр
I T H S V N Z C
- - - - - - - 0
Пример кода
ldi r16, 128 ; Загрузить константу 128 в r16
add r16, r16 ; Сложить r16 с самим собой
clc ; Очистить флаг переноса	
clz ; Очистить флаг нуля
clv ; Очистить флаг переполнения
cls ; Очистить флаг знакового числа

SEN - Установить флаг минуса

Описание

Устанавливает флаг N в SREG.

N = 1

Синтаксис Операнды Программный счетчик Размер (слов) Циклы
SEN - PC ← PC + 1 1 1
16-битный код операции
1001 0100 0010 1000
Статус-регистр
I T H S V N Z C
- - - - - 1 - -
Пример кода
sen ; Установить флаг минуса

CLN - Очистить флаг минуса

Описание

Очищает флаг N в SREG.

N = 0

Синтаксис Операнды Программный счетчик Размер (слов) Циклы
CLN - PC ← PC + 1 1 1
16-битный код операции
1001 0100 1010 1000
Статус-регистр
I T H S V N Z C
- - - - - 0 - -
Пример кода
ldi r16, 0x74 ; Загрузить константу 116 в r16
neg r16 ; Сменить знак
cln ; Очистить флаг минуса
clh ; Очистить флаг полупереноса

SEZ - Установить флаг нуля

Описание

Устанавливает флаг Z в SREG.

Z = 1

Синтаксис Операнды Программный счетчик Размер (слов) Циклы
SEZ - PC ← PC + 1 1 1
16-битный код операции
1001 0100 0001 1000
Статус-регистр
I T H S V N Z C
- - - - - - 1 -
Пример кода
sez ; Установить флаг нуля

CLZ - Очистить флаг нуля

Описание

Очищает флаг Z в SREG.

Z = 0

Синтаксис Операнды Программный счетчик Размер (слов) Циклы
CLZ - PC ← PC + 1 1 1
16-битный код операции
1001 0100 1001 1000
Статус-регистр
I T H S V N Z C
- - - - - - 0 -
Пример кода
см. инструкцию CLC

SEI - Установить флаг глобального разрешения прерываний

Описание

Устанавливает флаг I в SREG. Инструкция следующая за SEI будет выполнена до любого прерывания.

I = 1

Синтаксис Операнды Программный счетчик Размер (слов) Циклы
SEI - PC ← PC + 1 1 1
16-битный код операции
1001 0100 0111 1000
Статус-регистр
I T H S V N Z C
1 - - - - - - -
Пример кода
sei ; Разрешить прерывания
sleep ; перейти в спящий режим в ожидании прерывания
; замечание: переход в спящий режим состоится прежде ожидаемого прерывания

CLI - Очистить флаг глобального разрешения прерываний

Описание

Очищает флаг I в SREG. Прерывания будут запрещены немедленно. Никакое прерывание не будет обработано после инструкции CLI, даже если оно наступит одновременно с выполнением данной инструкции.

I = 0

Синтаксис Операнды Программный счетчик Размер (слов) Циклы
CLI - PC ← PC + 1 1 1
16-битный код операции
1001 0100 1111 1000
Статус-регистр
I T H S V N Z C
0 - - - - - - -
Пример кода
in r20, SREG ; Сохранить состояние SREG в регистр r20
cli ; Запретить прерывания
out SREG, r20 ; Восстановить флаги SREG (в том числе флаг I)

SES - Установить флаг знакового числа

Описание

Устанавливает флаг S в SREG.

S = 1

Синтаксис Операнды Программный счетчик Размер (слов) Циклы
SES - PC ← PC + 1 1 1
16-битный код операции
1001 0100 0100 1000
Статус-регистр
I T H S V N Z C
- - - 1 - - - -
Пример кода
ses ; Установить флаг знакового числа

CLS - Очистить флаг знакового числа

Описание

Очищает флаг S в SREG.

S = 0

Синтаксис Операнды Программный счетчик Размер (слов) Циклы
CLS - PC ← PC + 1 1 1
16-битный код операции
1001 0100 1100 1000
Статус-регистр
I T H S V N Z C
- - - 0 - - - -
Пример кода
см. инструкцию CLC

SEV - Установить флаг переполнения

Описание

Устанавливает флаг V в SREG.

V = 1

Синтаксис Операнды Программный счетчик Размер (слов) Циклы
SEV - PC ← PC + 1 1 1
16-битный код операции
1001 0100 0011 1000
Статус-регистр
I T H S V N Z C
- - - - 1 - - -
Пример кода
sev ; Установить флаг переполнения

CLV - Очистить флаг переполнения

Описание

Очищает флаг V в SREG.

V = 0

Синтаксис Операнды Программный счетчик Размер (слов) Циклы
CLV - PC ← PC + 1 1 1
16-битный код операции
1001 0100 1011 1000
Статус-регистр
I T H S V N Z C
- - - - 0 - - -
Пример кода
см. инструкцию CLC

SET - Установить пользовательский флаг T

Описание

Устанавливает флаг T в SREG.

T = 1

Синтаксис Операнды Программный счетчик Размер (слов) Циклы
SET - PC ← PC + 1 1 1
16-битный код операции
1001 0100 0110 1000
Статус-регистр
I T H S V N Z C
- 1 - - - - - -
Пример кода
set ; Установить пользовательский флаг

CLT - Очистить пользовательский флаг T

Описание

Очищает флаг T в SREG.

T = 0

Синтаксис Операнды Программный счетчик Размер (слов) Циклы
CLT - PC ← PC + 1 1 1
16-битный код операции
1001 0100 1110 1000
Статус-регистр
I T H S V N Z C
- 0 - - - - - -
Пример кода
clt ; Очистить пользовательский флаг

SEH - Установить флаг полупереноса

Описание

Устанавливает флаг H в SREG.

H = 1

Синтаксис Операнды Программный счетчик Размер (слов) Циклы
SEH - PC ← PC + 1 1 1
16-битный код операции
1001 0100 0101 1000
Статус-регистр
I T H S V N Z C
- - 1 - - - - -
Пример кода
seh ; Установить флаг полупереноса

CLH - Очистить флаг полупереноса

Описание

Очищает флаг H в SREG.

H = 0

Синтаксис Операнды Программный счетчик Размер (слов) Циклы
CLH - PC ← PC + 1 1 1
16-битный код операции
1001 0100 1101 1000
Статус-регистр
I T H S V N Z C
- - 0 - - - - -
Пример кода
см. инструкцию CLN