Реферат: Микроконтроллеры семейства 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 |