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