Микроконтроллеры семейства MCS51 Intel

Инструкции MCS51TM Intel

Инструкции, модифицирующие флаги (1)

Инструкция

C OV AC

Инструкция

C OV AC

ADD

X X X

CLR C

O

ADDC

X X X

CPL C

X

sub>B

X X X

ANL C,bit

X

MUL

O X

ANL C,/bit

X

DIV

O X

ORL C,bit

X

DA

X

ORL C, bit

X

RRC

X

MOV C,bit

X

RLC

X

CJNE

X

SETB C

1

Замечание. Операции с регистром специальных функций с регистром PSW или с его битами также модифицируют флаги.

Условные обозначения операндов:

Rn Регистр R7-R0 текущего банка рабочих регистров

direct 8-bit прямой адрес. Это может быть ячейка внутреннего ОЗУ данных (0-7F h) или SFR (7Fh - 0FFh).

@Ri 8-bit косвенный адрес внутреннего ОЗУ (00 - 0ffh) равен содержимому указателя R0 или R1.

#data 8-bit непосредственная константа, включенная в инструкцию.

#data 16 16-bit непосредственная константа, включенная в инструкцию.

addr 16 16-bit адрес длинного перехода, используемый командами LCALL и LJMP.

addr 11 11-bit адрес относительного перехода, используемый командами ACALL и AJMP.

rel 8-bit смещение со знаком, используемое командой SJMP и командами условных переходов.

bit Прямой адрес бита внутреннего ОЗУ или SFR.

Таблица 1. Список инструкций MCS51TM Intel.

Мнемоника

Содержание

Byte

Tact

1. Арифметические операции.

ADD A,Rn

(A) + (Rn) -> A Сложение

1

12

ADD A,direct

(A) + (direct) -> A

2

12

ADD A,@Ri

(A) + ( (Ri) ) -> A

1

12

ADD A,#data

(A) + #data -> A

2

12

ADDC A,Rn

(A) + (Rn) + c -> A Сложение с учетом переноса

1

12

ADDC A,direct

(A) + (direct) + c -> A

2

12

ADDC A,@Ri

(A) + ( (Ri) ) + c -> A

1

12

ADDC A,#data

(A) - #data - c -> A

2

12

sub>B A,Rn

(A) - (Rn) - c -> A Вычитание с учетом заема

1

12

sub>B A,direct

(A) - (direct) - c -> A

2

12

sub>B A,@Ri

(A) - ( (Ri) ) - c -> A

1

12

sub>B A,#data

(A) - #data - c -> A

2

12

INC A

(A) + 1 -> A Инкремент ( увеличение на единицу )

1

12

INC Rn

(Rn) + 1 -> Rn

1

12

INC direct

(direct) + 1 -> direct

2

12

INC @Ri

( (Ri) ) + 1 -> ( Ri )

1

12

INC DPTR

(DPTR) + 1 -> DPTR

1

24

DEC A

(A) - 1 -> A Декремент ( уменьшение на единицу )

1

12

DEC Rn

(Rn) - 1 -> Rn

1

12

DEC direct

(direct) - 1 -> direct

2

12

DEC @Ri

( (Ri) ) - 1 -> ( Ri )

1

12

MUL AB

(A) * (B) -> AB Умножение (AB - произведение)

1

48

DIV AB

(A) / (B) -> AB Деление (A - частное B - остаток)

1

48

DA A

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

1

12

2. Логические операции.

ANL A,Rn

(A) и (Rn) -> A Логическое побитовое И

1

12

ANL A,direct

(A) и (direct) -> A

2

12

ANL A,@Ri

(A) и ( (Ri) ) -> A

1

12

ANL A,#data

(A) и #data -> A

2

12

ANL direct,A

(direct) и (A) -> direct

2

12

ANL direct,#data

(direct) и #data -> direct

3

24

ORL A,Rn

(A) или (Rn) -> A Логическое побитовое ИЛИ

1

12

ORL A,direct

(A) или (direct) -> A

2

12

ORL A,@Ri

(A) или ( (Ri) ) -> A

1

12

ORL A,#data

(A) или #data -> A

2

12

ORL direct,A

(direct) или (A) -> direct

2

12

ORL direct,#data

(direct) или #data -> direct

3

24

XRL A,Rn

(A) ^ (Rn) -> A Логическое побитовое исключающее ИЛИ

1

12

XRL A,direct

(A) ^ (direct) -> A

2

12

XRL A,@Ri

(A) ^ ( (Ri) ) -> A

1

12

XRL A,#data

(A) ^ #data -> A

2

12

XRL direct,A

(direct) ^ (A) -> direct

2

12

XRL direct,#data

(direct) ^ #data -> direct

3

24

CLR A

00h -> A Обнуление

1

12

Мнемоника

Содержание

Byte

Tact

CPL A

not (A) -> A Инверсия

1

12

RL A

Циклический сдвиг аккумулятора влево на один бит

1

12

RLC A

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

1

12

RR A

Циклический сдвиг аккумулятора вправо на один бит

1

12

RRC A

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

1

12

SWAP A

Обмен тетрадами в аккумуляторе

1

12

3. Пересылка данных.

MOV A,Rn

(Rn) -> A

1

12

MOV A,direct

(direct) -> A

2

12

MOV A,@Ri

( (Ri) ) -> A

1

12

MOV A,#data

#data -> A

2

12

MOV Rn,A

(A) -> Rn

1

12

MOV Rn,direct

(direct) -> Rn

2

24

MOV Rn,#data

#data -> Rn

2

12

MOV direct,A

(A) -> direct

2

12

MOV direct,Rn

(Rn) -> direct

2

24

MOV direct,direct

(direct) -> direct

3

24

MOV direct,@Ri

( (Ri) ) -> direct

2

24

MOV direct,#data

#data -> direct

3

24

MOV @Ri,A

(A) -> (Ri)

1

12

MOV @Ri,direct

(direct) -> (Ri)

2

24

MOV @Ri,#data

#data -> (Ri)

2

12

MOV DPTR,#data16

#data16 -> DPTR

3

24

MOVC A,@A+DPTR

( ( A) + ( DPTR ) ) -> A Обмен с внешне памятью программ

1

24

MOVC A,@A+PC

( ( A) + ( PC ) ) -> A

1

24

MOVX A,@Ri

( ( Ri) ) -> A Обмен с внешней памятью данных

1

24

MOVX A,@DPTR

( ( DPTR ) ) -> A

1

24

MOVX @Ri,A

(A) -> ( Ri)

1

24

MOVX @DPTR,A

(A) -> ( DPTR )

1

24

PUSH direct

(direct) -> Stack Запись в стек

2

24

POP direct

(Stack) -> direct Извлечение из стека

2

24

XCH A,Rn

(A) <- > (Rn) Обмен содержимым

1

12

XCH A,direct

(A) <- > (direct)

2

12

XCH A,@Ri

(A) <- > ( (Ri) )

1

12

XCHD A,@Ri

(A) <- > ( (Ri) ) Обмен младшей тетрадой

1

12

4. Битовые операции.

CLR C

0 -> с

1

12

CLR bit

0 -> bit

2

12

SETB C

1 -> c

1

12

SETB bit

1 -> bit

2

12

CPL C

not(c) -> c

1

12

CPL bit

not(bit) -> bit

2

12

ANL C,bit

( с ) и (bit) -> c

2

24

ANL C,/bit

( c ) и not(bit) -> c

2

24

ORL C,bit

( c ) или (bit) -> c

2

24

ORL C,/bit

( c ) или not(bit) -> c

2

24

MOV C,bit

(bit) -> c

2

12

MOV bit,C

( c ) -> bit

2

24

JC rel

если с = 1 , то переход по смещению rel

2

24

JNC rel

если с = 0 , то переход по смещению rel

2

24

JB bit,rel

если bit = 1 , то переход по смещению rel

3

24

JNB bit,rel

если bit = 0 , то переход по смещению rel

3

24

JBC bit,rel

если bit = 1 , то переход по смещению rel и сброс bit

3

24

5. Команды передачи управления.

ACALL addr11

Вызов процедуры по адресу addr11

2

24

LCALL addr16

Вызов процедуры по адресу addr16

3

24

RET

Возврат из процедуры

1

24

RETI

Возврат из процедуры обработки прерывания

1

24

AJMP addr11

Безусловный переход по адресу addr11

2

24

LJMP addr16

Безусловный переход по адресу addr16

3

24

SJMP rel

Безусловный переход по смещению rel

2

24

JMP @A+DPTR

Безусловный переход по смещению (A) относительно (DPTR)

1

24

JZ rel

Условный переход, если равно 0, по смещению rel

2

24

JNZ rel

Условный переход, если не равно 0, по смещению rel

2

24

CJNE A,direct,rel

Условный переход, если (A) не равно (direct), по смещению rel

3

24

CJNE A,#data,rel

Условный переход, если (A) не равно #data, по смещению rel

3

24

CJNE Rn,#data,rel

Условный переход, если (Rn) не равно #data, по смещению rel

3

24

CJNE @Ri,#data,rel

Условный переход, если ( (Ri) ) не равно #data, по смещению rel

3

24

DJNZ Rn,rel

Декремент Rn и условный переход, если не равно 0, по смещению rel

2

24

DJNZ direct,rel

Декремент direct и условный переход, если не равно 0, по смещению rel

3

24

NOP

Пустой оператор.

1

12