Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Арифметические команды



Сложение без переноса ADD (ADD - Add without Carry)

Синтаксис: ADD Rd, Rr

0 < d < 31, 0 < r < 31.

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

Пример:

ADD r1, r2; Сложить r 2 с r 1 (r 1= r 1+ r 2)

ADD r28, r28; Сложить r 28 с самим собой

Сложение с переносом (ADC)

Синтаксис: ADC Rd, Rr

0 < d < 31, 0 < r < 31

Данная команда осуществляет сложение двух регистров и содержимого флага переноса (С), размещает результат в регистре назначения Rd: Rd <- Rd + Rr + C. Устанавливает флаги Z, C, N, V, H.

Пример:

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

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

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

Команда ADIW (Add Immediate to Word)

Синтаксис: ADIW Rdl, K

dl = {24,26,28,30}, 0 < K<64

Данная команда осуществляет сложение непосредственного значения (0-63) с парой регистров и размещение результата в паре регистров:

Rdh:Rdl <- Rdh:Rdl +К.

Команда работает только с четырьмя верхними парами регистров, удобна для работы с регистрами указателями. Устанавливает флаги Z, C, N, V.

Пример:

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

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

Команда SUB

Синтаксис: SUB Rd, Rr

16 < d < 31, 0 < r < 31

Команда осуществляет вычитание содержимого регистра-источника Rr из содержимого регистра-приемника Rd, результат помещает в регистре назначения: Rd = RdRr. Устанавливает флаги H, V, N, Z, C.

Пример:

sub r13, r12; Вычесть r 12 из r 13

Команда SUBI

Синтаксис: SUB Rd, K

16 < d < 31, 0 < K < 255

Команда SUB производит вычитание константы из содержимого регистра, размещает результата в регистре назначения. Устанавливает флаги H, V, N, Z, C.

Пример:

subi r 22, $11; Вычесть $11 из r 22

Команда SBC

Синтаксис: SBC Rd, Rr

0 < d < 31, 0 < r < 31

Команда SBC осуществляет вычитание содержимого регистра-источника и содержимого флага переноса (С) из регистра Rd, результат помещает в регистре назначения Rd. Устанавливает флаги H, V, N, Z, C.

Пример:

; Вычесть r1: r0 из r3: r2

sub r2, r0; Вычесть младший байт

sbc r3, r1; Вычесть старший байт с переносом

Команда SBCI

Синтаксис: SBCI Rd, K

0 < d < 31, 0 < K < 255

Команда осуществляет вычитание константы и содержимого флага переноса (С) из содержимого регистра, размещение результата в регистре назначения Rd. Устанавливает флаги H, V, N, Z, C регистра флагов.

Пример:

; Вычесть $2567 из r14: r15

subi r14, $67; Вычесть младший байт

sbci r15, $25; Вычесть старший байт с переносом

Команда SBIW

Синтаксис: SBIW Rdl, K

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

Команда осуществляет вычитание непосредственного значения (0-63) из пары регистров и размещает результата в паре регистров. Команда работает с четырьмя верхними парами регистров, удобна для работы с регистрами указателями. Устанавливает флаги H, V, N, Z, C регистра флагов.

Пример:

sbiw r24, $3; Вычесть $3 из r25:r24

sbiw r28, $A2; Вычесть $A2 из Y указателя (r29: r28)

Команда DEC

Синтаксис: DEC Rd

0 < d < 31

Команда осуществляет вычитание единицы - 1 - из содержимого регистра Rd и размещает результат в регистре назначения Rd. Флаг переноса регистра статуса данной командой не активируется, что позволяет использовать команду DEC использовать при реализации счетчика циклов для вычислений с повышенной точностью. Устанавливает флаги V, N, Z регистра флагов.

Пример:

ldi r16, $09; Загрузить константу в r16metka1: add r3, r4; Сложить r4 с r3 dec r16; Уменьшить на 1 r16 brne metka1; Перейти если r16 <> 0 nop; Продолжать (пустая операция)

Команда INC

Синтаксис: INC Rd

0 < d < 31

Команда увеличения на единицу содержимого регистра Rd и размещения результата в регистре назначения Rd. Устанавливает флаги V,N,Z регистра флагов.

Пример:

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

metka2: inc r23; Увеличить на 1 r23

...

cpi r23, $45; Сравнить r23 с $45

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

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





Дата публикования: 2014-11-18; Прочитано: 692 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...