Инструкции
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 |
|