Микроконтроллеры семейства 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
SUBB 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
SUBB A, Rn (A) – (Rn) – c -> A Вычитание с учетом заема 1 12
SUBB A, direct (A) – (direct) – c -> A 2 12
SUBB A,@Ri (A) – ( (Ri) ) – c -> A 1 12
SUBB 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

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