Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное_пособие.doc
Скачиваний:
70
Добавлен:
10.11.2019
Размер:
8.13 Mб
Скачать

2.6.3 Команды арифметики и логики (вычислительные)

Таблица 6. Арифметические и логические команды

Мнемоника

Операнды

Описание

Операция

Флаги

Циклов

ADD

Rd,Rr

Сложить регистры без переноса

Rd Rd + Rr

Z,C,N,V,H

1

ADC

Rd,Rr

Сложить регистры с переносом

RdRd + Rr + C

Z,C,N,V,H

1

ADIW

Rd,D6

Сложить операнд D6 со словом

Rdh:Rdl Rdh:Rdl+D6

Z,C,N,V

2

SUB

Rd,Rr

Вычесть регистры без заема

RdRd – Rr

Z,C,N,V,H

1

SUBI *

Rd,D8

Вычесть байт D8

R16 Rd R31

RdRd - D8

Z,C,N,V,H

1

SBC

Rd,Rr

Вычесть с заемом

RdRd – Rr - С

Z,C,N,V,H

1

SBСI *

Rd,D8

Вычесть байт D8

R16 Rd R31

RdRd - D8 - С

Z,C,N,V,H

1

SBIW

Rd,D6

Вычесть операнд D6 из слова

Rdh:Rdl Rdh:Rdl - D6

Z,C,N,V

2

MUL

Rd,Rr

Умножение беззнаковых целых

R1:R0Rd x Rr

Z,C

2

MULS*

Rd,Rr

Умножение целых со знаком

R1:R0Rd x Rr

Z,C

2

MULSU*

Rd,Rr

Умножение беззнакового на знаковое

R1:R0Rd x Rr

Z,C

2

FMUL*

Rd,Rr

Умножение дробных беззнаковых

R1:R0Rd x Rr

Z,C

2

FMULS*

Rd,Rr

Умножение дробных знаковых

R1:R0Rd x Rr

Z,C

2

FMULSU*

Rd,Rr

Умножение беззнакового на знаковое дробных

R1:R0Rd x Rr

Z,C

2

AND

Rd,Rr

Логическое И

RdRd & Rr

Z,N,V

1

ANDI*

Rd,D8

Операция И с байтом D8

RdRd & D8

Z,N,V

1

OR

Rd,Rr

Логическое ИЛИ

RdRd v Rr

Z,N,V

1

ORI*

Rd,D8

Логическое ИЛИ с байтом D8

RdRd v D8

Z,N,V

1

EOR

Rd,Rr

Исключающее ИЛИ

RdRd  Rr

Z,N,V

1

COM

Rd

Инверсия

Rd$FF - Rd

Z,C,N,V

1

NEG

Rd

Дополнительный код

Rd$00 - Rd

Z,C,N,V

1

SBR *

Rd,D8

Установить биты в Rd по байту D8

RdRd v D8

Z,N,V

1

CBR*

Rd,D8

Очистить биты в регистре по байту D8

RdRd & ($FF-D8)

Z,N,V

1

INC

Rd

Инкрементировать

RdRd +1

Z,N,V

1

DEC

Rd

Декрементировать

RdRd -1

Z,N,V

1

TST

Rd

Проверить на ноль

RdRd & Rd

Z,N,V

1

CLR

Rd

Очистить регистр

RdRd  Rd

Z,N,V

1

SER*

Rd

Установить все биты регистра

Rd$FF

1

CP

Rd,Rr

Сравнить регистры

Rd - Rr

Z,C,N,V,H

1

CPC

Rd,Rr

Сравнить с учетом переноса

Rd – Rr - С

Z,C,N,V,H

1

CPI

Rd,D8

Сравнить с байтом D8

Rd - D8

Z,C,N,V,H

1

Команды, выполняющие операции с непосредственным операндом (в аббревиатуре команд присутствует буква I, а также команды SBR,CBR и SER используют только верхние регистры R16-R31. Эти команды помечены в таблице знаком *. В командах умножения (кроме команды MUL) в качестве операндов могут использоваться только регистры R16 – R23. Эти команды отмечены знаком **.

В основном, операции выполняются над 8-разрядными операндами. Однако командами ADIW и SBIW выполняются операции над словами (два байта), причем эти команды являются командами с непосредственным операндом, предельное значение которого равно 63. Первый операнд в этих командах может размещаться в одной из 4-х пар самых верхних регистров общего назначения R25-R24, R27-R26, R29-R28, R31-R30. В аббревиатуре команды записывают только младший регистр пары. Например: ADIW R24,50 – сложить содержимое регистров R25 и R24 со значением 50.

При выполнении арифметических и логических команд устанавливаются признаки результатов операций (флаги) регистра состояний SREG.

Некоторые команды выполняют одинаковые операции (имеют одинаковый код), но имеют разную мнемонику. Например, команды ORI и SBR. Это улучшает читаемость команд, например, SBR R17,$55 – установить биты в регистре R17 по байту $55.

Команды сравнения CP,CPC и CPI выполняются вычитанием операндов, однако результат операции не сохраняется, а устанавливаются признаки ее.