Микроконтроллеры семейства MCS51 Intel
Микроконтроллеры семейства MCS51 Intel
Инструкции MCS51TM Intel
Инструкции, модифицирующие флаги (1)
|Инструк| C OV|Инструк| C OV|
|ция |AC |ция |AC |
|ADD | X |CLR C | O |
| |X X| | |
|ADDC | X |CPL C | X |
| |X X| | |
|SUBB | X |ANL | X |
| |X X|C,bit | |
|MUL | O |ANL | X |
| |X |C,/bit | |
|DIV | O |ORL | X |
| |X |C,bit | |
|DA | X |ORL C, | X |
| | |bit | |
|RRC | X |MOV | X |
| | |C,bit | |
|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.
|Мнемоника |Содержание |Byt|Tac|
| | |e |t |
|1. Арифметические операции. |
|ADD A,Rn |(A) + (Rn) -> A Сложение |1 |12 |
|ADD |(A) + (direct) -> A |2 |12 |
|A,direct | | | |
|ADD A,@Ri|(A) + ( (Ri) ) -> A |1 |12 |
|ADD |(A) + #data -> A |2 |12 |
|A,#data | | | |
|ADDC A,Rn |(A) + (Rn) + c -> A Сложение с |1 |12 |
| |учетом переноса | | |
|ADDC |(A) + (direct) + c -> A |2 |12 |
|A,direct | | | |
|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 Умножение |1 |48 |
| |(AB - произведение) | | |
|DIV AB |(A) / (B) -> AB Деление |1 |48 |
| |(A - частное B - остаток) | | |
|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 |3 |24 |
|direct,#data | | | |
|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 |3 |24 |
|direct,#data | | | |
|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 |3 |24 |
|direct,#data | | | |
|CLR A |00h -> A Обнуление |1 |12 |
|Мнемоника |Содержание |Byt|Tac|
| | |e |t |
|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 |3 |24 |
|direct,direct| | | |
|MOV |( (Ri) ) -> direct |2 |24 |
|direct,@Ri | | | |
|MOV |#data -> direct |3 |24 |
|direct,#data | | | |
|MOV @Ri,A |(A) -> (Ri) |1 |12 |
|MOV |(direct) -> (Ri) |2 |24 |
|@Ri,direct | | | |
|MOV @Ri,#data|#data -> (Ri) |2 |12 |
|MOV |#data16 -> DPTR |3 |24 |
|DPTR,#data16 | | | |
|MOVC |( ( A) + ( DPTR ) ) -> A Обмен с внешне |1 |24 |
|A,@A+DPTR |памятью программ | | |
|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 |3 |24 |
| |и сброс bit | | |
|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) |1 |24 |
| |относительно (DPTR) | | |
|JZ rel |Условный переход, если равно 0, по смещению |2 |24 |
| |rel | | |
|JNZ rel |Условный переход, если не равно 0, по |2 |24 |
| |смещению rel | | |
|CJNE |Условный переход, если (A) не равно |3 |24 |
|A,direct,rel |(direct), по смещению rel | | |
|CJNE |Условный переход, если (A) не равно #data, |3 |24 |
|A,#data,rel |по смещению rel | | |
|CJNE |Условный переход, если (Rn) не равно #data, |3 |24 |
|Rn,#data,rel |по смещению rel | | |
|CJNE |Условный переход, если ( (Ri) ) не равно |3 |24 |
|@Ri,#data,rel|#data, по смещению rel | | |
|DJNZ Rn,rel |Декремент Rn и условный переход, если не |2 |24 |
| |равно 0, по смещению rel | | |
|DJNZ |Декремент direct и условный переход, если не |3 |24 |
|direct,rel |равно 0, по смещению rel | | |
|NOP |Пустой оператор. |1 |12 |