logo
Микроконтроллеры семейства MCS-511

4.1.7.Команды арифметических операций 8051.

В данную группу входят 24 команды, краткое описание которых приведено в таблице. Из нее следует, что микроЭВМ выполняет достаточно широкий набор команд для организации обработки целочисленных данных, включая команды умножения и деления.

В таблице также указаны тип команды (Т) в соответствии с таблицей, ее длина в байтах (Б) и время выполнения в машинных циклах (Ц).

Таблица.8.Арифметические операции.

Название команды

Мнемокод

КОП

Т

Б

Ц

Операция

Сложение аккумулятора с регистром (n=0÷7)

ADD A, Rn

00l01rrr

1

1

1

(A) (A) + (Rn)

Сложение аккумулятора с прямоадресуемым байтом

ADD A, ad

00100101

3

2

1

(A) (A) + (ad)

Сложение аккумулятора с байтом из РПД (i = 0,1)

ADD A, @Ri

0010011i

1

1

1

(A) (A) + ((Ri))

Сложение аккумулятора с константой

ADD A, #d

00100100

2

2

1

(A) (A) + #d

Сложение аккумулятора с регистром и переносом

ADDC A, Rn

00111rrr

1

1

1

(A) (A) + (Rn) + (C)

Сложение аккумулятора с прямоадресуемым байтом и переносом

ADDC A, ad

00110101

3

2

1

(A) (A) + (ad) + (C)

Сложение аккумулятора с байтом из РПД и переносом

ADDC A, @Ri

0011011i

1

1

1

(A) (A) + ((Ri)) + (C)

Сложение аккумулятора с константой и переносом

ADDC A, #d

00110100

2

2

1

(A) (A) + # d + (C)

Десятичная коррекция аккумулятора

DA A

11010100

1

1

1

Если (А0…3)>9 или ((AC)=1),то(А0…3) (А0…З) + 6, затем если (А4…7) >9 или ((С)=1), то (А4…7)  (А4…7) + 6

Вычитание из аккумулятора регистра и заёма

SUBB A, Rn

10011rrr

1

1

1

(A) (A) - (C) - (Rn)

Вычитание из аккумулятора прямоадресуемого байта и заема

SUBB A, ad

10010101

3

2

1

(A) (A) - (C) - ((ad))

Вычитание из аккумулятора байта РПД и заема

SUBB А, @Ri

1001011i

1

1

1

(A) (A) - (C) - ((Ri))

Вычитание из аккумулятора константы и заема

SUBB А, d

10010100

2

2

1

(A) (A) - (C) - #d

Инкремент аккумулятора

INC А

00000100

1

1

1

(A)  (A) + 1

Название команды

Мнемокод

КОП

Т

Б

Ц

Операция

Инкремент регистра

INC Rn

00001rrr

1

1

1

(Rn) (Rn) + 1

Инкремент прямоадресуемого байта

INC ad

00000101

3

2

1

(ad) (ad) + 1

Инкремент байта в РПД

INC @Ri

0000011i

1

1

1

((Ri))  ((Ri)) + 1

Инкремент указателя данных

INC DPTR

10100011

1

1

2

(DPTR ) (DPTR) + 1

Декремент аккумулятора

DEC A

00010100

1

1

1

(A)  (A) – 1

Декремент регистра

DEC Rn

00011rrr

1

1

1

(Rn)  (Rn) – 1

Декремент прямоадресуемого байта

DEC ad

00010101

3

2

1

(ad) (ad) – 1

Декремент байта в РПД

DEC @Ri

0001011i

1

1

1

((Ri))  ((Ri)) - 1

Умножение аккумулятора на регистр В

MUL AB

10100100

1

1

4

(B)(A) (A)*(В)

Деление аккумулятора на регистр В

DIV AB

10000100

1

1

4

(B).(A) (A)/(В)

По результату выполнения команд ADD, ADDC, SUBB, MUL и DIV устанавливаются флаги PSW, структура которых приведена в таблице.

Флаг С устанавливается при переносе из разряда D7, т. е. в случае, если результат не помещается в восемь разрядов; флаг АС устанавливается при переносе из разряда D3 в командах сложения и вычитания и служит для реализации десятичной арифметики. Этот признак используется командой DAA.

Флаг OV устанавливается при переносе из разряда D6, т. е. в случае, если результат не помещается в семь разрядов и восьмой не может быть интерпретирован как знаковый. Этот признак служит для организации обработки чисел со знаком.

Наконец, флаг Р устанавливается и сбрасывается аппаратно. Если число единичных бит в аккумуляторе нечетно, то Р = 1, в противном случае Р = 0.

Yandex.RTB R-A-252273-3
Yandex.RTB R-A-252273-4