Инструкции MCS51TM Intel
Инструкции,модифицирующиефлаги (1)
| Инструкция | C OV AC | Инструкция | C OV AC |
| ADD | X X X | CLRC | O |
| ADDC | X X X | CPLC | X |
| SUBB | X X X | ANLC,bit | X |
| MUL | O X | ANLC,/bit | X |
| DIV | O X | ORLC,bit | X |
| DA | X | ORLC, bit | X |
| RRC | X | MOVC,bit | X |
| RLC | X | CJNE | X |
| SETBC | 1 |
Замечание.Операции срегистромспециальныхфункций с регистромPSW или с его битамитакже модифицируютфлаги.
Условныеобозначенияоперандов:
Rn РегистрR7-R0 текущего банкарабочих регистров
direct 8-bitпрямой адрес. Это может бытьячейка внутреннегоОЗУ данных(0-7F h) или SFR (7Fh - 0FFh).
@Ri 8-bitкосвенный адрес внутреннегоОЗУ (00 - 0ffh) равенсодержимому указателя R0или R1.
#data 8-bit непосредственнаяконстанта,включеннаяв инструкцию.
#data16 16-bitнепосредственнаяконстанта,включеннаяв инструкцию.
addr16 16-bit адресдлинного перехода,используемыйкомандами LCALL и LJMP.
addr11 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 |
| SUBBA,direct | (A) -(direct) - c -> A | 2 | 12 |
| SUBB A,@Ri | (A) - ((Ri) ) - c -> A | 1 | 12 |
| SUBBA,#data | (A) - #data - c -> A | 2 | 12 |
| INCA | (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 |
| DECA | (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 |
| MULAB | (A)* (B) -> AB Умножение (AB - произведение) | 1 | 48 |
| DIVAB | (A)/ (B) -> AB Деление (A - частное B -остаток) | 1 | 48 |
| DAA | Десятичнаякоррекцияаккумулятора | 1 | 12 |
2.Логическиеоперации. | |||
| ANLA,Rn | (A)и (Rn) -> A Логическоепобитовое И | 1 | 12 |
| ANLA,direct | (A)и(direct) -> A | 2 | 12 |
| ANL A,@Ri | (A)и( (Ri) ) -> A | 1 | 12 |
| ANL A,#data | (A)и#data -> A | 2 | 12 |
| ANLdirect,A | (direct)и(A) -> direct | 2 | 12 |
| ANLdirect,#data | (direct)и#data -> direct | 3 | 24 |
| ORL A,Rn | (A)или (Rn) -> A ЛогическоепобитовоеИЛИ | 1 | 12 |
| ORLA,direct | (A)или(direct) -> A | 2 | 12 |
| ORL A,@Ri | (A)или( (Ri) ) -> A | 1 | 12 |
| ORL A,#data | (A)или#data -> A | 2 | 12 |
| ORLdirect,A | (direct)или(A) -> direct | 2 | 12 |
| ORLdirect,#data | (direct)или#data -> direct | 3 | 24 |
| XRL A,Rn | (A)^ (Rn) -> A ЛогическоепобитовоеисключающееИЛИ | 1 | 12 |
| XRLA,direct | (A) ^(direct) -> A | 2 | 12 |
| XRL A,@Ri | (A) ^ ((Ri) ) -> A | 1 | 12 |
| XRL A,#data | (A) ^ #data-> A | 2 | 12 |
| XRLdirect,A | (direct) ^(A) -> direct | 2 | 12 |
| XRLdirect,#data | (direct) ^#data -> direct | 3 | 24 |
| CLR A | 00h-> A Обнуление | 1 | 12 |
Мнемоника | Содержание | Byte | Tact |
| CPL A | not(A) -> A Инверсия | 1 | 12 |
| RLA | Циклическийсдвиг аккумуляторавлево на одинбит | 1 | 12 |
| RLCA | Циклическийсдвиг аккумуляторавлево на одинбит через битпереноса | 1 | 12 |
| RRA | Циклическийсдвиг аккумуляторавправо на одинбит | 1 | 12 |
| RRCA | Циклическийсдвиг аккумуляторавправо на одинбит через битпереноса | 1 | 12 |
| SWAPA | Обментетрадами ваккумуляторе | 1 | 12 |
3.Пересылкаданных. | |||
| MOVA,Rn | (Rn) ->A | 1 | 12 |
| MOVA,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 |
| MOVRn,direct | (direct) ->Rn | 2 | 24 |
| MOVRn,#data | #data ->Rn | 2 | 12 |
| MOVdirect,A | (A) ->direct | 2 | 12 |
| MOVdirect,Rn | (Rn) ->direct | 2 | 24 |
| MOVdirect,direct | (direct) ->direct | 3 | 24 |
| MOVdirect,@Ri | ( (Ri) ) ->direct | 2 | 24 |
| MOVdirect,#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 |
| MOVDPTR,#data16 | #data16 ->DPTR | 3 | 24 |
| MOVCA,@A+DPTR | (( A) + ( DPTR ) ) -> A Обмен свнешне памятьюпрограмм | 1 | 24 |
| MOVCA,@A+PC | ( ( A) + (PC ) ) -> A | 1 | 24 |
| MOVX A,@Ri | (( Ri) ) -> A Обменс внешней памятьюданных | 1 | 24 |
| MOVXA,@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 |
| XCHA,direct | (A) (direct) | 2 | 12 |
| XCH A,@Ri | (A) ( (Ri) ) | 1 | 12 |
| XCHD A,@Ri | (A) ( (Ri) ) Обмен младшейтетрадой | 1 | 12 |
4.Битовые операции. | |||
| CLRC | 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 |
| CPLbit | 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 |
| JNCrel | если с = 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.Команды передачиуправления. | |||
| ACALLaddr11 | Вызовпроцедуры поадресу addr11 | 2 | 24 |
| LCALLaddr16 | Вызовпроцедуры поадресу addr16 | 3 | 24 |
| RET | Возвратиз процедуры | 1 | 24 |
| RETI | Возвратиз процедурыобработкипрерывания | 1 | 24 |
| AJMPaddr11 | Безусловныйпереход поадресу addr11 | 2 | 24 |
| LJMPaddr16 | Безусловныйпереход поадресу addr16 | 3 | 24 |
| SJMPrel | Безусловныйпереход посмещению rel | 2 | 24 |
| JMP @A+DPTR | Безусловныйпереход посмещению (A)относительно(DPTR) | 1 | 24 |
| JZrel | Условныйпереход, еслиравно 0, по смещениюrel | 2 | 24 |
| JNZrel | Условныйпереход, еслине равно 0, посмещению rel | 2 | 24 |
| CJNEA,direct,rel | Условныйпереход, если (A) не равно (direct),по смещениюrel | 3 | 24 |
| CJNEA,#data,rel | Условныйпереход, если (A) не равно #data, посмещению rel | 3 | 24 |
| CJNERn,#data,rel | Условныйпереход, если (Rn) не равно #data, посмещению rel | 3 | 24 |
| CJNE@Ri,#data,rel | Условныйпереход, если ( (Ri) ) не равно#data, по смещениюrel | 3 | 24 |
| DJNZ Rn,rel | ДекрементRn и условныйпереход, еслине равно 0, посмещению rel | 2 | 24 |
| DJNZdirect,rel | Декрементdirect и условныйпереход, еслине равно 0, посмещению rel | 3 | 24 |
| NOP | Пустойоператор. | 1 | 12 |