Инструкции
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) | 1 | 12 |
| XCH A,direct | (A) | 2 | 12 |
| XCH A,@Ri | (A) | 1 | 12 |
| XCHD A,@Ri | (A) | 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 |