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