Материал: 1755

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Пример:

;Сложить два шестнадцатеричных числа,

;находящихся в регистровых парах

;R1 : R0 и R3 : R2. add r2, r0 ; Сложить младший байт.

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

;Результат будет находиться в регистровой

;паре R1 : R0.

Слов: 1 (2 байта). Циклов: 1.

Команда ADD сложить без переноса

Описание:

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

Операция: Rd <– Rd + Rr

Синтаксис

Операнды:

Счетчик программ:

ADD Rd,Rr

0 < d < 31, 0 < r < 31

PC < PC + 1

H Устанавливается, если есть перенос из бита 3, в ином случае очищается.

S Для проверок со знаком.

VУстанавливается, если в результате операции образуется переполнение дополнения до двух, в ином случае очищается.

NУстанавливается, если в результате установлен MSB, в ином случае очищается.

Z Устанавливается, если результат $00, в ином случае очищается.

CУстанавливается, если есть перенос из MSB результата, в ином случае очищается.

Пример:

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) с парой регистров и размещение результата в паре регистров. Команда работает с четырьмя верхними парами регистров, удобна для работы с регистрами-указателями.

Операция: Rdh:Rdl <- Rdh:Rdl + K

55

Синтаксис:

Операнды:

Счетчик программ:

ADIW Rdl,K

dl {24,26,28,30}, 0 < K < 63

PC < PC + 1

S Для проверок со знаком.

VУстанавливается, если в результате операции образуется переполнение дополнения до двух, в ином случае очищается.

NУстанавливается, если в результате установлен MSB, в ином случае очищается.

Z Устанавливается, если результат $0000, в ином случае очищается.

CУстанавливается, если есть перенос из MSB результата, в ином случае очищается.

Пример:

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

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

Слов: 1 (2 байта). Циклов: 2

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

Описание:

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

Операция: Rd <- Rd*Rr

Синтаксис:

Операнды:

Счетчик программ:

AND Rd,Rr

0 < d < 31,0 < r < 31

PC <- PC + 1

S Для проверок со знаком.

V 0, очищен.

NУстанавливается, если в результате установлен MSB, в ином случае очищается.

Z Устанавливается, если результат $00, в ином случае очищается.

Пример:

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

and r2, r3

поместить в

r2

0000 0001 в r16

ldi

r16, 1

;

Установить маску

and

r2, r16

;

Выделить бит 0 в

r2

Слов: 1 (2 байта). Циклов: 1.

56

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

Описание:

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

Операция: Rd <- Rd*K

Синтаксис:

Операнды:

Счетчик программ:

ANDI Rd,K

16 < d <31, 0 < K <255

PC <- PC + 1

S Для проверок со знаком.

V Очищен.

NУстанавливается, если в результате установлен MSB, в ином случае очищается.

Z Устанавливается, если результат $00, в ином случае очищается.

Пример:

andi r17, $0F ; Очистить старший полубайт r17. andi r18, $10 ; Выделить бит 4 в r18.

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

Слов: 1 (2 байта). Циклов: 1.

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

Описание:

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

Операция:

 

 

 

 

 

 

 

 

 

b7…………………..b0

 

c

 

 

 

 

Синтаксис:

 

Операнды:

Счетчик программ:

ASR Rd

 

0 < d <31

 

 

PC <- PC + 1

S Для проверок со знаком.

VУстанавливается, если (N устанавливается и C очищается) или (N очищается, а C устанавливается). В ином случае очищается (при наличии значений N и C после сдвига).

NУстанавливается, если в результате установлен MSB, в ином случае очищается.

57

Z Устанавливается, если результат $00, в ином случае очищается.

CRd0. Устанавливается, если перед сдвигом были установлены LSB или

Rd.

Пример:

ldi r16, $10 ; Загрузить $10 (десятичное 16) в r16. asr r16 ; r16 = r16/2.

ldi r17, $FC ; Загрузить -4 в r17. asr r17 ; r17 = r17/2.

Слов: 1 (2 байта). Циклов: 1.

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

Описание:

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

Операция:

SREG(s) <- 0

 

Синтаксис:

Операнды:

Счетчик программ:

BCLR s

0 < S < 7

PC <- PC + 1

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.

Операция: Rd(b) <- T

Синтаксис:

Операнды:

Счетчик программ:

BLD Rd,b

0 < d < 31, 0 < b < 7

PC <- PC + 1

58

Пример:

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

bst r1, 0 ; Сохранить бит 2 регистра r1 во флаге T. bld r0, 4 ; Загрузить T в бит 4 регистра r0.

Слов: 1 (2 байта). Циклов: 1

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

Описание:

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

Операция: If SREG(s) = 0 then PC <- PC + k +1, else PC <- PC +1

Синтаксис: Операнды: Счетчик программ:

PC <- PC + k + 1

BRBC s, k 0 < s <7, -64 < k <+63 PC <- PC + 1, если условия не соблюдены.

Пример:

cpi r20, 5 ; Сравнить r20 со значением 5. brbc 1,noteq ; Перейти, если флаг нуля очищен.

.....

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

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

Команда BRBS – перейти, если бит в регистре статуса установлен

Описание:

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

Операция: If SREG(s) = 1 then PC <- PC + k +1, else PC <- PC +1

Синтаксис:

Операнды:

Счетчик программ:

 

 

PC <- PC + k + 1

BRBS s, k

0 < s <7, -64 < k <+63

PC <- PC + 1, если условия

 

 

не соблюдены.

59