Інструкції 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 | p>
Зауваження. Операції з регістром спеціальних функцій з регістром 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 | p>
p>