Сокращения: РПД - регистр памяти данных, ВДП - внешняя память
данных,
ПП - Постоянная память (ROM), КОП - код операции, <> - "не
равно"
Название команды | Мнемокод | КОП | Т | Б | Ц | Операция |
1. Группа команд передачи данных |
||||||
Пересылка в аккумулятор из регистра(n=0_7) |
MOV A,Rn | 11101rrr | 1 | 1 | 1 | (A) <= (Rn) |
Пересылка в аккумулятор прямоадресуемого байта |
MOV A,ad | 11100101 | 3 | 2 | 1 | (A) <= (ad) |
Пересылка в аккумулятор байта из РПД(i=0,1) |
MOV A,@Ri | 1110011i | 1 | 1 | 1 | (A) <= ((Ri)) |
Загрузка в аккумулятор константы |
MOV A,#d | 01110100 | 2 | 2 | 1 | (A) <= #d |
Пересылка в регистр из аккумулятора |
MOV Rn,A | 11111rrr | 1 | 1 | 1 | (Rn) <= (A) |
Пересылка в регистр прямоадресуемого байта |
MOV Rn,ad | 10101rrr | 3 | 2 | 2 | (Rn) <= (ad) |
Пересылка в регистр константы |
MOV Rn,#d | 01111rrr | 2 | 2 | 1 | (Rn) <= #d |
Пересылка по прямому адресу аккумулятора |
MOV ad,A | 11110101 | 3 | 2 | 1 | (ad) <= (A) |
Пересылка по прямому адресу регистра |
MOV ad,Rn | 10001rrr | 3 | 2 | 2 | (ad) <= (Rn) |
Пересылка прямоадресуемого байта по прямому адресу |
MOV add,ads | 10000101 | 9 | 3 | 2 | (add) <= (ads) |
Пересылка байта из РПД по прямому адресу |
MOV ad,@Ri | 1000011i | 3 | 2 | 2 | (ad) <= ((Ri)) |
Пересылка по прямому адресу константы |
MOV ad,#d | 01110101 | 7 | 3 | 2 | (ad) <= #d |
Пересылка в РПД из аккумулятора |
MOV @Ri,A | 1111011i | 1 | 1 | 1 | ((Ri)) <= (A) |
Пересылка в РПД прямоадресуемого байта |
MOV @Ri,ad | 0110011i | 3 | 2 | 2 | ((Ri)) <= (ad) |
Пересылка в РПД константы | MOV @Ri,#d | 0111011i | 2 | 2 | 1 | ((Ri)) <= #d |
Загрузка указателя данных | MOV DPTR,#d16 | 10010000 | 13 | 3 | 2 | (DPTR) <= #d16 |
Пересылка в аккумулятор байта из ПП |
MOVC A,@A+DPTR | 10010011 | 1 | 1 | 2 | (A) <= ((A) + (DPTR)) |
Пересылка в аккумулятор байта из ПП |
MOVC A,@A+PC | 10000011 | 1 | 1 | 2 | (PC) <= (PC) + 1; (A) <= ((A) + (PC)) |
Пересылка в аккумулятор байта из ВПД |
MOVX A,@Ri | 1110001i | 1 | 1 | 2 | (A) <= ((Ri)) |
Пересылка в аккумулятор байта из расширенной ВПД |
MOVX A,@DPTR | 11100000 | 1 | 1 | 2 | (A) <= ((DPTR)) |
Пересылка в ВПД из аккумулятора | MOVX @Ri,A | 1111001i | 1 | 1 | 2 | ((Ri)) <= (A) |
Пересылка в расширенную ВПД из аккумулятора |
MOVX @DPTR,A | 11110000 | 1 | 1 | 2 | ((DPTR)) <= (A) |
Загрузка в стек | PUSH ad | 11000000 | 3 | 2 | 2 | (SP) <= (SP) + 1 ((SP)) <= (ad) |
Извлечение из стека | POP ad | 11010000 | 3 | 2 | 2 | (ad) <= ((SP)) (SP) <= (SP) - 1 |
Обмен аккумулятора с регистром | XCH A,Rn | 11001rrr | 1 | 1 | 1 | (A) <=> (Rn) |
Обмен аккумулятора с прямоадресуемым байтом |
XCH A,ad | 11000101 | 3 | 2 | 1 | (A) <=> (ad) |
Обмен аккумулятора с байтом из РПД |
XCH A,@Ri | 1100011i | 1 | 1 | 1 | (A) <=> ((Ri)) |
Обмен младшей тетрады аккумулятора с младшей тетрадой РПД |
XCHD A,@Ri | 1101011i | 1 | 1 | 1 | (A0_3) <=> ((Ri)0_3) |
2. Группа команд арифметических операций |
||||||
Сложение аккумулятора регистром(n=0_7) |
ADD A,Rn | 00101rrr | 1 | 1 | 1 | (A) <= (A) + (Rn) |
Сложение аккумулятора с прямоадресуемым байтом |
ADD A,ad | 00100101 | 3 | 2 | 1 | (A) <= (A) + (ad) |
Сложение аккумулятора с байтом из РПД(i=0,1) |
ADD A,@Ri | 0010011i | 1 | 1 | 1 | (A) <= (A) +((Ri)) |
Сложение аккумулятора с константой |
ADD A,#d | 00100100 | 2 | 2 | 1 | (A) <= (A) + #d |
Сложение аккумулятора с регистром и переносом |
ADDC A,Rn | 00111rrr | 1 | 1 | 1 | (A) <= (A) + (Rn) + (C) |
Сложение аккумулятора с прямоадресуемым байтом и переносом |
ADDC A,ad | 00110101 | 3 | 2 | 1 | (A) <= (A) + (ad) + (C) |
Сложение аккумулятора с байтом из РПД и переносом |
ADDC A,@Ri | 0011011i | 1 | 1 | 1 | (A) <= (A) + ((Ri)) + (C) |
Сложение аккумулятора с константой и переносом |
ADDC A,#d | 00110100 | 2 | 2 | 1 | (A) <= (A) + #d + (C) |
Десятичная коррекция аккумулятора |
DA A | 11010100 | 1 | 1 | 1 | Если (A0_3) > 9 || ((AC)=1), то (A0_3) <= (A0_3) + 6, затем если (A4_7) > 9 || ((C)=1), то (A4_7) <= (A4_7) + 6 |
Вычитание из аккумулятора регистра и заема |
SUBB A,Rn | 10011rrr | 1 | 1 | 1 | (A) <= (A) - (C) - (Rn) |
Вычитание из аккумулятора прямоадресуемого байта и заема |
SUBB A,ad | 10010101 | 3 | 2 | 1 | (A) <= (A) - (C) - (ad) |
Вычитание из аккумулятора байта из РПД и заема |
SUBB A,@Ri | 1001011i | 1 | 1 | 1 | (A) <= (A) - (C) - ((Ri)) |
Вычитание из аккумулятора константы и заема |
SUBB A,#d | 10010100 | 2 | 1 | 1 | (A) <= (A) - (C) - #d |
Инкремент аккумулятора | INC A | 00000100 | 1 | 1 | 1 | (A) <= (A) + 1 |
Инкремент регистра | INC Rn | 00001rrr | 1 | 1 | 1 | (Rn) <= (Rn) + 1 |
Инкремент прямоадресуемого байта | INC ad | 00000101 | 3 | 2 | 1 | (ad) <= (ad) + 1 |
Инкремент байта из РПД | INC @Ri | 0000011i | 1 | 1 | 1 | ((Ri)) <= ((Ri)) + 1 |
Инкремент указателя данных | INC DPTR | 10100011 | 1 | 1 | 2 | (DPTR) <= (DPTR) + 1 |
Декремент аккумулятора | DEC A | 00010100 | 1 | 1 | 1 | (A) <= (A) - 1 |
Декремент регистра | DEC Rn | 00011rrr | 1 | 1 | 1 | (Rn) <= (Rn) - 1 |
Декремент прямоадресуемого байта | DEC ad | 00010101 | 3 | 2 | 1 | (ad) <= (ad) - 1 |
Декремент байта из РПД | DEC @Ri | 0001011i | 1 | 1 | 1 | ((Ri)) <= ((Ri)) - 1 |
Умножение аккумулятора на регистр В |
MUL AB | 10100100 | 1 | 1 | 4 | (B)(A) <= (A)*(B) |
Деление аккумулятора на регистр В |
DIV AB | 10000100 | 1 | 1 | 4 | (A)(B) <= (A)/(B) |
3. Группа команд логических операций |
||||||
Логическое И аккумулятора и регистра |
ANL A,Rn | 01011rrr | 1 | 1 | 1 | (A) <= (A) && (Rn) |
Логическое И аккумулятора и прямоадресуемого байта |
ANL A,ad | 01010101 | 3 | 2 | 1 | (A) <= (A) && (ad) |
Логическое И аккумулятора и байта из РПД |
ANL A,@Ri | 0101011i | 1 | 1 | 1 | (A) <= (A) && ((Ri)) |
Логическое И аккумулятора и константы |
ANL A,#d | 01010100 | 2 | 2 | 1 | (A) <= (A) && #d |
Логическое И прямоадресуемого байта и аккумулятора |
ANL ad,A | 01010010 | 3 | 2 | 1 | (ad) <= (ad) && (A) |
Логическое И прямоадресуемого байта и константы |
ANL ad,#d | 01010011 | 7 | 3 | 2 | (ad) <= (ad) && #d |
Логическое ИЛИ аккумулятора и регистра |
ORL A,Rn | 01001rrr | 1 | 1 | 1 | (A) <= (A) || (Rn) |
Логическое ИЛИ аккумулятора и прямоадресуемого байта |
ORL A,ad | 01000101 | 3 | 2 | 1 | (A) <= (A) || (ad) |
Логическое ИЛИ аккумулятора и байта из РПД |
ORL A,@Ri | 0100011i | 1 | 1 | 1 | (A) <= (A) || ((Ri)) |
Логическое ИЛИ аккумулятора и константы |
ORL A,#d | 01000100 | 2 | 2 | 1 | (A) <= (A) || #d |
Логическое ИЛИ прямоадресуемого байта и аккумулятора |
ORL ad,A | 01000010 | 3 | 2 | 1 | (ad) <= (ad) || (A) |
Логическое ИЛИ прямоадресуемого байта и константы |
ORL ad,#d | 01000011 | 7 | 3 | 2 | (ad) <= (ad) || #d |
Исключающее ИЛИ аккумулятора и регистра |
XRL A,Rn | 01101rrr | 1 | 1 | 1 | (A) <= (A) ^ (Rn) |
Исключающее ИЛИ аккумулятора и прямоадресуемого байта |
XRL A,ad | 01100101 | 3 | 2 | 1 | (A) <= (A) ^ (ad) |
Исключающее ИЛИ аккумулятора и байта из РПД |
XRL A,@Ri | 0110011i | 1 | 1 | 1 | (A) <= (A) ^ ((Ri)) |
Исключающее ИЛИ аккумулятора и константы |
XRL A,#d | 01100100 | 2 | 2 | 1 | (A) <= (A) ^ #d |
Исключающее ИЛИ прямоадресуемого байта и аккумулятора |
XRL A,#d | 01100100 | 2 | 2 | 1 | (A) <= (A) ^ #d |
Исключающее ИЛИ прямоадресуемого байта и константы |
XRL ad,#d | 01100011 | 7 | 3 | 2 | (ad) <= (ad) ^ #d |
Сброс аккумулятора | CLR A | 11100100 | 1 | 1 | 1 | (A) <= 0 |
Инверсия аккумулятора | CPL A | 11110100 | 1 | 1 | 1 | (A) <= ~(A) |
Циклический сдвиг аккумулятора влево |
RL A | 00100011 | 1 | 1 | 1 | (An+1) <= (An) n=0_6; (A0) <= (A7) |
Сдвиг аккумулятора влево через перенос |
RLC A | 00110011 | 1 | 1 | 1 | (An+1) <= (An) n=0_6; (A0) <= (C) ; (C) <= (A7) |
Циклический сдвиг аккумулятора вправо |
RR A | 00000011 | 1 | 1 | 1 | (An) <= (An+1) n=0_6; (A7) <= (A0) |
Сдвиг аккумулятора вправо через перенос |
RRC | 00010011 | 1 | 1 | 1 | (An) <= (An+1) n=0_6; (A7) <= (C) ; (C) <= (A0) |
Обмен местами тетрад в аккумуляторе |
SWAP A | 11000100 | 1 | 1 | 1 | (A0_3) <=> (A4_7) |
4. Группа команд операций с битами |
||||||
Сброс переноса | CLR C | 11000011 | 1 | 1 | 1 | (C) <= 0 |
Сброс бита | CLR bit | 11000010 | 4 | 2 | 1 | (bit) <= 0 |
Установка переноса | SETB C | 11010011 | 1 | 1 | 1 | (C) <= 1 |
Установка бита | SETB bit | 11010010 | 4 | 2 | 1 | (bit) <= 1 |
Инверсия переноса | CPL C | 10110011 | 1 | 1 | 1 | (C) <= !(C) |
Инверсия бита | CPL bit | 10110010 | 4 | 2 | 1 | (bit) <= !(bit) |
Логическое И бита и переноса | ANL C,bit | 10000010 | 4 | 2 | 2 | (C) <= (C) && (bit) |
Логическое И инверсии бита и переноса |
ANL C,/bit | 10110000 | 4 | 2 | 2 | (C) <= (C) && !(bit) |
Логическое ИЛИ бита и переноса | ORL C,bit | 01110010 | 4 | 2 | 2 | (C) <= (C) || (bit) |
Логическое ИЛИ инверсии бита и переноса |
ORL C,/bit | 10100000 | 4 | 2 | 2 | (C) <= (C) || !(bit) |
Пересылка бита в перенос | MOV C,bit | 10100010 | 4 | 2 | 1 | (C) <= (bit) |
Пересылка переноса в бит | MOV bit,C | 10010010 | 4 | 2 | 2 | (bit) <= (C) |
5. Группа команд передачи управления (управления последовательностью) |
||||||
Длинный переход в полном объеме памяти |
LJMP ad16 | 00000010 | 12 | 3 | 2 | (PC) <= ad16 |
Абсолютный переход внутри страницы в 2Кб |
AJMP ad11 | a10a9a8 00001 |
6 | 2 | 2 | (PC) <= (PC) + 2 (PC0_10) <= ad11 |
Короткий относительный переход внутри страницы в 256 байт |
SJMP rel | 10000000 | 5 | 2 | 2 | (PC) <= (PC) + 2 (PC) <= (PC) + rel |
Косвенный относительный переход | JMP @A+DPTR | 01110011 | 1 | 1 | 2 | (PC) <= (A) + (DPTR) |
Переход, если аккумулятор равен нулю |
JZ rel | 01100000 | 5 | 2 | 2 | (PC) <= (PC) + 2, если (A)=0, то (PC) <= (PC) + rel |
Переход, если аккумулятор не равен нулю |
JNZ rel | 01110000 | 5 | 2 | 2 | (PC) <= (PC) + 2, если (A)<>0, то (PC) <= (PC) + rel |
Переход, если перенос равен единице |
JC rel | 01000000 | 5 | 2 | 2 | (PC) <= (PC) + 2, если (C)=1, то (PC) <= (PC) + rel |
Переход, если перенос равен нулю | JNC rel | 01010000 | 5 | 2 | 2 | (PC) <= (PC) + 2, если (C)=0, то (PC) <= (PC) + rel |
Переход, если бит равен единице | JB bit,rel | 00100000 | 11 | 3 | 2 | (PC) <= (PC) + 3, если (bit)=1, то (PC) <= (PC) + rel |
Переход, если бит равен нулю | JNB bit,rel | 00110000 | 11 | 3 | 2 | (PC) <= (PC) + 3, если (bit)=0, то (PC) <= (PC) + rel |
Переход, если бит установлен, с последующим сбросом бита |
JBC bit,rel | 00010000 | 11 | 3 | 2 | (PC) <= (PC) + 3, если (bit)=0, то (bit) <= 0 (PC) <= (PC) + rel |
Декремент регистра и переход, если не нуль |
DJNZ Rn,rel | 11011rrr | 5 | 2 | 2 | (PC) <= (PC) + 2 (Rn) <= (Rn) - 1,если (Rn)<>0,то (PC) <= (PC) + rel |
Декремент прямоадресуемого байта и переход, если не нуль |
DJNZ ad,rel | 11010101 | 8 | 3 | 2 | (PC) <= (PC) + 2 (ad) <= (ad) - 1,если (ad)<>0,то (PC) <= (PC) + rel |
Сравнение аккумулятора с прямоадресуемым байтом и переход, если не равно |
CJNE A,ad,rel | 10110101 | 8 | 3 | 2 | (PC) <= (PC) + 3,если (A)<>(ad), то (PC) <= (PC) + rel, если (A)<(ad), то (C) <= 1, иначе (C) <= 0 |
Сравнение аккумулятора с константой и переход, если не равно |
CJNE A,#d,rel | 10110100 | 10 | 3 | 2 | (PC) <= (PC) + 3,если (A)<>#d, то (PC) <= (PC) + rel, если (A)<#d, то (C) <= 1, иначе (C) <= 0 |
Сравнение регистра с константой и переход, если не равно |
CJNE Rn,#d,rel | 10111rrr | 10 | 3 | 2 | (PC) <= (PC) + 3,если (Rn)<>#d, то (PC) <= (PC) + rel, если (Rn)<#d, то (C) <= 1, иначе (C) <= 0 |
Сравнение байта в РПД с константой и переход, если не равно |
CJNE @Ri,#d,rel | 1011011i | 10 | 3 | 2 | (PC) <= (PC) + 3,если ((Ri))<>#d, то (PC) <= (PC) + rel, если ((Ri))<#d, то (C) <= 1, иначе (C) <= 0 |
Длинный вызов подпрограммы | LCALL ad16 | 00010010 | 12 | 3 | 2 | (PC) <= (PC) + 3; (SP) <= (SP) + 1 ((SP)) <= (PC0_7); (SP) <= (SP) + 1 ((SP)) <= (PC8_15); (PC) <= ad16 |
Абсолютный вызов подпрограммы в пределах страницы в 2Кб |
ACALL ad11 | a10a9a8 10001 |
6 | 2 | 2 | (PC) <= (PC) + 2; (SP) <= (SP) + 1 ((SP)) <= (PC0_7); (SP) <= (SP) + 1 ((SP)) <= (PC8_15); (PC0_10) <= ad11 |
Возврат из подпрограммы | RET | 00100010 | 1 | 1 | 2 | (PC8_15) <= ((SP)); (SP) <= (SP) - 1 (PC0_7) <= ((SP)); (SP) <= (SP) - 1 |
Возврат из подпрограммы обработки прерывания |
RETI | 00110010 | 1 | 1 | 1 | (PC8_15) <= ((SP)); (SP) <= (SP) - 1 (PC0_7) <= ((SP)); (SP) <= (SP) - 1 |
Холостая команда | NOP | 00000000 | 1 | 1 | 1 | (PC) <= (PC) + 1 |