Система команд ОЭВМ семейства MCS-51
Мнемоника и операнды | Кол-во байт | Кол-во циклов | Выполняемая операция | Флаги | ||||||
С | 0V | AC | ||||||||
1. Арифметические операции | ||||||||||
ADD A,Ri | A (A)+(Ri), i=0...7 | + | + | + | ||||||
ADD A,rel | A (A)+(rel) | + | + | + | ||||||
ADD A,@Ri | A (A)+R(Ri), i=0,1 | + | + | + | ||||||
ADD A,#data | A (A)+(B2) | + | + | + | ||||||
ADDC A,Ri | A (A)+(Ri)+(c), i=0..7 | + | + | + | ||||||
ADDC A,rel | A (A)+(rel)+ (c) | + | + | + | ||||||
ADDC A,@Ri | A (A)+R(Ri)+(c), i=0,1 | + | + | + | ||||||
ADDC A,#data | A (A)+(B2)+ (c) | + | + | + | ||||||
SUBB A,Ri | A (A)-(Ri) -(c), i=0...7 | + | + | + | ||||||
SUBB A,rel | A (A)-(rel) -(c), | + | + | + | ||||||
SUBB A,@Ri | A (A)-R(Ri) -(c), i=0,1 | + | + | + | ||||||
SUBB A,#data | A (A)-(B2)-(c), | + | + | + | ||||||
INC A | A (A)+1 | |||||||||
INC Ri | Ri (Ri)+1, i=0...7 | |||||||||
INC rel | Rel (rel) +1 | |||||||||
INC DPTR | M(DPTR) M(DPTR)+1 | |||||||||
DEC A | A A-1 | |||||||||
DEC Ri | Ri (Ri)-1, i=0...7 | |||||||||
DEC rel | Rel (rel) -1 | |||||||||
DEC @Ri | R(Ri) R(Ri) -1,i=0...1 | |||||||||
MUL AB | B D15...D8, AD7...D0 | |||||||||
DIV AB | A целая часть,OV1,если В=0 | |||||||||
DA A | Десятичная коррекция | |||||||||
2. Логические операции | ||||||||||
ANL A,Ri | A (A)+(Ri), i=0...7 | |||||||||
ANL A,rel | A (A)+(rel) | |||||||||
ANL A,@Ri | A (A)+R(Ri), i=0,1 | |||||||||
ANL A,#data | A (A)+(B2) | |||||||||
ANL rel,A | (rel) (A)+(rel) | + | + | + | ||||||
ANL rel,#data | rel (rel)+(B2) | + | + | + | ||||||
ORL A,Ri | A (A)+(Ri), i=0...7 | + | + | + | ||||||
ORL A,rel | A (A)+(rel) | + | + | + | ||||||
ORL A,@Ri | A (A)+R(Ri), i=0,1 | + | + | + | ||||||
ORL A,#data | A (A)+(B2) | + | + | + | ||||||
ORL rel,A | (rel) (A)+(rel) | + | + | + | ||||||
ORL rel,#data | rel (rel)+(B2) | + | + | + | ||||||
XRL A,Ri | A (A)+(Ri), i=0...7 | + | + | + | ||||||
XRL rel,#data | rel (rel)+(B2) | + | + | + | ||||||
CLR A | A 0 | |||||||||
CPL A | A A/ | |||||||||
RL A | An+1 An, A0 A7 | |||||||||
RLC A | An+1 An, A0 c, c A7 | |||||||||
RR A | An An+1, A7 A0 | |||||||||
RRC A | An An+1, c A0, A7 c | |||||||||
SWAP A | A3-0 « A7-4 | |||||||||
3. Команды передачи данных | ||||||||||
MOV A,Ri | A (Ri), i=0...7 | |||||||||
MOV A,rel | A (rel) | |||||||||
MOV A,@Ri | A R(Ri), i=0,1 | |||||||||
MOV A,#data | A (B2) | |||||||||
MOV Ri,A | (Ri) A, i=0...7 | |||||||||
MOV rel,A | (rel) A | |||||||||
MOV A,@Ri | A R(Ri), i=0,1 | |||||||||
MOV A,#data | A (B2) | |||||||||
MOV Ri,rel | (Ri) (rel) | |||||||||
MOV rel,#data | rel (B2) | |||||||||
MOV Ri,#data | Ri (B2), i=0...7 | |||||||||
MOV rel,Ri | rel (Ri), i=0...7 | |||||||||
MOV rel1,rel2 | rel1 (rel2) | |||||||||
MOV rel,@Ri | rel R(Ri), i=0,1 | |||||||||
MOV @Ri, A | @Ri(A), i=0,1 | |||||||||
MOV @Ri, rel | @Ri(rel), i=0,1 | |||||||||
MOV @Ri, #data
2_1_@Ri(B2), i=0,1 | |||||||
MOV DPTR, #data16 | DPTR(B2,B3) | ||||||
MOVC A,@A+DPTR | A M((A)+DPTR) | ||||||
MOVC A,@A+PC | A M((A)+PC+1) | ||||||
MOVX A,@Ri | A M(Ri), i=0,1(внешняя память данных) | ||||||
MOVX A,@DPTR | A M(DPTR) | ||||||
MOVX @DPTR,A | M(DPTR) A | ||||||
PUSH rel | SP (rel), (SP) (SP)+1 | ||||||
POP rel | (rel) SP, (SP) (SP)-1 | ||||||
XCH A,Ri | (Ri)«A, i=0...7 | ||||||
XCH A,rel | A « (rel) | ||||||
XCH A,@Ri | A « R(Ri), i=0,1 | ||||||
XCHD A,@Ri | A3-0 « R3-0 (Ri), i=0,1 | ||||||
4. Команды работы с битами | |||||||
CPL bit | bitbit/ | ||||||
CPL C | Cßc/ | ||||||
ANL C,bit | c bit Ù c | ||||||
ANL C,bit/ | c bit/ Ù c | ||||||
ORL C,bit | c bit Ú c | ||||||
ORL C,bit/ | c bit/ Úc | ||||||
MOV C,bit | c bit | ||||||
MOV bit,C | bit c | ||||||
CLR C | C ß 0 | ||||||
CLR bit | bit ß 0 | ||||||
SETB C | Cß1 | ||||||
SETB bit | bit ß1 | ||||||
5.Команды переходов | |||||||
ACALL addr11 | (PC) (PC)+2, SP (PC), (SP) (SP)+2, (PC) addr11 | ||||||
LCALL addr16 | (PC) (PC)+3, SP (PC), (SP) (SP)+2, (PC) addr16 | ||||||
RET | (PC) SP, (SP) (SP)-2 | ||||||
RETI | (PC) SP, (SP) (SP)-2 | ||||||
AJMP addr11 | (PC) (PC)+2, (PC) addr11 | ||||||
AJMP addr16 | (PC) (PC)+2, (PC) addr16 | ||||||
SJMP rel | (PC) (PC)+2, (PC) (PC) + rel | ||||||
JMP @A+DPTR | (PC) (A)+(DPTR) | ||||||
JZ rel | (PC) (PC)+2, IF A=0 (PC)(PC)+rel | ||||||
JNZ rel | (PC) (PC)+2, IF A¹0 (PC)(PC)+rel | ||||||
JC rel | (PC) (PC)+2, IF c=0 (PC)(PC)+ rel | ||||||
JNC rel | (PC) (PC)+2, IF c¹0 (PC) (PC) + rel | ||||||
JB bit, rel | (PC) (PC)+3, IF bit=0 (PC) (PC) + rel | ||||||
JNB bit, rel | (PC) (PC)+3, IF bit¹0 (PC) (PC) + rel | ||||||
JBC bit, rel | (PC) (PC)+3, IF bit=0 (PC) (PC) + rel, bit0 | ||||||
CJNE A,dir,rel | IF (A)=(dir) (PC) (PC)+3, IF (A)>(dir) (PC) (PC) + rel, c0 IF (A)<(dir) (PC) (PC) + rel, c1 | ||||||
CJNE A,#data,rel | IF (A)=( #data) (PC) (PC)+3, IF (A)>( #data) (PC) (PC) + rel, c0 IF (A)<( #data) (PC) (PC) + rel, c1 | ||||||
CJNE Ri,#data,rel | IF (Ri)=( #data) (PC) (PC)+3,i=0...7 IF (Ri)>( #data) (PC) (PC) + rel, c0 IF (Ri)<( #data) (PC) (PC) + rel, c1 | ||||||
CJNE @Ri,#data,rel | IF R(Ri)=( #data)(PC) (PC)+3,i=0...7 IF R(Ri)>(#data)(PC) (PC) + rel,c0 IF R(Ri)<(#data)(PC) (PC) + rel, c1 | ||||||
DJNZ Ri,rel | (PC) (PC)+2,RiRi-1,i=0...7, IF (Ri) ¹0 (PC) (PC) + rel, | ||||||
DJNZ dir,rel | (PC) (PC)+3,dirdir-1, IF dir¹0 (PC) (PC) + rel, | ||||||
NOP | Пустая операция | ||||||
Условные обозначения:
1. rel – метка перехода по программе в диапазоне одной страницы памяти программ 00 - FF.
Data16 - двухбайтные данные, хранящиеся во 2 и 3 байтах команды.
Data - байт данных, хранящийся во 2 байте команды.
B2 - второй байт команды.
M(X) - содержимое ячейки памяти, адресуемой содержимым Х - либо одним, либо двумя байтами.
Dir - ппрямоадресуемая ячейка внутренней памяти в диапазоне 00 -7F.
P000) - номер страницы памяти команд (всего 8 страниц от р000 до р111), адресуемой командами коротких переходов и вызовов.
Bit - прямоадресуемый бит внутренней памяти данных в диапазоне адресов 20...3F (bit может принимать значения 00...7F.