Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Сложение без переноса 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 = Rd – Rr. Устанавливает флаги 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 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!