Инструкция
|
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 Запись в стек
|
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
|