Система команд ОЭВМ семейства 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.
