рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

Система команд 8-разрядных RISC микроконтроллеров семейства AVR

Система команд 8-разрядных RISC микроконтроллеров семейства AVR - раздел Компьютеры, Система Команд 8-Разрядных Risc Микроконтроллеров Семейства Avr Прин...

Система команд 8-разрядных RISC микроконтроллеров семейства AVR

Принятые обозначения

Регистр статуса (SREG)
SREG: Регистр статуса
C: Флаг переноса
Z: Флаг нулевого значения
N: Флаг отрицательного значения
V: Флаг-указатель переполнения дополнения до двух
S: NÅV, Для проверок со знаком
H: Флаг полупереноса
T: Флаг пересылки, используемый командами BLD и BST
I: Флаг разрешения/запрещения глобального прерывания
Регистры и операнды
Rd: Регистр назначения (и источник) в регистровом файле
Rr: Регистр источник в регистровом файле
R: Результат выполнения команды
K: Литерал или байт данных (8 бит)
k: Данные адреса константы для счетчика программ
b: Бит в регистровом файле или I/O регистр (3 бита)
s: Бит в регистре статуса (3 бита)
X, Y, Z: Регистр косвенной адресации (X=R27:R26, Y=R29:R28, Z=R31:R30)
P: Адрес I/O порта
q: Смещение при прямой адресации (6 бит)
I/O регистры
RAMPX, RAMPY, RAMPZ: Регистры связанные с X, Y и Z регистрами, обеспечивающие косвенную адресацию всей области СОЗУ микроконтроллера с объемом СОЗУ более 64 Кбайт
Стек:
STACK: Стек для адреса возврата и опущенных в стек регистров
SP: Указатель стека
Флаги:
Û Флаг, на который воздействует команда
0: Очищенный командой Флаг
1: Установленный командой флаг
-: Флаг, на который не воздействует команда
     

 

Обозначение Функция
ADC Сложить с переносом
ADD Сложить без переноса
ADIW Сложить непосредственное значение со словом
AND Выполнить логическое AND
ANDI Выполнить логическое AND c непосредственным значением
ASR Арифметически сдвинуть вправо
BCLR Очистить флаг
BLD Загрузить T флаг в бит регистра
BRBC Перейти если бит в регистре статуса очищен
BRBS Перейти если бит в регистре статуса установлен
BRCC Перейти если флаг переноса очищен
BRCS Перейти если флаг переноса установлен
BREQ Перейти если равно
BRGE Перейти если больше или равно (с учетом знака)
BRHC Перейти если флаг полупереноса очищен
BRHS Перейти если флаг полупереноса установлен
BRID Перейти если глобальное прерывание запрещено
BRIE Перейти если глобальное прерывание разрешено
BRLO Перейти если меньше (без знака)
BRLT Перейти если меньше чем (со знаком)
BRMI Перейти если минус
BRNE Перейти если не равно
BRPL Перейти если плюс
BRSH Перейти если равно или больше (без знака)
BRTC Перейти если флаг T очищен
BRTS Перейти если флаг T установлен
BRVC Перейти если переполнение очищено
BRVS Перейти если переполнение установлено
BSET Установить флаг
BST Переписать бит из регистра во флаг T
CALL Выполнить длинный вызов подпрограммы
CBI - Очистить бит в регистре I/O
CBR Очистить биты в регистре
CLC Очистить флаг переноса
CLH Очистить флаг полупереноса
CLI Очистить флаг глобального прерывания
CLN Очистить флаг отрицательного значения
CLR Очистить регистр
CLS Очистить флаг знака
CLT Очистить флаг T
CLV Очистить флаг переполнения
CLZ Очистить флаг нулевого значения
COM Выполнить дополнение до единицы
CP Сравнить
CPC Сравнить с учетом переноса
CPI Сравнить c константой
CPSE Сравнить и пропустить если равно
DEC Декрементировать
EOR Выполнить исключающее OR
ICALL Вызвать подпрограмму косвенно
IJMP Перейти косвенно
IN Загрузить данные из порта I/O в регистр
INC Инкрементировать
JMP Перейти
LD Rd,X Загрузить косвенно
LD Rd,X+ Загрузить косвенно инкрементировав впоследствии
LD Rd,-X Загрузить косвенно декрементировав предварительно
LDI Загрузить непосредственное значение
LDS Загрузить непосредственно из СОЗУ
LPM Загрузить байт памяти программ
LSL Логически сдвинуть влево
LSR Логически сдвинуть вправо
MOV Копировать регистр
MUL Перемножить
NEG Выполнить дополнение до двух
NOP Выполнить холостую команду
OR Выполнить логическое OR
ORI Выполнить логическое OR с непосредственным значением
OUT Записать данные из регистра в порт I/O
POP Загрузить регистр из стека
PUSH Поместить регистр в стек
RCALL Вызвать подпрограмму относительно
RET Вернуться из подпрограммы
RETI Вернуться из прерывания
RJMP Перейти относительно
ROL Сдвинуть влево через перенос
ROR Сдвинуть вправо через перенос
SBC Вычесть с переносом
SBCI Вычесть непосредственное значение с переносом
SBI Установить бит в регистр I/O
SBIC Пропустить если бит в регистре I/O очищен
SBIS Пропустить если бит в регистре I/O установлен
SBIW Вычесть непосредственное значение из слова
SBR Установить биты в регистре
SBRC Пропустить если бит в регистре очищен
SBRS Пропустить если бит в регистре установлен
SEC Установить флаг переноса
SEH Установить флаг полупереноса
SEI Установить флаг глобального прерывания
SEN Установить флаг отрицательного значения
SER Установить все биты регистра
SES Установить флаг знака
SET Установить флаг T
SEV Установить флаг переполнения
SEZ Установить флаг нулевого значения
SLEEP Установить режим SLEEP
ST X,Rr Записать косвенно
ST Y,Rr Записать косвенно из регистра в СОЗУ с использованием индекса Y
ST Z,Rr Записать косвенно из регистра в СОЗУ с использованием индекса Z
STS Загрузить непосредственно в СОЗУ
SUB Вычесть без переноса
SUBI Вычесть непосредственное значение
SWAP Поменять нибблы местами
TST Проверить на ноль или минус
WDR Сбросить сторожевой таймер

 

Команда ADC - Сложить с переносом

Описание:Сложение двух регистров и содержимого флага переноса (С), размещение результата в регистре назначения Rd.

Операция:

(i) Rd <- Rd + Rr + C
  Синтаксис Операнды: Счетчик программ:
(i) ADC Rd,Rr 0 < d < 31, 0 < r < 31 PC < PC + 1
           

16-разрядный код операции:

11rd dddd rrrr

Булевы выражения регистра статуса (SREG)

I T H S V N Z C    
- - <=> <=> <=> <=> <=> <=>    
H: Rd3*Rr3+Rr3+R3+R3*Rd3 Устанавливается если есть перенос из бита 3, в ином случае очищается
S: NEV, Для проверок со знаком
V: Rd7*Rr7*R7+Rd7*Rr7*R7 Устанавливается если в результате операции образуется переполнение дополнения до двух, в ином случае очищается
N: R7 Устанавливается если в результате установлен MSB, в ином случае очищается
Z: Rd7*Rr7*R7*R7*R7*Rd7 Устанавливается если результат $00, в ином случае очищается
C: Rd7*Rr7+Rr7+R7+R7*Rd7 Устанавливается если есть перенос из MSB результата, в ином случае очищается
R: (Результат) соответствует Rd после выполнения команды
                     

Пример:

; СложитьR1 : R0 с R3 : R2

add r2, r0 ; Сложить младший байт

adc r3, r1 ; Сложить старший байт с переносом

Слов: 1 (2 байта)

Циклов: 1

 

Команда ADD - Add without Carry - Сложить без переноса

Описание:Сложение двух регистров без добавления содержимого флага переноса (С), размещение результата в регистре назначения Rd.

Операция:

(i) Rd <- Rd + Rr
  Синтаксис Операнды: Счетчик программ:
(i) ADD Rd,Rr 0 < d < 31, 0 < r < 31 PC < PC + 1
           

16-разрядный код операции:

11rd dddd rrrr

Булевы выражения регистра статуса (SREG)

I T H S V N Z C    
- - <=> <=> <=> <=> <=> <=>    
H: Rd3*Rr3+Rr3+R3+R3*Rd3 Устанавливается если есть перенос из бита 3, в ином случае очищается
S: NEV, Для проверок со знаком
V: Rd7*Rr7*R7+Rd7*Rr7*R7 Устанавливается если в результате операции образуется переполнение дополнения до двух, в ином случае очищается
N: R7 Устанавливается если в результате установлен MSB, в ином случае очищается
Z: R7*R6*R5*R4*R3*R2*R1*R0 Устанавливается если результат $00, в ином случае очищается
C: Rd7*Rr7+Rr7*R7+R7*Rd7 Устанавливается если есть перенос из MSB результата, в ином случае очищается
R: (Результат) соответствует Rd после выполнения команды
                     

Пример:

add r1,r2 ; Сложить r2 с r1 (r1=r1+r2)

adc r28,r28 ; Сложить r28 с самим собой

(r28=r28+r28)

Слов: 1 (2 байта)

Циклов: 1

 

Команда ADIW - Add Immediate to Word- Сложить непосредственное значение со словом

Описание:Сложение непосредственного значения (0-63) с парой регистров и размещение результата в паре регистров. Команда работает с четырьмя верхними парами регистров, удобна для работы с регистрами указателями.

Операция:

(i) Rdh:Rdl <- Rdh:Rdl + K
  Синтаксис Операнды: Счетчик программ:
(i) ADIW Rdl,K dl Î {24,26,28,30}, 0 < K < 63 PC < PC + 1
           

16-разрядный код операции:

KKdd KKKK

Булевы выражения регистра статуса (SREG)

I T H S V N Z C  
- - - Û Û Û Û Û  

 

S: NEV, Для проверок со знаком
V: Rdh7 R15 Устанавливается если в результате операции образуется переполнение дополнения до двух, в ином случае очищается
N: R15 Устанавливается если в результате установлен MSB, в ином случае очищается
Z: R15*R14*R13*R12*R11*R10*R9*R8*R7*R6*R5*R4*R3*R2 Устанавливается если результат $0000, в ином случае очищается
C: R15*Rdh7 Устанавливается если есть перенос из MSB результата, в ином случае очищается
R: (Результат) соответствует Rdh:Rdl после выполнения команды (Rdh7-Rdh0 = R15-R8, Rdl7-Rdl0 = R7-R0)

Пример:

adiw r24, 1 ; Сложить 1 с r25:r24

adiw r30, 63 ; Сложить 63 с Z указателем (r31 : r30)

Слов: 1 (2 байта)

Циклов: 2

 

Команда AND - Выполнить логическое AND

Описание: Выполнение логического AND между содержимым регистров Rd и Rr и помещение результата в регистр назначения Rd.

Операция:

(i) Rd <- Rd*Rr
  Синтаксис Операнды: Счетчик программ:
(i) AND Rd,Rr 0 < d < 31,0 < r < 31 PC <- PC + 1
           

16-разрядный код операции:

00rd dddd rrrr

Булевы выражения регистра статуса (SREG)

I T H S V N Z C    
- - - Û Û Û -    
S: NEV, Для проверок со знаком
V: 0 Очищен
N: R7 Устанавливается если в результате установлен MSB, в ином случае очищается
Z: R7*R6*R5*R4*R3*R2*R1*R0 Устанавливается если результат $00, в ином случае очищается
R: (Результат) соответствует Rd после выполнения команды
                     

Пример:

and r2, r3 ; Поразрядное and r2 и r3, результат поместить в r2

ldi r16, 1 ; Установить маску 0000 0001 в r16

and r2, r16 ; Выделить бит 0 в r2

Слов: 1 (2 байта)

Циклов: 1

 

Команда ANDI - Выполнить логическое AND c непосредственным значением

Описание:Выполнение логического AND между содержимым регистра Rd и константой и помещение результата в регистр назначения Rd.

Операция:

(i) Rd <- Rd*K
  Синтаксис Операнды: Счетчик программ:
(i) ANDI Rd,K 16 < d <31, 0 < K <255 PC <- PC + 1
           

16-разрядный код операции:

KKKK dddd KKKK

Булевы выражения регистра статуса (SREG)

I T H S V N Z C    
- - - Û Û Û -    
S: NEV, Для проверок со знаком
V: 0 Очищен
N: R7 Устанавливается если в результате установлен MSB, в ином случае очищается
Z: R7*R6*R5*R4*R3*R2*R1*R0 Устанавливается если результат $00, в ином случае очищается
R: (Результат) соответствует Rd после выполнения команды
                     

Пример:

andi r17, $0F ; Очистить старший ниббл r17

andi r18, $10 ; Выделить бит 4 в r18

andi r19, $AA ; Очистить нечетные биты r19

Слов: 1 (2 байта)

Циклов: 1

 

Команда ASR - Арифметически сдвинуть вправо

Описание:Выполнение сдвига всех битов Rd на одно место вправо. Состояние бита 7 не изменяется. Бит 0 загружается во флаг переноса (С) регистра состояния (SREG). Эта команда эффективно делит значение дополнения до двух на два, без изменения знака. Флаг переноса может быть использован для округления результата.

Операция:

(i)  
  Синтаксис Операнды: Счетчик программ:
(i) ASR Rd 0 < d <31 PC <- PC + 1
           

16-разрядный код операции:

010d dddd

Булевы выражения регистра статуса (SREG)

I T H S V N Z C    
- - - Û Û Û Û Û    
S: NEV, Для проверок со знаком
V: NEC (Для N и C после сдвига) Устанавливается если (N устанавливается и C очищается) или (N очищается а C устанавливается). В ином случае очищается (при наличии значений N и C после сдвига)
N: R7 Устанавливается если в результате установлен MSB, в ином случае очищается
Z: R7*R6*R5*R4*R3*R2*R1*R0 Устанавливается если результат $00, в ином случае очищается
C: Rd0 Устанавливается если перед сдвигом были установлены LSB или Rd
R: (Результат) соответствует Rd после выполнения команды
                     

Пример:

ldi r16, $10 ; Загрузить десятичное значение 16 в r16

asr r16 ; r16=r16 / 2

ldi r17, $FC ; Загрузить -4 в r17

asr r17 ; r17=r17 / 2

Слов: 1 (2 байта)

Циклов: 1

 

Команда BCLR - Очистить бит в регистре статуса (SREG)

Описание:Очистка одного флага в регистре статуса

Операция:

(i) SREG(s) <- 0
  Синтаксис Операнды: Счетчик программ:
(i) BCLR s 0 < S < 7 PC <- PC + 1
           

16-разрядный код операции:

1sss

Булевы выражения регистра статуса (SREG)

I T H S V N Z C    
Û Û Û Û Û Û Û Û    
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 0 ; Очистить флаг переноса

bclr 7 ; Запретить прерывания

Слов: 1 (2 байта)

Циклов: 1

 

Команда BLD - Загрузить содержимое T флага регистра статуса (SREG) в бит регистра

Описание:Копирование содержимого T флага регистра статуса в бит b регистра Rd

Операция:

(i) Rd(b) <- T
  Синтаксис Операнды: Счетчик программ:
(i) BLD Rd,b 0 < d < 31, 0 < b < 7 PC <- PC + 1
           

16-разрядный код операции:

100d dddd 0bbb

Булевы выражения регистра статуса (SREG)

I T H S V N Z C  
- - - - - - - -  

Пример:

; Скопировать бит

bst r1, 0 ; Сохранить бит 2 регистра r1 во флаге T

bld r0, 4 ; Загрузить T в бит 4 регистра r0

Слов: 1 (2 байта)

Циклов: 1

 

Команда BRBC - Перейти если бит в регистре статуса очищен

Описание:Условный относительный переход. Тестируется один из битов регистра статуса и, если бит очищен, выполняется переход относительно состояния счетчика программ. Данная команда выполняет переход в любом направлении относительно состояния счетчика программ (PC-64 < назначение < PC+63). Параметр k является смещением относительно состояния счетчика программ и представлен в форме дополнения до двух.

Операция:

(i) If SREG(s) = 0 then PC <- PC + k +1, else PC <- PC +1
  Синтаксис Операнды: Счетчик программ:
(i) BRBC s, k 0 < s <7, -64 < k <+63 PC <- PC + k + 1, PC <- PC + 1, если условия не соблюдены
           

16-разрядный код операции:

01kk kkkk ksss

Булевы выражения регистра статуса (SREG)

I T H S V N Z C  
- - - - - - - -  

Пример:

cpi r20, 5 ;Сравнить r20 со значением 5

brbc 1,noteq ;Перейти если флаг нуля очищен

.....

noteq: nop ;Перейти по назначению(пустая операция)

Слов: 1 (2 байта)

Циклов:1 если условия не соблюдены, 2 при соблюдении правильных условий

 

Команда BRBS - Перейти если бит в регистре статуса установлен

Описание:Условный относительный переход. Тестируется один из битов регистра статуса и, если бит установлен, выполняется переход относительно состояния счетчика программ. Данная команда выполняет переход в любом направлении относительно состояния счетчика программ (PC-64 < назначение < PC+63). Параметр k является смещением относительно счетчика программ и представлен в форме дополнения до двух.

Операция:

(i) If SREG(s) = 1 then PC <- PC + k +1, else PC <- PC +1
  Синтаксис Операнды: Счетчик программ:
(i) BRBS s, k 0 < s <7, -64 < k <+63 PC <- PC + k + 1, PC <- PC + 1, если условия не соблюдены
           

16-разрядный код операции:

1111 kkkk ksss 1111 00kk kkkk ksss

Булевы выражения регистра статуса (SREG)

I T H S V N Z C  
- - - - - - - -  

Пример:

bst r0, 3 ;Загрузить T битом 3 регистра r0

brbs 6,bitset ;Перейти если бит T установлен

.....

bitset: nop ;Перейти по назначению(пустая операция)

Слов: 1 (2 байта)

Циклов:1 если условия не соблюдены, 2 при соблюдении правильных условий

 

Команда BRCC - Перейти если флаг переноса очищен

Описание:Условный относительный переход. Тестируется бит флага переноса (С) регистра статуса и, если бит очищен, выполняется переход относительно состояния счетчика программ. Данная команда выполняет переход в любом направлении относительно состояния счетчика программ (PC-64 < назначение < PC+63). Параметр k является смещением относительно состояния счетчика программ и представлен в форме дополнения до двух. (Команда эквивалентна BRBC 0,k).

Операция:

(i) If С= 0 then PC <- PC + k +1, else PC <- PC +1
  Синтаксис Операнды: Счетчик программ:
(i) BRСС k -64 < k <+63 PC <- PC + k + 1, PC <- PC + 1, если условия не соблюдены
           

16-разрядный код операции:

01kk kkkk k000

Булевы выражения регистра статуса (SREG)

I T H S V N Z C  
- - - - - - - -  

Пример:

add r22, r23 ; Сложить r23 с r22

brcc nocarry ; Перейти если перенос очищен

.....

nocarry: nop ; Перейти по назначению (пустая операция)

Слов: 1 (2 байта)

Циклов:1 если условия не соблюдены, 2 при соблюдении правильных условий

 

Команда BRCS - Перейти если флаг переноса установлен

Описание:Условный относительный переход. Тестируется бит флага переноса (С) регистра статуса и, если бит установлен, выполняется переход относительно состояния счетчика программ. Данная команда выполняет переход в любом направлении относительно состояния счетчика программ (PC-64 < назначение < PC+63). Параметр k является смещением относительно состояния счетчика программ и представлен в форме дополнения до двух. (Команда эквивалентна BRBS 0,k).

Операция:

(i) If С= 1 then PC <- PC + k +1, else PC <- PC +1
  Синтаксис Операнды: Счетчик программ:
(i) BRСS k -64 < k <+63 PC <- PC + k + 1, PC <- PC + 1, если условия не соблюдены
           

16-разрядный код операции:

00kk kkkk k000

Булевы выражения регистра статуса (SREG)

I T H S V N Z C  
- - - - - - - -  

Пример:

cpi r26, $56 ; Сравнить r26 с $56

brcs carry ; Перейти если перенос установлен

.....

carry: nop ; Перейти по назначению (пустая операция)

Слов: 1 (2 байта)

Циклов:1 если условия не соблюдены, 2 при соблюдении правильных условий

 

Команда BREQ - Перейти если равно

Описание:Условный относительный переход. Тестируется бит флага нулевого значения (Z) регистра статуса и, если бит установлен, выполняется переход относительно состояния счетчика программ. Если команда выполняется непосредственно после выполнения любой из команд CP, CPI, SUB или SUBI переход произойдет если, и только если, двоичное число, со знаком или без знака, представленное в Rd, эквивалентно двоичному числу, со знаком или без знака, представленному в Rr. Данная команда выполняет переход в любом направлении относительно состояния счетчика программ (PC-64 < назначение < PC+63). Параметр k является смещением относительно состояния счетчика программ и представлен в форме дополнения до двух. (Команда эквивалентна BRBS 1,k).

Операция:

(i) If Rd = Rr (Z = 1) then PC <- PC + k +1, else PC <- PC +1
  Синтаксис Операнды: Счетчик программ:
(i) BREQ k -64 < k <+63 PC <- PC + k + 1, PC <- PC + 1, если условия не соблюдены
           

16-разрядный код операции:

00kk kkkk k001

Булевы выражения регистра статуса (SREG)

I T H S V N Z C  
- - - - - - - -  

Пример:

cp r1, r0 ; Сравнить регистры r1 и r0

breq equal ; Перейти если содержимое регистров совпадает

.....

equal: nop ; Перейти по назначению (пустая операция)

Слов: 1 (2 байта)

Циклов:1 если условия не соблюдены, 2 при соблюдении правильных условий

 

Команда BRGE - Перейти если больше или равно (с учетом знака)

Описание:Условный относительный переход. Тестируется бит флага знака (S) регистра статуса и, если бит очищен, выполняется переход относительно состояния счетчика программ. Если команда выполняется непосредственно после выполнения любой из команд CP, CPI, SUB или SUBI переход произойдет если, и только если, двоичное число, со знаком представленное в Rd, больше или эквивалентно двоичному числу со знаком, представленному в Rr. Данная команда выполняет переход в любом направлении относительно состояния счетчика программ (PC-64 < назначение < PC+63). Параметр k является смещением относительно состояния счетчика программ и представлен в форме дополнения до двух. (Команда эквивалентна BRBC 4,k).

Операция:

(i) If Rd > Rr (NEV = 0) then PC <- PC + k +1, else PC <- PC +1
  Синтаксис Операнды: Счетчик программ:
(i) BRGE k -64 < k <+63 PC <- PC + k + 1 PC <- PC + 1, если условия не соблюдены
           

16-разрядный код операции:

01kk kkkk k100

Булевы выражения регистра статуса (SREG)

I T H S V N Z C  
- - - - - - - -  

Пример:

cp r11, r12 ; Сравнить регистры r11 и r12

brge greateq ; Перейти если r11 >= r12 (со знаком)

.....

greateq: nop ; Перейти по назначению (пустая операция)

Слов: 1 (2 байта)

Циклов:1 если условия не соблюдены, 2 при соблюдении правильных условий

 

Команда BRHC - Перейти если флаг полупереноса очищен

Описание:Условный относительный переход. Тестируется бит флага полупереноса (H) регистра статуса и, если бит очищен, выполняется переход относительно состояния счетчика программ. Данная команда выполняет переход в любом направлении относительно состояния счетчика программ (PC-64 < назначение < PC+63). Параметр k является смещением относительно состояния счетчика программ и представлен в форме дополнения до двух. (Команда эквивалентна BRBC 5,k).

Операция:

(i) If H = 0 then PC <- PC + k +1, else PC <- PC +1
  Синтаксис Операнды: Счетчик программ:
(i) BRHC k -64 < k <+63 PC <- PC + k + 1 PC <- PC + 1, если условия не соблюдены
           

16-разрядный код операции:

01kk kkkk k101

Булевы выражения регистра статуса (SREG)

I T H S V N Z C  
- - - - - - - -  

Пример:

brhc hclear ; Перейти если флаг полупереноса очищен

.....

hclear: nop ; Перейти по назначению (пустая операция)

Слов: 1 (2 байта)

Циклов:1 если условия не соблюдены, 2 при соблюдении правильных условий

 

Команда BRHS - Перейти если флаг полупереноса установлен

Описание:Условный относительный переход. Тестируется бит флага полупереноса (H) регистра статуса и, если бит установлен, выполняется переход относительно состояния счетчика программ. Данная команда выполняет переход в любом направлении относительно состояния счетчика программ (PC-64 < назначение < PC+63). Параметр k является смещением относительно состояния счетчика программ и представлен в форме дополнения до двух. (Команда эквивалентна BRBS 5,k).

Операция:

(i) If H = 1 then PC <- PC + k +1, else PC <- PC +1
  Синтаксис Операнды: Счетчик программ:
(i) BRHS k -64 < k <+63 PC <- PC + k + 1 PC <- PC + 1, если условия не соблюдены
           

16-разрядный код операции:

00kk kkkk k101

Булевы выражения регистра статуса (SREG)

I T H S V N Z C  
- - - - - - - -  

Пример:

brhs hset ; Перейти если флаг полупереноса установлен

.....

hset: nop ; Перейти по назначению (пустая операция)

Слов: 1 (2 байта)

Циклов:1 если условия не соблюдены, 2 при соблюдении правильных условий

 

Команда BRID - Перейти если глобальное прерывание запрещено

Описание:Условный относительный переход. Тестируется бит флага глобального прерывания (I) регистра статуса и, если бит сброшен, выполняется переход относительно состояния счетчика программ. Данная команда выполняет переход в любом направлении относительно состояния счетчика программ (PC-64 << назначение < PC+63). Параметр k является смещением относительно состояния счетчика программ и представлен в форме дополнения до двух. (Команда эквивалентна BRBC 7,k).

Операция:

(i) If I = 0 then PC <- PC + k +1, else PC <- PC +1
  Синтаксис Операнды: Счетчик программ:
(i) BRID k -64 < k <+63 PC <- PC + k + 1 PC <- PC + 1, если условия не соблюдены
           

16-разрядный код операции:

01kk kkkk k111

Булевы выражения регистра статуса (SREG)

I T H S V N Z C  
- - - - - - - -  

Пример:

brid intdis ; Перейти если глобальное прерывание запрещено

.....

intdis: nop ; Перейти по назначению (пустая операция)

Слов: 1 (2 байта)

Циклов:1 если условия не соблюдены, 2 при соблюдении правильных условий

 

Команда BRIE - Перейти если глобальное прерывание разрешено

Описание:Условный относительный переход. Тестируется бит флага глобального прерывания (I) регистра статуса и, если бит установлен, выполняется переход относительно состояния счетчика программ. Данная команда выполняет переход в любом направлении относительно состояния счетчика программ (PC64 < назначение < PC+63). Параметр k является смещением относительно состояния счетчика программ и представлен в форме дополнения до двух. (Команда эквивалентна BRBS 7,k).

Операция:

(i) If I = 1 then PC <- PC + k +1, else PC <- PC +1
  Синтаксис Операнды: Счетчик программ:
(i) BRIE k -64 < k <+63 PC <- PC + k + 1 PC <- PC + 1, если условия не соблюдены
           

16-разрядный код операции:

00kk kkkk k111

Булевы выражения регистра статуса (SREG)

I T H S V N Z C  
- - - - - - - -  

Пример:

brie inten ;Перейти если глобальное прерывание разрешено

.....

inten: nop ;Перейти по назначению (пустая операция)

Слов: 1 (2 байта)

Циклов:1 если условия не соблюдены, 2 при соблюдении правильных условий

 

Команда BRLO - Перейти если меньше (без знака)

Описание:Условный относительный переход. Тестируется бит флага переноса (C) регистра статуса и, если бит установлен, выполняется переход относительно состояния счетчика программ. Если команда выполняется непосредственно после выполнения любой из команд CP, CPI, SUB или SUBI переход произойдет если, и только если, двоичное число без знака, представленное в Rd, меньше двоичного числа без знака, представленного в Rr Данная команда выполняет переход в любом направлении относительно состояния счетчика программ (PC-64 < назначение < PC+63). Параметр k является смещением относительно состояния счетчика программ и представлен в форме дополнения до двух. (Команда эквивалентна BRBS 0,k).

Операция:

(i) If Rd < Rr (C = 1) then PC <- PC + k +1, else PC <- PC +1
  Синтаксис Операнды: Счетчик программ:
(i) BRLO k -64 < k <+63 PC <- PC + k + 1 PC <- PC + 1, если условия не соблюдены
           

16-разрядный код операции:

00kk kkkk k000

Булевы выражения регистра статуса (SREG)

I T H S V N Z C  
- - - - - - - -  

Пример:

eor r19, r19 ; Очистить r19

loop: inc r19 ; Увеличить на 1 r19

.....

cpi r19, $10 ; Сравнить r19 с $10

brlo loop ; Перейти если r19 < $10 (без знака)

nop ; Выйти из петли (пустая операция)

Слов: 1 (2 байта)

Циклов:1 если условия не соблюдены, 2 при соблюдении правильных условий

 

Команда BRLT - Перейти если меньше чем (со знаком)

Описание:Условный относительный переход. Тестируется бит флага знака (S) регистра статуса и, если бит установлен, выполняется переход относительно состояния счетчика программ. Если команда выполняется непосредственно после выполнения любой из команд CP, CPI, SUB или SUBI переход произойдет если, и только если, двоичное число со знаком, представленное в Rd, меньше двоичного числа со знаком, представленного в Rr. Данная команда выполняет переход в любом направлении относительно состояния счетчика программ (PC-64 < назначение < PC+63). Параметр k является смещением относительно состояния счетчика программ и представлен в форме дополнения до двух. (Команда эквивалентна BRBS 4,k).

Операция:

(i) If Rd < Rr (NEV = 1) then PC <- PC + k +1, else PC <- PC +1
  Синтаксис Операнды: Счетчик программ:
(i) BRLT k -64 < k <+63 PC <- PC + k + 1 PC <- PC + 1, если условия не соблюдены
           

16-разрядный код операции:

00kk kkkk k100

Булевы выражения регистра статуса (SREG)

I T H S V N Z C  
- - - - - - - -  

Пример:

cp r16, r1 ; Сравнить r16 с r1

brlt less ; Перейти если r16 < r1 (со знаком)

.....

less nop ; Перейти по назначению (пустая операция)

Слов: 1 (2 байта)

Циклов:1 если условия не соблюдены, 2 при соблюдении правильных условий

 

Команда BRMI - Перейти если минус

Описание:Условный относительный переход. Тестируется бит флага отрицательного значения (N) регистра статуса и, если бит установлен, выполняется переход относительно состояния счетчика программ. Данная команда выполняет переход в любом направлении относительно состояния счетчика программ (PC64 < назначение < PC+63). Параметр k является смещением относительно состояния счетчика программ и представлен в форме дополнения до двух. (Команда эквивалентна BRBS r, k).

Операция:

(i) If N = 1 then then PC <- PC + k +1, else PC <- PC +1
  Синтаксис Операнды: Счетчик программ:
(i) BRMI k -64 < k <+63 PC <- PC + k + 1 PC <- PC + 1, если условия не соблюдены
           

16-разрядный код операции:

00kk kkkk k010

Булевы выражения регистра статуса (SREG)

I T H S V N Z C  
- - - - - - - -  

Пример:

subi r18, 4 ; Вычесть 4 из r18

brmi negative ; Перейти если результат отрицательный

.....

negative: nop ; Перейти по назначению (пустая операция)

Слов: 1 (2 байта)

Циклов:1 если условия не соблюдены, 2 при соблюдении правильных условий

 

Команда BRNE - Перейти если не равно

Описание:Условный относительный переход. Тестируется бит флага нулевого значения (Z) регистра статуса и, если бит очищен, выполняется переход относительно состояния счетчика программ. Если команда выполняется непосредственно после выполнения любой из команд CP, CPI, SUB или SUBI переход произойдет если, и только если, двоичное число со знаком или без знака, представленное в Rd, не равно двоичному числу со знаком или без знака, представленному в Rr Данная команда выполняет переход в любом направлении относительно состояния счетчика программ (PC-64 < назначение < PC+63). Параметр k является смещением относительно состояния счетчика программ и представлен в форме дополнения до двух. (Команда эквивалентна BRBC 1,k).

Операция:

(i) If Rd ¹ Rr (Z = 0) then then PC <- PC + k +1, else PC <- PC +1
  Синтаксис Операнды: Счетчик программ:
(i) BRNE k -64 < k <+63 PC <- PC + k + 1 PC <- PC + 1, если условия не соблюдены
           

16-разрядный код операции:

01kk kkkk k001

Булевы выражения регистра статуса (SREG)

I T H S V N Z C  
- - - - - - - -  

Пример:

eor r27, r27 ; Очистить r27

loop: inc r27 ; Увеличить на 1 r27

.....

cpi r27, 5 ; Сравнить r27 с 5

brne loop ; Перейти если r27 <> 5

nop ; Выйти из петли (пустая операция)

Слов: 1 (2 байта)

Циклов:1 если условия не соблюдены, 2 при соблюдении правильных условий

 

Команда BRPL - Перейти если плюс

Описание:Условный относительный переход. Тестируется бит флага отрицательного значения (N) регистра статуса и, если бит очищен, выполняется переход относительно состояния счетчика программ. Данная команда выполняет переход в любом направлении относительно состояния счетчика программ (PC-64 < назначение < PC+63). Параметр k является смещением относительно состояния счетчика программ и представлен в форме дополнения до двух. (Команда эквивалентна BRBC 2,k).

Операция:

(i) If N = 0 then then PC <- PC + k +1, else PC <- PC +1
  Синтаксис Операнды: Счетчик программ:
(i) BRPL k -64 < k <+63 PC <- PC + k + 1 PC <- PC + 1, если условия не соблюдены
           

16-разрядный код операции:

01kk kkkk k010

Булевы выражения регистра статуса (SREG)

I T H S V N Z C  
- - - - - - - -  

Пример:

subi r26, $50 ; Вычесть $50 из r26

brpl positive ; Перейти если r26 положителен

.....

positive: nop ; Перейти по назначению (пустая операция)

Слов: 1 (2 байта)

Циклов:1 если условия не соблюдены, 2 при соблюдении правильных условий

 

Команда BRSH - Перейти если равно или больше (без знака)

Описание:Условный относительный переход. Тестируется бит флага перехода (C) регистра статуса и, если бит очищен, выполняется переход относительно состояния счетчика программ. Если команда выполняется непосредственно после выполнения любой из команд CP, CPI, SUB или SUBI переход произойдет если, и только если, двоичное число без знака, представленное в Rd, больше или равно двоичному числу без знака, представленному в Rr Данная команда выполняет переход в любом направлении относительно состояния счетчика программ (PC-64 < назначение < PC+63). Параметр k является смещением относительно состояния счетчика программ и представлен в форме дополнения до двух. (Команда эквивалентна BRBC 0,k).

Операция:

(i) If Rd > Rr (C = 0) then then PC <- PC + k +1, else PC <- PC +1
  Синтаксис Операнды: Счетчик программ:
(i) BRSH k -64 < k <+63 PC <- PC + k + 1 PC <- PC + 1, если условия не соблюдены
           

16-разрядный код операции:

01kk kkkk k000

Булевы выражения регистра статуса (SREG)

I T H S V N Z C  
- - - - - - - -  

Пример:

subi r19, 4 ; Вычесть 4 из r19

brsh highsm ; Перейти если r2 >= 4 (без знака)

.....

highsm: nop ; Перейти по назначению (пустая операция)

Слов: 1 (2 байта)

Циклов:1 если условия не соблюдены, 2 при соблюдении правильных условий

 

Команда BRTC - Перейти если флаг T очищен

Описание:Условный относительный переход. Тестируется бит флага пересылки (T) регистра статуса и, если бит очищен, выполняется переход относительно состояния счетчика программ. Данная команда выполняет переход в любом направлении относительно состояния счетчика программ (PC-64 < назначение < PC+63). Параметр k является смещением относительно состояния счетчика программ и представлен в форме дополнения до двух. (Команда эквивалентна BRBC 6,k).

Операция:

(i) If T = 0 then then PC <- PC + k +1, else PC <- PC +1
  Синтаксис Операнды: Счетчик программ:
(i) BRTC k -64 < k <+63 PC <- PC + k + 1 PC <- PC + 1, если условия не соблюдены
           

16-разрядный код операции:

01kk kkkk k110

Булевы выражения регистра статуса (SREG)

I T H S V N Z C  
- - - - - - - -  

Пример:

bst r3, 5 ; Сохранить бит 5 регистра r3 во флаге T

brtc tclear ; Перейти если этот бит очищен

.....

tclear: nop ; Перейти по назначению (пустая операция)

Слов: 1 (2 байта)

Циклов:1 если условия не соблюдены, 2 при соблюдении правильных условий

 

Команда BRTS - Перейти если флаг T установлен

Описание:Условный относительный переход. Тестируется бит флага пересылки (T) регистра статуса и, если бит установлен, выполняется переход относительно состояния счетчика программ. Данная команда выполняет переход в любом направлении относительно состояния счетчика программ (PC-64 < назначение < PC+63). Параметр k является смещением относительно состояния счетчика программ и представлен в форме дополнения до двух. (Команда эквивалентна BRBC 6,k).

Операция:

(i) If T = 1 then then PC <- PC + k +1, else PC <- PC +1
  Синтаксис Операнды: Счетчик программ:
(i) BRTS k -64 < k <+63 PC <- PC + k + 1 PC <- PC + 1, если условия не соблюдены
           

16-разрядный код операции:

00kk kkkk k110

Булевы выражения регистра статуса (SREG)

I T H S V N Z C  
- - - - - - - -  

Пример:

bst r3, 5 ; Сохранить бит 5 регистра r3 во флаге T

brts tset ; Перейти если этот бит установлен

.....

tset: nop ; Перейти по назначению (пустая операция)

Слов: 1 (2 байта)

Циклов:1 если условия не соблюдены, 2 при соблюдении правильных условий

 

Команда BRVC - Перейти если переполнение очищено

Описание:Условный относительный переход. Тестируется бит флага переполнения (V) регистра статуса и, если бит очищен, выполняется переход относительно состояния счетчика программ. Данная команда выполняет переход в любом направлении относительно состояния счетчика программ (PC-64 < назначение < PC+63). Параметр k является смещением относительно состояния счетчика программ и представлен в форме дополнения до двух. (Команда эквивалентна BRBC 3,k).

Операция:

(i) If V = 0 then then PC <- PC + k +1, else PC <- PC +1
  Синтаксис Операнды: Счетчик программ:
(i) BRVC k -64 < k <+63 PC <- PC + k + 1 PC <- PC + 1, если условия не соблюдены
           

16-разрядный код операции:

01kk kkkk k011

Булевы выражения регистра статуса (SREG)

I T H S V N Z C  
- - - - - - - -  

Пример:

add r3, r4 ; Сложить r4 с r3

brvc noover ; Перейти если нет переполнения

.....

noover: nop ; Перейти по назначению (пустая операция)

Слов: 1 (2 байта)

Циклов:1 если условия не соблюдены, 2 при соблюдении правильных условий

 

Команда BRVS - Перейти если переполнение установлено

Описание:Условный относительный переход. Тестируется бит флага переполнения (V) регистра статуса и, если бит установлен, выполняется переход относительно состояния счетчика программ. Данная команда выполняет переход в любом направлении относительно состояния счетчика программ (PC-64 < назначение < PC+63). Параметр k является смещением относительно состояния счетчика программ и представлен в форме дополнения до двух. (Команда эквивалентна BRBC 3,k).

Операция:

(i) If V = 1 then then PC <- PC + k +1, else PC <- PC +1
  Синтаксис Операнды: Счетчик программ:
(i) BRVS k -64 < k <+63 PC <- PC + k + 1 PC <- PC + 1, если условия не соблюдены
           

16-разрядный код операции:

00kk kkkk k011

Булевы выражения регистра статуса (SREG)

I T H S V N Z C  
- - - - - - - -  

Пример:

add r3, r4 ; Сложит r4 с r3

brvs overfl ; Перейти если есть переполнение

.....

overfl: nop ; Перейти по назначению (пустая операция)

Слов: 1 (2 байта)

Циклов:1 если условия не соблюдены, 2 при соблюдении правильных условий

 

Команда BSET - Установить бит в регистре статуса (SREG)

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

Операция:

(i) SREG(s)<-- 1
  Синтаксис Операнды: Счетчик программ:
(i) BSET s 0 < s < 7 PC <- PC + 1
           

16-разрядный код операции:

0sss

Булевы выражения регистра статуса (SREG)

I T H S V N Z C    
Û Û Û Û Û Û Û Û    
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 6 ; Установить флаг T

bset 7 ; Разрешить прерывание

Слов: 1 (2 байта)

Циклов: 1

 

Команда BST - Переписать бит из регистра во флаг T регистра статуса (SREG)

Описание:Перезапись бита b из регистра Rd в флаг T регистра статуса (SREG)

Операция:

(i) T <-- Rd(b)
  Синтаксис Операнды: Счетчик программ:
(i) BST Rd,b 0 < d < 31, 0 < b < 7 PC <- PC + 1
           

16-разрядный код операции:

101d dddd Xbbb

Булевы выражения регистра статуса (SREG)

I T H S V N Z C    
- Û - - - - - -    
T : 0 если бит b в Rd очищен: в ином случае устанавливается 1
                     

Пример:

; Копировать бит

bst r1, 2 ; Сохранить бит 2 регистра r1 во флаге T

bld r0, 4 ; Загрузить T в бит 4регистра r0

Слов: 1 (2 байта)

Циклов: 1

 

Команда CALL - Выполнить длинный вызов подпрограммы

Описание:Вызов подпрограммы из памяти программ. Адрес возврата (к команде после CALL) сохраняется в стеке. (См. также RCALL).

Операция:

  (i) PC <-- k Приборы с 16-разрядным счетчиком программ, максимальный объем памяти программ 128К.
  (i) PC <-- k Приборы с 22-разрядным счетчиком программ, максимальный объем памяти программ 8М.
  Синтаксис Операнды: Счетчик программ:  
(i) CALL k 0 < k < 64K PC <-- kSTACK <-- PC + 2 SP <-- SP-2, (2 байта, 16 битов)  
(i) CALL k 0 < k < 4M PC <-- kSTACK <-- PC + 2 SP <-- SP-3, (3 байта, 22 бита)  
               

16-разрядный код операции:

010k kkkk 111k
kkkk kkkk kkkk kkkk

Булевы выражения регистра статуса (SREG)

I T H S V N Z C  
- - - - - - - -  

Пример:

mov r16, r0 ; Копировать r0 в r16

call check ; Вызвать подпрограмму

nop ; Продолжать (пустая операция)

. . .

check: cpi r16, $42 ; Проверить содержит ли r16 заданное значение

breq error ; Перейти если содержит

ret ; Вернуться из подпрограммы

. . .

error: rjmp error ; Бесконечная петля

Слов: 2 (4 байта)

Циклов: 4

 

Команда CBI - Очистить бит в регистре I/O

Описание:Очистка определенного бита в регистре ввода/вывода. Команда работает c младшими 32 регистрами ввода/вывода - адреса с 0 по 31.

Операция:

(i) I/O(P,b)<-- 0  
    Синтаксис Операнды: Счетчик программ:
  (i) CBI P,b 0 < P < 31, 0 < b < 7 PC <-- PC + 1
             

16-разрядный код операции:

pppp pbbb

Булевы выражения регистра статуса (SREG)

I T H S V N Z C  
- - - - - - - -  

Пример:

cbi $12. 7 ; Очистить бит 7 в Порте D

Слов: 1 (2 байта)

Циклов: 2

 

Команда CBR - oчистить биты в регистре

Описание:Очистка определенных битов регистра Rd. Выполняется логическое AND между содержимым регистра Rd и комплементом постоянной K

Операция:

(i) Rd <-- Rd * ($FF - K)
  Синтаксис Операнды: Счетчик программ:
(i) CBR Rd 16 < d < 31, 0 < K <255 PC <- PC + 1
           

16-разрядный код операции:

Смотри команду ANDI с комплементом K

Булевы выражения регистра статуса (SREG)

I T H S V N Z C    
- - - Û Û Û -    
S: NEV, Для проверок со знаком
V: 0 Очищен
N: R7 Устанавливается если в результате установлен MSB, в ином случае очищается
Z: R7*R6*R5*R4*R3*R2*R1*R0 Устанавливается если результат $00, в ином случае очищается
R: (Результат) соответствует Rd после выполнения команды
                     

Пример:

cbr r16, $F0 ; Очистить старший ниббл регистра r16

cbr r18, 1 ; Очистить бит в r18

Слов: 1 (2 байта)

Циклов: 1

 

Команда CLC - oчистить флаг переноса в регистре статуса (SREG)

Описание:Очистка флага переноса (C) в регистре статуса (SREG)

Операция:

(i) C <-- 0
  Синтаксис Операнды: Счетчик программ:
(i) CLC None PC <- PC + 1
           

16-разрядный код операции:

Булевы выражения регистра статуса (SREG)

I T H S V N Z C  
- - - - - - -  
C: 0 Флаг переноса очищен  
                     

Пример:

add r0, r0 ; Сложить r0 с самим собой

clc ; Очистить флаг переноса

Слов: 1 (2 байта)

Циклов: 1

 

Команда CLH - oчистить флаг полупереноса в регистре статуса (SREG)

Описание:Очистка флага полупереноса (H) в регистре статуса (SREG).

Операция:

(i) H <-- 0
  Синтаксис Операнды: Счетчик программ:
(i) CLH None PC <- PC + 1
           

16-разрядный код операции:

Булевы выражения регистра статуса (SREG)

I T H S V N Z C    
- - - - - - -    
H: 0 Флаг полупереноса очищен
                     

Пример:

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

Слов: 1 (2 байта)

Циклов: 1

 

Команда CLI - oчистить флаг глобального прерывания в регистре статуса (SREG)

Описание:Очистка флага глобального прерывания (I) в регистре статуса (SREG).

Операция:

(i) I <-- 0
  Синтаксис Операнды: Счетчик программ:
(i) CLI None PC <- PC + 1
           

16-разрядный код операции:

Булевы выражения регистра статуса (SREG)

I T H S V N Z C    
- - - - - - -    
I: 0 Флаг глобального прерывания очищен
                     

Пример:

cli ; Запретить прерывания

in r11, $16 ; Считать Порт B

sei ; Разрешить прерывания

Слов: 1 (2 байта)

Циклов: 1

 

Команда CLN - oчистить флаг отрицательного значения в регистре статуса (SREG)

Описание:Очистка флага отрицательного значения (N) в регистре статуса (SREG).

Операция:

(i) N <-- 0
  Синтаксис Операнды: Счетчик программ:
(i) CLN None PC <- PC + 1
           

16-разрядный код операции:

Булевы выражения регистра статуса (SREG)

I T H S V N Z C    
- - - - - - -    
N: 0 Флаг отрицательного значения очищен
                     

Пример:

add r2, r3 ; Сложить r3 с r2

cln ; Очистить флаг отрицательного значения

Слов: 1 (2 байта)

Циклов: 1

 

Команда CLR - oчистить регистр

Описание:Очистка регистра. Команда выполняет Exclusive OR содержимого регистра с самим собой. Это приводит к очистке всех битов регистра.

Операция:

(i) Rd <-- Rd ÅRd
  Синтаксис Операнды: Счетчик программ:
(i) CLR Rd 0 < d < 31 PC <- PC + 1
           

16-разрядный код операции:

01dd dddd dddd

Булевы выражения регистра статуса (SREG)

I T H S V N Z C    
- - - -    
S: 0 Oчищен
V: 0 Oчищен
N: 0 Oчищен
Z: 1 Устанавливается
R: (Результат) соответствует Rd после выполнения команды
                     

Пример:

clr r18 ; Очистить r18

loop: inc r18 ; Увеличить на 1 r18

. . .

cpi r18, $50 ; Сравнить r18 с $50

brne loop

Слов: 1 (2 байта)

Циклов: 1

 

Команда CLS - oчистить флаг знака

Описание:Очистка флага знака (S) в регистре статуса (SREG).

Операция:

(i) S <-- 0
  Синтаксис Операнды: Счетчик программ:
(i) CLS None PC <- PC + 1
           

16-разрядный код операции:

Булевы выражения регистра статуса (SREG)

I T H S V N Z C  
- - - - - - -  
S: 0 Oчищен  
                     

Пример:

add r2, r3 ; Сложить r3 с r2

cls ; Очистить флаг знака

Слов: 1 (2 байта)

Циклов: 1

 

Команда CLT - oчистить T флаг

Описание:Очистка флага пересылки (T) в регистре статуса (SREG).

Операция:

(i) T <-- 0
  Синтаксис Операнды: Счетчик программ:
(i) CLT None PC <- PC + 1
           

16-разрядный код операции:

Булевы выражения регистра статуса (SREG)

I T H S V N Z C  
- - - - - - -  
T: 0 Oчищен  
                     

Пример:

clt ; Очистить T флаг

Слов: 1 (2 байта)

Циклов: 1

 

Команда CLV - oчистить флаг переполнения

Описание:Очистка флага переполнения (V) в регистре статуса (SREG).

Операция:

(i) V <-- 0
  Синтаксис Операнды: Счетчик программ:
(i) CLV None PC <- PC + 1
           

16-разрядный код операции:

Булевы выражения регистра статуса (SREG)

I T H S V N Z C  
- - - - - - -  
V: 0 Oчищен  
                     

Пример:

add r2, r3 ; Сложить r3 с r2

clv ; Oчистить флаг переполнения

Слов: 1 (2 байта)

Циклов: 1

 

Команда CLZ - oчистить флаг нулевого значения

Описание:Очистка флага нулевого значения (Z) в регистре статуса (SREG).

Операция:

(i) Z <-- 0
  Синтаксис Операнды: Счетчик программ:
(i) CLZ None PC <- PC + 1
           

16-разрядный код операции:

Булевы выражения регистра статуса (SREG)

I T H S V N Z C  
- - - - - - -  
Z: 0 Oчищен  
                     

Пример:

add r2, r3 ; Сложить r3 с r2

clz ; Очистить флаг нулевого значения

Слов: 1 (2 байта)

Циклов: 1

 

Команда COM - Выполнить дополнение до единицы

Описание:Команда выполняет дополнение до единицы (реализует обратный код) содержимого регистра Rd.

Операция:

(i) Rd <-- $FF * Rd
  Синтаксис Операнды: Счетчик программ:
(i) COM Rd 0 < d < 31 PC <- PC + 1
           

16-разрядный код операции:

010d dddd

Булевы выражения регистра статуса (SREG)

I T H S V N Z C    
- - - Û Û Û    
S: NEV, Для проверок со знаком
V: 0 Очищен
N: R7 Устанавливается если в результате установлен MSB, в ином случае очищается
Z: R7*R6*R5*R4*R3*R2*R1*R0 Устанавливается если результат $00, в ином случае очищается
C: 1 Установлен
R: (Результат) соответствует Rd после выполнения команды
                     

Пример:

com r4 ; Выполнить дополнение до единицы r4

breq zero ; Перейти если ноль

. . .

zero: nop ; Перейти по назначению (пустая операция)

Слов: 1 (2 байта)

Циклов: 1

 

Команда CP - cравнить

Описание:Команда выполняет сравнение содержимого двух регистров Rd и Rr. Содержимое регистров не изменяется. После этой команды можно выполнять любые условные переходы.

Операция:

(i) Rd = Rr
  Синтаксис Операнды: Счетчик программ:
(i) Cp Rd, Rr 0 < d < 31,0 < r < 31 PC <- PC + 1
           

16-разрядный код операции:

01rd dddd rrrr

Булевы выражения регистра статуса (SREG)

I T H S V N Z C    
- - Û Û Û Û Û Û    
H: Rd3*Rr3+Rr3*R3+R3*Rd3 Устанавливается если есть заем из бита 3, в ином случае очищается
S: NEV, Для проверок со знаком
V: Rd7*Rd7*R7+Rd7*Rr7*R7 Устанавливается если в результате операции образуется переполнение дополнения до двух, в ином случае очищается
N: R7 Устанавливается если в результате установлен MSB, в ином случае очищается
Z: Rd7*Rr7+Rr7*R7+R7*Rd7 Устанавливается если результат $00, в ином случае очищается
C: Rd7*Rr7+Rr7*R7+R7*Rd7 Устанавливается если абсолютное значение Rr больше абсолютного значения Rd, в ином случае очищается
R: (Результат) после выполнения команды
                     

Пример:

cp r4, r19 ; Сравнить r4 с r19

brne noteq ; Перейти если r4 <> r19

. . .

noteq: nop ; Перейти по назначению (пустая операция)

Слов: 1 (2 байта)

Циклов: 1

 

Команда CPC - cравнить с учетом переноса

Описание:Команда выполняет сравнение содержимого двух регистров Rd и Rr и учитывает также предшествовавший перенос. Содержимое регистров не изменяется. После этой команды можно выполнять любые условные переходы.

Операция:

(i) Rd = Rr = C
  Синтаксис Операнды: Счетчик программ:
(i) CPC Rd, Rr 0 < d < 31,0 < r < 31 PC <- PC + 1
           

16-разрядный код операции:

01rd dddd rrrr

Булевы выражения регистра статуса (SREG)

I T H S V N Z C    
- - Û Û Û Û Û Û    
H: Rd3*Rr3+Rr3*R3+R3*Rd3 Устанавливается если есть заем из бита 3, в ином случае очищается
S: NEV, Для проверок со знаком
V: Rd7*Rd7*R7+Rd7*Rr7*R7 Устанавливается если в результате операции образуется переполнение дополнения до двух, в ином случае очищается
N: R7 Устанавливается если в результате установлен MSB, в ином случае очищается
Z: R7*R6*R5*R4*R3*R2*R1*R0*Z Предшествующее значение остается неизменным если результатом является ноль, в ином случае очищается
C: Rd7*Rr7+Rr7*R7+R7*Rd7 Устанавливается если абсолютное значение Rr плюс предшествовавший перенос больше абсолютного значения Rd, в ином случае очищается
R: (Результат) после выполнения команды
                     

Пример:

; Сравнить r3 : r2 с r1 : r0

cp r2, r0 ; Сравнить старший байт

cpc r3, r1 ; Сравнить младший байт

brne noteq ; Перейти если не равно

. . .

noteq: nop ; Перейти по назначению (пустая операция)

Слов: 1 (2 байта)

Циклов: 1

 

Команда CPI - cравнить c константой

Описание:Команда выполняет сравнение содержимого регистра Rd с константой. Содержимое регистра не изменяется. После этой команды можно выполнять любые условные переходы.

Операция:

(i) Rd = K
  Синтаксис Операнды: Счетчик программ:
(i) CPI Rd, K 0 < d < 31,0 < K <255 PC <- PC + 1
           

16-разрядный код операции:

KKKK dddd KKKK

Булевы выражения регистра статуса (SREG)

I T H S V N Z C    
- - Û Û Û Û Û Û    
H: Rd3*K3+K3*R3+R3*Rd3 Устанавливается если есть заем из бита 3, в ином случае очищается
S: NEV, Для проверок со знаком
V: Rd7*K7*R7+ Rd7*K7*R7 Устанавливается если в результате операции образуется переполнение дополнения до двух, в ином случае очищается
N: R7 Устанавливается если в результате установлен MSB, в ином случае очищается
Z: R7*R6*R5*R4*R3*R2*R1*R0 Устанавливается если результат $00, в ином случае очищается
C: Rd7*K7+K7*R7+R7*Rd7 Устанавливается если абсолютное значение K больше абсолютного значения Rd, в ином случае очищается
R: (Результат) после выполнения команды
                     

Пример:

cpi r19, 3 ; Сравнить r19 с 3

brne error ; Перейти если r4 <> 3

. . .

error: nop ; Перейти по назначению (пустая операция)

Слов: 1 (2 байта)

Циклов: 1

 

Команда CPSE - cравнить и пропустить если равно

Описание:Команда выполняет сравнение содержимого регистров Rd и Rr и пропускает следующую команду если Rd = Rr.

Операция:

(i) If Rd = Rr then PC <-- PC + 2 (or 3), else PC <-- PC +1
  Синтаксис Операнды: Счетчик программ:
(i) CPSE Rd,Rr 0 < d <31, 0 < r<31 PC<-- PC + 1, если условия не соблюдены, то пропуска нет
PC<-- PC + 2, пропуск одного слова команды
PC<-- PC + 3, пропуск двух слов команды
           

16-разрядный код операции:

00rd dddd rrrr

Булевы выражения регистра статуса (SREG)

I T H S V N Z C  
- - - - - - - -  

Пример:

inc r4 ; Увеличить на 1 r4

cpse r4, r0 ; Сравнить r4 с r0

neg r4 ; Выполнить если r4 <> r0

nop ; Продолжать (пустая операция)

Слов: 1 (2 байта)

Циклов: 1

 

Команда DEC - декрементировать

Описание:Вычитание единицы - 1 - из содержимого регистра Rd и размещение результата в регистре назначения Rd. Флаг переноса регистра статуса данной командой не активируется, что позволяет использовать команду DEC использовать при реализации счетчика циклов для вычислений с повышенной точностью. При обработке чисел без знаков за командой могут выполняться переходы BREQ и BRNE. При обработке значений в форме дополнения до двух допустимы все учитывающие знак переходы.

Операция:

(i) Rd<-- Rd - 1
  Синтаксис Операнды: Счетчик программ:
(i) DEC Rd 0 < d < 31 PC <- PC + 1
           

16-разрядный код операции:

010d dddd

Булевы выражения регистра статуса (SREG)

I T H S V N Z C    
- - - Û Û Û Û -    
S: NÅV, Для проверок со знаком
V: R7*R6*R5*R4*R3*R2*R1*R0 Устанавливается если в результате получено переполнение дополнения до двух, в ином случае очищается. Переполнение дополнения до двух будет если и только если перед операцией содержимое Rd было $80.
N: R7 Устанавливается если в результате установлен MSB, в ином случае очищается
Z: R7*R6*R5*R4*R3*R2*R1*R0 Устанавливается если результат $00, в ином случае очищается
R: (Результат)соответствует Rd после выполнения команды
                     

Пример:

ldi r17, $10 ; Загрузить константу в r17

loop: add r1, r2 ; Сложить r2 с r1

dec r17 ; Уменьшить на 1 r17

brne loop ; Перейти если r17 <> 0

nop ; Продолжать (пустая операция)

Слов: 1 (2 байта)

Циклов: 1

 

Команда EOR - выполнить исключающее OR

Описание:Выполнение логического исключающего OR между содержимым регистра Rd и регистром Rr и помещение результата в регистр назначения Rd.

Операция:

(i) Rd<-- RdÅRr
  Синтаксис Операнды: Счетчик программ:
(i) EOR Rd,Rr 0 < d < 31,0 < r < 31 PC <- PC + 1
           

16-разрядный код операции:

01rd dddd rrrr

Булевы выражения регистра статуса (SREG)

I T H S V N Z C    
- - - Û Û Û -    
S: NÅV, Для проверок со знаком
V: 0 Очищен
N: R7 Устанавливается если в результате установлен MSB, в ином случае очищается
Z: R7*R6*R5*R4*R3*R2*R1*R0 Устанавливается если результат $00, в ином случае очищается
R: (Результат)соответствует Rd после выполнения команды
                     

Пример:

eor r4, r4 ; Очистить r4

eor r0, r22 ; Поразрядно выполнить исключающее or между r0 и r22

Слов: 1 (2 байта)

Циклов: 1

 

Команда ICALL - вызвать подпрограмму косвенно

Описание:Косвенный вызов подпрограммы указанной регистром-указателем Z (16 разрядов) в регистровом файле. Регистр-указатель Z (16-разрядного формата) позволяет вызвать подпрограмму из текущей секции пространства памяти программ объемом 64К слов (128 Кбайт).

Операция:

  (i) PC(15-0)<-- Z(15-0) Приборы с 16-разрядным счетчиком программ, максимальный объем памяти программ 128К.
  (i) PC(15-0)<-- Z(15-0) Приборы с 22-разрядным счетчиком программ, максимальный объем памяти программ 8М. PC(21-16) не изменяются
  Синтаксис Операнды: Счетчик программ: Стек
(i) ICALL None См. Операция STACK<-- PC + 1 SP<-- SP-2, (2 байта, 16 битов)
(i) ICALL None См. Операция STACK<-- PC + 1 SP<-- SP-3, (3 байта, 22 битa)
             

16-разрядный код операции:

XXXX

Булевы выражения регистра статуса (SREG)

I T H S V N Z C  
- - - - - - - -  

Пример:

mov r30, r0 ; Установить смещение в таблицу вызовов

icall ; Вызвать подпрограмму указанную r31 : r30

Слов: 1 (2 байта)

Циклов: 3

 

Команда IJMP - перейти косвенно

Описание:Выполняется косвенный переход по адресу указанному регистром-указателем Z (16 разрядов) в регистровом файле. Регистр-указатель Z (16-разрядного формата) позволяет вызвать подпрограмму из текущей секции пространства памяти программ объемом 64К слов (128 Кбайт).

Операция:

(i) PC<-- Z(15-0) Приборы с 16-разрядным счетчиком программ, максимальный объем памяти программ 128К.
(ii) PC(15-0)<-- ZZ(15-0) Приборы с 22-разрядным счетчиком программ, максимальный объем памяти программ 8М. PC(21-16) не изменяются
    Синтаксис Операнды: Счетчик программ: Стек
  (ii) IJMP None См. Операция Не задействуется
  (iii) ICALL None См. Операция Не задействуется
             

16-разрядный код операции:

XXXX

Булевы выражения регистра статуса (SREG)

I T H S V N Z C  
- - - - - - - -  

Пример:

mov r30, r0 ; Установить смещение в таблицу переходов

ijmp ; Перейти к подпрограмме указанной r31 : r30

Слов: 1 (2 байта)

Циклов: 2

 

Команда IN - загрузить данные из порта I/O в регистр

Описание:Команда загружает данные из пространства входа/выхода (порты, таймеры, регистры конфигурации и т.п.) в регистр Rd регистрового файла.

Операция:

(i) Pd<-- P
  Синтаксис Операнды: Счетчик программ:
(i) IN Rd,P 0 < d < 31, 0 < P < 63 PC<-- PC + 1
           

16-разрядный код операции:

0PPd dddd PPPP

Булевы выражения регистра статуса (SREG)

I T H S V N Z C  
- - - - - - - -  

Пример:

in r25, $16 ; Считать Порт B

cpi r25, r4 ; Сравнить считанное значение с константой

breq exit ; Перейти если r25=4

. . .

exit: nop ; Перейти по назначению (пустая операция)

Слов: 1 (2 байта)

Циклов: 1

 

Команда INC - инкрементировать

Описание:Добавление единицы - 1 - к содержимому регистра Rd и размещение результата в регистре назначения Rd.Флаг переноса регистра статуса данной командой не активируется, что позволяет использовать команду DEC использовать при реализации счетчика циклов для вычислений с повышенной точностью. При обработке чисел без знаков за командой могут выполняться переходы BREQ и BRNE. При обработке значений в форме дополнения до двух допустимы все учитывающие знак переходы.

Операция:

(i) Rd<-- Rd + 1
  Синтаксис Операнды: Счетчик программ:
(i) INC Rd 0 < d < 31 PC <- PC + 1
           

16-разрядный код операции:

010d dddd

Булевы выражения регистра статуса (SREG)

I T H S V N Z C    
- - - Û Û Û Û -    
S: NÅV, Для проверок со знаком
V: R7*R6*R5*R4*R3*R2*R1*R0 Устанавливается если в результате получено переполнение дополнения до двух, в ином случае очищается. Переполнение дополнения до двух будет если и только если перед операцией содержимое Rd было $7F.
N: R7 Устанавливается если в результате установлен MSB, в ином случае очищается
Z: R7*R6*R5*R4*R3*R2*R1*R0 Устанавливается если результат $00, в ином случае очищается
R: (Результат)соответствует Rd после выполнения команды
                     

Пример:

clr r22 ; Очистить r22

loop: inc r22 ; Увеличить на 1 r22

. . .

cpi r22, $4F ; Сравнить r22 с $4F

brne loop ; Перейти если не равно

nop ; Продолжать (пустая операция)

Слов: 1 (2 байта)

Циклов: 1

 

Команда JMP - перейти

Описание:Выполняется переход по адресу внутри всего объема (4М слов) памяти программ. См. также команду RJMP.

Операция:

(i) Pd<-- k
  Синтаксис Операнды: Счетчик программ: Стек
(i) JMP k 0 < k < 4M PC<-- k Не изменяется
               

32-разрядный код операции:

010k kkkk 110k
kkkk kkkk kkkk kkkk

Булевы выражения регистра статуса (SREG)

I T H S V N Z C  
- - - - - - - -  

Пример:

mov r1, r0 ; Копировать r0 в r1

jmp farplc ; Безусловный переход

. . .

farplc: nop ; Перейти по назначению (пустая операция)

Слов: 2 (4 байта)

Циклов: 4

 

Команда LD - загрузить косвенно из СОЗУ в регистр с использованием индекса X

Описание:Загружает косвенно один байт из СОЗУ в регистр. Положение байта в СОЗУ указывается 16-разрядным регистром-указателем X в регистровом файле. Обращение к памяти ограничено текущей страницей объемом 64 Кбайта. Для обращения к другой странице СОЗУ необходимо изменить регистр RAMPX в I/O области. Регистр-указатель X может остаться неизменным после выполнения команды, но может быть инкрементирован или декрементирован. Использование регистра-указателя X обеспечивает удобную возможность обращения к матрицам, таблицам, указателю стека.

Использование X-указателя:

  Операция: Комментарий:  
(i) Rd <-- (X)   X: Неизменен
(ii) Rd <-- (X) X <-- X + 1 X: Инкрементирован впоследствии
(iii) X <-- X - 1 Rd <-- (X) X: Предварительнo декрементирован
  Синтаксис Операнды: Счетчик программ:
(i) LD Rd,X 0 < d < 31 PC<-- + 1
(ii) LD Rd,X+ 0 < d < 31 PC<-- + 1
(iii) LDD Rd,-X 0 < d < 31 PC<-- + 1

16-разрядный код операции:

(i) 000d dddd
(ii) 000d dddd
(iii) 000d dddd

Булевы выражения регистра статуса (SREG)

I T H S V N Z C  
- - - - - - - -  

Пример:

clr r27 ;Очистить старший байт X

ldi r26, $20 ;Установить $20 в младший байт X

ld r0, X+ ;Загрузить в r0 содержимое SRAM по адресу $20 (X постинкрементируется)

ld r1, X ;Загрузить в r1 содержимое SRAM по адресу $21

ldi r26, $23 ;Установить $23 в младший байт X

ld r2, X ;Загрузить в r2 содержимое SRAM по адресу $23

ld r3, -X ;Загрузить в r3 содержимое SRAM по адресу $22 (X преддекрементируется)

Слов: 1 (2 байта)

Циклов: 2

 

Команда LD (LDD) - загрузить косвенно из СОЗУ в регистр с использованием индекса Y

Описание:Загружает косвенно, со смещением или без смещения, один байт из СОЗУ в регистр. Положение байта в СОЗУ указывается 16-разрядным регистром-указателем Y в регистровом файле. Обращение к памяти ограничено текущей страницей объемом 64 Кбайта. Для обращения к другой странице СОЗУ необходимо изменить регистр RAMPY в I/O области. Регистр-указатель Y может остаться неизменным после выполнения команды, но может быть инкрементирован или декрементирован. Использование регистра-указателя Y обеспечивает удобную возможность обращения к матрицам, таблицам, указателю стека.

Использование Y-указателя:

  Операция: Комментарий:  
(i) Rd <-- (Y)   Y: Неизменен
(ii) Rd <-- (Y) Y <-- Y + 1 Y: Инкрементирован впоследствии
(iii) Y <-- Y + 1 Rd <-- (Y) Y: Предварительнo декрементирован
(iv) Rd <-- (Y + q)   Y: Неизменен, q: смещение
  Синтаксис Операнды: Счетчик программ:
(i) LD Rd,Y 0 < d < 31 PC<-- + 1
(ii) LD Rd,Y+ 0 < d < 31 PC<-- + 1
(iii) LD Rd,-Y 0 < d < 31 PC<-- + 1
(iv) LDD Rd, Y + q 0 < d < 31 0 < q < 63 PC<-- + 1

16-разрядный код операции:

(i) 000d dddd
(ii) 000d dddd
(iii) 000d dddd
(iv) 10q0 qq0d dddd 1qqq

Булевы выражения регистра статуса (SREG)

I T H S V N Z C  
- - - - - - - -  

Пример:

clr r29 ;Очистить старший байт Y

ldi r28, $20 ;Установить $20 в младший байт Y

ld r0, Y+ ;Загрузить в r0 содерж. SRAM по адресу $20 (Y постинкрементируется)

ld r1, Y ;Загрузить в r1 содержимое SRAM по адресу $21

ldi r28, $23 ;Установить $23 в младший байт Y

ld r2, Y ;Загрузить в r2 содержимое SRAM по адресу $23

ld r3, -Y ;Загрузить в r3 содерж. SRAM по адресу $22 (Y преддекрементируется)

ldd r4, Y+2 ;Загрузить в r4 содержимое SRAM по адресу $24

Слов: 1 (2 байта)

Циклов: 2

 

Команда LD (LDD) - загрузить косвенно из СОЗУ в регистр с использованием индекса Z

Описание:Загружает косвенно, со смещением или без смещения, один байт из СОЗУ в регистр. Положение байта в СОЗУ указывается 16-разрядным регистром-указателем Z в регистровом файле. Обращение к памяти ограничено текущей страницей объемом 64 Кбайта. Для обращения к другой странице СОЗУ необходимо изменить регистр RAMPZ в I/O области. Регистр-указатель Z может остаться неизменным после выполнения команды, но может быть инкрементирован или декрементирован. Эта особенность очень удобна при использовании регистра-указателя Z в качестве указателя стека, однако, поскольку регистр-указатель Z может быть использован для косвенного вызова подпрограмм, косвенных переходов и табличных преобразований, более удобно использовать в качестве указателя стека регистры-указатели X и Y. Об использовании указателя Z для просмотра таблиц в памяти программ см. команду LPM.

Использование Z-указателя:

  Операция: Комментарий:  
(i) Rd <-- (Y)   Y: Неизменен
(ii) Rd <-- (Y) Y <-- Y + 1 Y: Инкрементирован впоследствии
(iii) Y <-- Y + 1 Rd <-- (Y) Y: Предварительнo декрементирован
(iv) Rd <-- (Y + q)   Y: Неизменен, q: смещение
  Синтаксис Операнды: Счетчик программ:
(i) LD Rd,Y 0 < d < 31 PC<-- + 1
(ii) LD Rd,Y+ 0 < d < 31 PC<-- + 1
(iii) LD Rd,-Y 0 < d < 31 PC<-- + 1
(iv) LDD Rd, Y + q 0 < d < 31 0 < q < 63 PC<-- + 1

16-разрядный код операции:

(i) 000d dddd
(ii) 000d dddd
(iii) 000d dddd
(iv) 10q0 qq0d dddd 1qqq

Булевы выражения регистра статуса (SREG)

I T H S V N Z C  
- - - - - - - -  

Пример:

clr r29 ;Очистить старший байт Y

ldi r28, $20 ;Установить $20 в младший байт Y

ld r0, Y+ ;Загрузить в r0 содерж. SRAM по адресу $20 (Y постинкрементируется)

ld r1, Y ;Загрузить в r1 содержимое SRAM по адресу $21

ldi r28, $23 ;Установить $23 в младший байт Y

ld r2, Y ;Загрузить в r2 содержимое SRAM по адресу $23

ld r3, -Y ;Загрузить в r3 содерж. SRAM по адресу $22 (Y преддекрементируется)

ldd r4, Y+2 ;Загрузить в r4 содержимое SRAM по адресу $24

Слов: 1 (2 байта)

Циклов: 2

 

Команда LDI - загрузить непосредственное значение

Описание:Загружается 8-разрядная константа в регистр от 16 по 31

Операция:

(i) Rd <-- K
  Синтаксис Операнды: Счетчик программ:
(i) LDI Rd, K 16 < d < 31, 0 < K < 255 PC<-- + 1
           

16-разрядный код операции:

KKKK dddd KKKK

Булевы выражения регистра статуса (SREG)

I T H S V N Z C  
- - - - - - - -  

Пример:

clr r31 ; Очистить старший байт Z

ldi r30, $F0 ; Установить $F0 в младший байт Z

lpm ; Загрузить константу из программы

; Память отмечена в Z

Слов: 1 (2 байта)

Циклов: 1

 

Команда LDS - загрузить непосредственно из СОЗУ

Описание:Выполняется загрузка одного байта из СОЗУ в регистр. Можно использовать 16-разрядный адрес. Обращение к памяти ограничено текущей страницей СОЗУ объемом 64 Кбайта. Команда LDS использует для обращения к памяти выше 64 Кбайт регистр RAMPZ.

Операция:

(i) Rd <-- (k)
  Синтаксис Операнды: Счетчик программ:
(i) LDS Rd,k 0 < d < 31,0 < k < 65535 PC<-- + 2
           

32-разрядный код операции:

000d dddd
kkkk kkkk kkkk kkkk

Булевы выражения регистра статуса (SREG)

I T H S V N Z C  
- - - - - - - -  

Пример:

lds r2, $FF00 ; Загрузить r2 содержимым SRAM по адресу $FF00

add r2, r1 ; Сложить r1 с r2

sts $FF00, r2 ; Записать обратно

Слов: 2 (4 байта)

Циклов: 3

 

Команда LPM - загрузить байт памяти программ

Описание:Загружает один байт, адресованный регистром Z, в регистр 0 (R0). Команда обеспечивает эффективную загрузку констант или выборку постоянных данных. Память программ организована из 16-разрядных слов и младший значащий разряд (LSB) 16-разрядного указателя Z выбирает или младший (0) или старший (1) байт. Команда может адресовать первые 64 Кбайта (32 Кслов) памяти программ.

  Операция:   Комментарий:
(i) R0<-- (Z)   Z указывает на память программ
  Синтаксис Операнды: Счетчик программ:
(i) LPM None PC<-- + 1

16-разрядный код операции:

110X

Булевы выражения регистра статуса (SREG)

I T H S V N Z C  
- - - - - - - -  

Пример:

clr r31 ; Очистить старший байт Z

ldi r30, $F0 ; Установить младший байт Z

lpm ; Загрузить константу из памяти программ

отмеченную Z (r31 : r30)

Слов: 1 (2 байта)

Циклов: 3

 

Команда LSL - логически сдвинуть влево

Описание:Выполнение сдвига всех битов Rd на одно место влево. Бит 0 стирается. Бит 7 загружается во флаг переноса (С) регистра состояния (SREG). Эта команда эффективно умножает на два значение величины без знака.

Операция:

(i)  
  Синтаксис Операнды: Счетчик программ:
(i) LSL Rd 0 < d < 31 PC <-- PC + 1
           

16-разрядный код операции:

11dd dddd dddd

Булевы выражения регистра статуса (SREG)

I T H S V N Z C    
- - Û Û Û Û Û Û    
H: Rd3
S: NÅV, Для проверок со знаком
V: NÅC (Для N и C после сдвига) Устанавливается если (N устанавливается и C очищается) или (N очищается а C устанавливается). В ином случае очищается (при наличии значений N и C после сдвига)
N: R7 Устанавливается если в результате установлен MSB, в ином случае очищается
Z: R7*R6*R5*R4*R3*R2*R1*R0 Устанавливается если результат $00, в ином случае очищается
C: Rd7 Устанавливается если перед сдвигом был установлен MSB регистра Rd в ином случае очищается
R: (Результат)соответствует Rd после выполнения команды
                     

Пример:

add r0, r4 ; Сложить r4 с r0

lsl r0 ; Умножить r0 на 2

Слов: 1 (2 байта)

Циклов: 1

 

Команда LSR - логически сдвинуть вправо

Описание:Сдвиг всех битов Rd на одно место вправо. Бит 7очищается. Бит 0 загружается во флаг переноса (С) регистра состояния (SREG). Эта команда эффективно делит на два величину без знака на два. Флаг переноса может быть использован для округления результата.

Операция:

(i)  
  Синтаксис Операнды: Счетчик программ:
(i) LSR Rd 0 < d < 31 PC <- PC + 1
           

16-разрядный код операции:

010d dddd

Булевы выражения регистра статуса (SREG)

I T H S V N Z C    
- - - Û Û Û Û    
S: NÅV, Для проверок со знаком
V: NÅC (Для N и C после сдвига) Устанавливается если (N устанавливается и C очищается) или (N очищается а C устанавливается). В ином случае очищается (при наличии значений N и C после сдвига)
N:
Z: R7*R6*R5*R4*R3*R2*R1*R0 Устанавливается если результат $00, в ином случае очищается
C: Rd0 Устанавливается если перед сдвигом был установлен LSB регистра Rd, в ином случае очищается
R: (Результат)соответствует Rd после выполнения команды
                     

Пример:

add r0, r4 ; Сложить r4 с r0

lsr r0 ; Разделить r0 на 2

Слов: 1 (2 байта)

Циклов: 1

Команда MOV - копировать регистр

Описание:Команда создает копию одного регистра в другом регистре. Исходный регистр Rr остается неизменным, в регистр назначения Rd загружается копия содержимого регистра Rr.

(i) Rd <-- Rr
  Синтаксис Операнды: Счетчик программ:
(i) MOV Rd,Rr 0 < d < 31, 0 < r <31 PC<-- + 1
           

16-разрядный код операции:

11rd dddd rrrr

Булевы выражения регистра статуса (SREG)

I T H S V N Z C  
- - - - - - - -  

Пример:

mov r16, r0 ; Копировать r0 в r16

call check ; Вызвать подпрограмму

. . .

check cpi r16, $11 ; Сравнить r16 с $11

. . .

ret ; Вернуться из подпрограммы

Слов: 1 (2 байта)

Циклов: 1

 

Команда MUL - перемножить

Описание:Команда перемножает две 8-разрядные величины без знаков с получением 16- разрядного результата без знака. Множимое и множитель - два регистра - Rr и Rd, соответственно. 16-разрядное произведение размещается в регистрах R1 (старший байт ) и R0 (младший байт). Отметим, что если в качестве множимого и множителя выбрать R0 или R1, то результат заместит прежние значения сразу после выполнения операции.

Операция:

(i) R1,R0 <-- Rr x Rd
  Синтаксис Операнды: Счетчик программ:
(i) MUL Rd,Rr 0 < d < 31,0 < r < 31 PC <- PC + 1
           

16-разрядный код операции:

11rd dddd rrrr

Булевы выражения регистра статуса (SREG)

I T H S V N Z C    
- - - - - - - Û    
C: R15 Устанавливается если установлен бит 15 результата, в ином случае очищается
R: (Результат)соответствует R1,R0 после выполнения команды
                     

Пример:

mul r6, r5 ; Перемножить r6 и r5

mov r6, r1 ; Вернуть результат обратно в r6:r5

mov r5, r1 ; Вернуть результат обратно в r6:r5

Слов: 1 (2 байта)

Циклов: 2

В системе команд базовых микроконтроллеров семейства команда отсутствует.

 

Команда NEG - выполнить дополнение до двух

Описание:Заменяет содержимое регистра Rd его дополнением до двух. Значение $80 остается неизменным.

Операция:

(i) Rd <-- $00 - Rd
  Синтаксис Операнды: Счетчик программ:
(i) NEG Rd 0 < d < 31 PC <- PC + 1
           

16-разрядный код операции:

010d dddd

Булевы выражения регистра статуса (SREG)

I T H S V N Z C    
- - Û Û Û Û Û Û    
H: R3*Rd3 Устанавливается если есть заем из бита 3, в ином случае очищается
S: NÅV, Для проверок со знаком
V: R7*R6*R5*R4*R3*R2*R1*R0 Устанавливается при переполнении дополнения до двух от подразумеваемого вычитания из нуля, в ином случае очищается. Переполнение дополнения до двух произойдет если и только если содержимое регистра после операции (результат) будет $80.
N: R7 Устанавливается если в результате установлен MSB, в ином случае очищается
Z: Rd7*R6*R5*R4*R3*R2*R1*R0 Устанавливается если результат $00, в ином случае очищается
C: R7+R6+R5+R4+R3+R2+R1+R0 Устанавливается если есть заем в подразумеваемом вычитании из нуля, в ином случае очищается. Флаг C будет устанавливаться во всех случаях, за исключением случая, когда содержимое регистра после выполнения операции будет $80.
R: (Результат)соответствует Rd после выполнения команды
                     

Пример:

sub r11, r0 ; Вычесть r0 из r11

brpl positive ; Перейти если результат положительный

neg r11 ; Выполнить дополнение до двух r11

positive: nop ; Перейти по назначению (пустая операция)

Слов: 1 (2 байта)

Циклов: 1

 

Команда NOP - выполнить холостую команду

Описание:Команда выполняется за один цикл без выполнения операции.

(i) No
  Синтаксис Операнды: Счетчик программ:
(i) NOP None PC<-- + 1
           

16-разрядный код операции:

Булевы выражения регистра статуса (SREG)

I T H S V N Z C  
- - - - - - - -  

Пример:

clr r16 ; Очистить r16

ser r17 ; Установить r17

out $18, r16 ; Записать ноль в Порт B

nop ; Ожидать (пустая операция)

out $18, r17 ; Записать 1 в Порт B

Слов: 1 (2 байта)

Циклов: 1

 

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

Описание:Команда выполняет логическое OR содержимого регистров Rd и Rr и размещает результат в регистре назначения Rd.

Операция:

(i) Rd <-- Rd v Rr
  Синтаксис Операнды: Счетчик программ:
(i) OR Rd,Rr 0 < d < 31,0 < r <31 PC <- PC + 1
           

16-разрядный код операции:

10rd dddd rrrr

Булевы выражения регистра статуса (SREG)

I T H S V N Z C    
- - - Û Û Û -    
S: NÅV, Для проверок со знаком
V: 0 Очищен
N: R7 Устанавливается если в результате установлен MSB, в ином случае очищается
Z: Rd7*R6*R5*R4*R3*R2*R1*R0 Устанавливается если результат $00, в ином случае очищается
R: (Результат)соответствует Rd после выполнения команды
                     

Пример:

or r15, r16 ; Выполнить поразрядное or между регистрами

bst r15, 6 ; Сохранить бит 6 регистра 15 во флаге T

brst ok ; Перейти если флаг T установлен

. . .

ok: nop ; Перейти по назначению (пустая операция)

Слов: 1 (2 байта)

Циклов: 1

 

Команда ORI - выполнить логическое OR с непосредственным значением

Описание:Команда выполняет логическое OR между содержимым регистра Rd и константой и размещает результат в регистре назначения Rd.

Операция:

(i) Rd <-- Rd v K
  Синтаксис Операнды: Счетчик программ:
(i) ORI Rd,K 16 < d < 31,0 < K <255 PC <- PC + 1
           

16-разрядный код операции:

KKKK dddd KKKK

Булевы выражения регистра статуса (SREG)

I T H S V N Z C    
- - - Û Û Û -    
S: NÅV, Для проверок со знаком
V: 0 Очищен
N: R7 Устанавливается если в результате установлен MSB, в ином случае очищается
Z: Rd7*R6*R5*R4*R3*R2*R1*R0 Устанавливается если результат $00, в ином случае очищается
R: (Результат)соответствует Rd после выполнения команды
                     

Пример:

ori r16, $F0 ; Установить старший ниббл r16

ori r17, 1 ; Установить бит 0 регистра r17

Слов: 1 (2 байта)

Циклов: 1

 

Команда OUT - записать данные из регистра в порт I/O

Описание:Команда сохраняет данные регистра Rr в регистровом файле пространства I/O (порты, таймеры, регистры конфигурации и т.п.).

Операция

Булевы выражения регистра статуса (SREG) I T H S V N Z C   - … Пример: clr r16 ; Очистить r16

Операция

Булевы выражения регистра статуса (SREG) I T H S V N Z C   - … Пример: call routine ; Вызвать подпрограмму

Операция

Булевы выражения регистра статуса (SREG) I T H S V N Z C   - … Пример: call routine ; Вызвать подпрограмму

Операция

Булевы выражения регистра статуса (SREG) I T H S V N Z C   - … Пример: rcall routine ; Вызвать подпрограмму

Операция

Булевы выражения регистра статуса (SREG) I T H S V N Z C   - … Пример: call routine ; Вызвать подпрограмму

Операция

Булевы выражения регистра статуса (SREG) I T H S V N Z C   … Пример: . . .

Операция

Булевы выражения регистра статуса (SREG) I T H S V N Z C   … Пример: cpi r16, $42 ; Сравнить r16 с $42

Операция

Булевы выражения регистра статуса (SREG) I T H S V N Z C   - … Пример: out $1E, r0 ; Записать адрес EEPROM

Операция

Булевы выражения регистра статуса (SREG) I T H S V N Z C   - … Пример: e2wait: sbic $1C, 1 ; Пропустить следующую команду если EEWE очищен

Операция

Булевы выражения регистра статуса (SREG) I T H S V N Z C   - … Пример: waitset: sbis$10, 0 ; Пропустить следующую команду если установлен бит 0 в Порте D

Операция

Булевы выражения регистра статуса (SREG) I T H S V N Z C   - … Пример: sub r0, r1 ; Вычесть r1 из r0

Операция

Булевы выражения регистра статуса (SREG) I T H S V N Z C   - … Пример: sub r0, r1 ; Вычесть r1 из r0

Операция

Булевы выражения регистра статуса (SREG) I T H S V N Z C   - … Пример: sec ; Установить флаг переноса

Операция

Булевы выражения регистра статуса (SREG) I T H S V N Z C   - … Пример: seh ; Установить флаг полупереноса

Операция

Булевы выражения регистра статуса (SREG) I T H S V N Z C   … Пример: cli ; Запретить прерывания

Операция

Булевы выражения регистра статуса (SREG) I T H S V N Z C   - … Пример: add r2, r19 ; Сложить r19 с r2

Операция

Булевы выражения регистра статуса (SREG) I T H S V N Z C   - … Пример: clr r16 ; Очистить r16

Операция

Булевы выражения регистра статуса (SREG) I T H S V N Z C   - … Пример: add r2, r19 ; Сложить r19 с r2

Операция

Булевы выражения регистра статуса (SREG) I T H S V N Z C   - … Пример: set ; Установить T флаг

Операция

Булевы выражения регистра статуса (SREG) I T H S V N Z C   - … Пример: add r2, r19 ; Сложить r19 с r2

Операция

Булевы выражения регистра статуса (SREG) I T H S V N Z C   - … Пример: add r2, r19 ; Сложить r19 с r2

Операция

Булевы выражения регистра статуса (SREG) I T H S V N Z C   - … Пример: mov r0, r11 ; Копировать r11 в r0

– Конец работы –

Используемые теги: система, команд, 8-разрядных, RISC, микроконтроллеров, семейства, AVR0.109

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Система команд 8-разрядных RISC микроконтроллеров семейства AVR

Что будем делать с полученным материалом:

Если этот материал оказался полезным для Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Еще рефераты, курсовые, дипломные работы на эту тему:

Лекция 1. Тема: Операционная система. Определение. Уровни операционной системы. Функции операционных систем. 1. Понятие операционной системы
Понятие операционной системы... Причиной появления операционных систем была необходимость создания удобных в... Операционная система ОС это программное обеспечение которое реализует связь между прикладными программами и...

8-разрядные КМОП RISC микроконтроллеры с внутрисистемно программируемым Flash ПЗУ
Программа: /* Программа построения графиков функции*/ /* F(x)=Sin(x)+Sin(3x)/3+Sin(5x)/5+Sin(7x)/ 7*/ /* и f(x)=Sin(x)+Sin(3x)/3*/ #include…

Непротиворечивая система аксиом называется независимой, если никакая из аксиом этой системы не является следствием других аксиом этой системы
При аксиоматическом построении теории по существу все утверж дения выводятся путем доказательства из аксиом Поэтому к системе аксиом предъявляются... Система аксиом называется непротиворечивой если из нее нельзя логически... Если система аксиом не обладает этим свойством она не может быть пригодной для обоснования научной теории...

Система координат действия и общая теория систем действия: культура, личнсть и место социальных систем
В центре данного исследования стоит разработка теоретической схемы. Систематическое рассмотрение ее эмпирического использования будет предпринято… Основные положения системы координат действия подробно излагались ранее, и… При помощи ее анализируются структура и процессы систем, состоящих из отношений таких элементов к их ситуациям,…

ТЕЛЕКОММУНИКАЦИОННЫЕ СИСТЕМЫ. СИГНАЛЫ И КАНАЛЫ ЭЛЕКТРИЧЕСКОЙ СВЯЗИ. СИСТЕМЫ СВЯЗИ С ЧАСТОТНЫМ РАЗДЕЛЕНИЕМ КАНАЛОВ. ЦИФРОВЫЕ СИСТЕМЫ ПЕРЕДАЧИ
Лабораторные работы часа... Практические занятия часа... Всего аудиторных занятий часов...

Микропроцессорные системы: система ДЦ-МПК, система "Юг"
Использован практический опыт внедрения линейных пунктов управления (ЛПУ) на 60 станциях в увязке с ЭЦ-4, ЭЦ-9, МРЦ-12, МРЦ-13. Выполнен переход на… В состав аппаратуры центрального пункта управления (ПУ) входят IBM-совместные… Круглосуточный режим работы аппаратных средств ПУ обеспечивается источниками бесперебойного питания, а также системой…

Экспертные системы. Классификация экспертных систем. Разработка простейшей экспертной системы
Глава 2. Структура систем, основанных на знаниях. 1. Категории пользователей экспертных систем. 2.2. Подсистема приобретения знаний. 3. База… ЭС выдают советы, проводят анализ, дают консультации, ставят диагноз. Практическое применение ЭС на предприятиях способствует эффективности работы и повышению квалификации специалистов.

Дисциплина МИКРОКОНТРОЛЛЕРЫ Методические указания 1.2 Условное графическое обозначение УГО микроконтроллера AVR ATmega8515
Федеральное государственное образовательное учреждение СПО... Нижегородский радиотехнический колледж... Дисциплина МИКРОКОНТРОЛЛЕРЫ...

Система нормативно-правовых актов регламентирующих деятельность в системе социальной работе
Нормативный правовой акт - это письменный официальный документ, принятый (изданный) в определенной форме правотворческим органом в пределах его… Нормативные правовые акты издаются в виде приказов, распоряжений, правил,… Характерным признаком нормативного правового акта является то, что он адресован не кому-то конкретно, а…

0.037
Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • По категориям
  • По работам