В данной статье представлена система команд для микроконтроллеров MCS-51. Она будем полезна тем кто работает с этими микроконтроллерами не так давно и не помнит всех команд, сколько байт они занимают и за сколько машинных циклов выполняются. 

 

КОМАНДЫ  ПЕРЕСЫЛКИ, ОБМЕНА  И  ЗАГРУЗКИ

Комментарии Мнемокод К О П ТК Б МЦ
A ← Rn;   Пересылка из РОНа в Акк MOV      A,Rn 11101rrr 1 1 1
A ← (Ri);   Пересыдка из РПД в Акк MOV   A,@Ri 1110011i 1 1 1
A ← (dir);   Пересылка из РПД в Акк MOV     A,dir 11100101 3 2 1
A ← #DAT;       Загрузка байта в Акк MOV  A,#DAT 01110100 2 2 1
Rn ← A;    Пересылка из Акк. в РОН MOV    Rn,A 11111rrr 1 1 1
(Ri) ← A;  Пересылка из Акк. в РПД MOV  @Ri,A 1111011i 1 1 1
(dir) ← A;  Пересылка из Акк. в РПД MOV   dir,A 11110101 3 2 1
(dir) ← #DAT; Загрузка байта в РПД MOV  dir,#DAT 01110101 7 3 2
Rn ← #DAT;    Загрузка байта в РОН MOV  Rn,#DAT 01111rrr 2 2 1
(Ri) ← #DAT;  Загрузка байта в РПД MOV @Ri,#DAT 0111011i 2 2 1
(dir)←(dir);  Пересыл. из РПД в РПД MOV     dir,dir 10000101 9 3 2
Rn ← (dir); Пересылка из РПД в РОН MOV   Rn, dir 10101rrr 3 2 2
(Ri)←(dir); Пересылка из РПД в РПД MOV  @RI,dir 1010011i 3 2 2
(dir)←Rn; Пересылка из РОНа в РПД MOV   dir, Rn 10001rrr 3 2 2
(dir)←(Ri); Пересылка из РПД в РПД MOV  dir,@Ri 1000011i 3 2 2
DPTR←#D16; Загрузка слова в DPTR MOV DPTR,#D16 10010000 13 3 2
A ↔ Rn;          Обмен Акк. с РОНом XCH     A, Rn 11001rrr 1 1 1
A ↔ (Ri);             Обмен Акк. с РПД XCH   A, @Ri 1100011i 1 1 1
A ↔(dir); Обмен Акк. с РПД XCH      A, dir 11000101 3 2 1
Обмен младших тетрад Акк. с РПД XCHD  A, @Ri 1101011i 1 1 1
Обмен тетрад Аккумулятора SWAP    A 11000100 1 1 1
SP←SP+1;(SP)←(dir);  Запись в стек PUSH   dir 11000000 3 2 2
(dir)←(SP);SP←SP–1; Чтение из стека POP     dir 11010000 3 2 2
A←(DPTR);Пересылка из ВПД в Акк. MOVX A,@DPTR 11100000 1 1 2
(DPTR)←A;Пересылка из Акк. в ВПД MOVX @DPTR,A 11110000 1 1 2
A←(Ri);      Пересылка из ВПД в Акк. MOVX   A,@Ri 1110001i 1 1 2
(Ri)←A;      Пересылка из Акк. в ВПД MOVX   @Ri,A 1111001i 1 1 2
A←((A+DPTR));Пересылка б из ПП в Акк. MOVC  A,@A+DPTR 10010011 1 1 2
A←((A+PC));Пересылка из ПП в Акк. MOVC A,@A+PC 10000011 1 1 2

АРИФМЕТИЧЕСКИЕ  И  ЛОГИЧЕСКИЕ  КОМАНДЫ

Комментарии Мнемокод К О П ТК Б МЦ
A←A+Rn;    Сложение Акк. с РОНом ADD    A,Rn 00101rrr 1 1 1
A←A+(Ri);       Сложение Акк. с РПД ADD  A, @Ri 0010011i 1 1 1
A←A+(dir);      Сложение Акк. с РПД ADD    A, dir 00100101 3 2 1
A←A+#DAT; Сложение Акк. с #DAT ADD  A,#DAT 00100100 2 2 1
A ← A + Rn + C; ADDC   A, Rn 00111rrr 1 1 1
A ← A + (Ri) + C; ADDC  A, @Ri 0011011i 1 1 1
A ← A + (dir) + C; ADDC   A, dir 00110101 3 2 1
A ← A + #DAT + C; ADDC  A,#DAT 00110100 2 2 1
Десятичная коррекция Аккумулятора DA    A 11010100 1 1 1
A ← A – Rn – C; SUBB    A,Rn 10011rrr 1 1 1
A ← A – (Ri) – C; SUBB  A, @Ri 1001011i 1 1 1
A ← A – (dir) – C; SUBB    A,dir 10010101 3 2 1
A ← A – #DAT – C; SUBB  A,#DAT 10010100 2 2 1
A < = A + 1; Инкремент  Аккумул. INC     A 00000100 1 1 1
Rn ← Rn + 1; Инкремент  РОНа INC   Rn 00001rrr 1 1 1
(Ri) ← (Ri) + 1;Инкремент  РПД INC   @Ri 0000011i 1 1 1
(dir) ← (dir) + 1; Инкремент  РПД INC     dir 00000101 3 2 1
DPTR←DPTR+1;   Инкремент  DPTR INC  DPTR 10100011 1 1 2
A ← A – 1; Декремент Аккумул. DEC      A 00010100 1 1 1
Rn ← Rn – 1; Декремент  РОНа DEC    Rn 00011rrr 1 1 1
(Ri) ← (Ri) – 1; Декремент РПД DEC  @Ri 0001011i 1 1 1
(dir) ← (dir) – 1; Декремент  РПД DEC     dir 00010101 3 2 1
BA ← A * B;  Умножение A на B MUL   AB 10100100 1 1 4
A.B ← A / B;  Деление A на B DIV  AB 10000100 1 1 4
A ← A & Rn;     Лог. «И» Акк. и РОНа ANL    A,Rn 01011rrr 1 1 1
A ← A & (Ri);    Лог.»И» Акк. и РПД ANL   A,@Ri 0101011i 1 1 1
A ← A & (dir);    Лог.»И» Акк. и РПД ANL     A,dir 01010101 3 2 1
A←A & #DAT;  Лог.»И» Акк. и #DAT ANL  A,#DAT 01010100 2 2 1
(dir) ← (dir) & A;  Лог.»И» РПД и Акк ANL    dir, A 01010010 3 2 1
(dir) ← (dir) & #DAT ; ANL  dir,#DAT 01010011 7 3 2
A ← A \/ Rn; Лог.»ИЛИ» Акк. и РОНа ORL     A,Rn 01001rrr 1 1 1
A ← A \/ (Ri); Лог.»ИЛИ» Акк. и РПД ORL   A,@Ri 0100011i 1 1 1
A ← A \/ (dir);Лог.»ИЛИ» Акк. и РПД ORL     A, dir 01000101 3 2 1
A ← A \/ #DAT; ORL   A,#DAT 01000100 2 2 1
(dir) ← (dir) \/ A; ORL    dir, A 01000010 3 2 1
(dir) ← (dir) \/ #DAT; ORL  dir,#DAT 01000011 7 3 2
A←A (+) Rn;»Искл.ИЛИ» Акк. и РОН XRL    A, Rn 01101rrr 1 1 1
A ← A (+) (Ri); XRL  A, @Ri 0110011i 1 1 1
A ← A (+) (dir); XRL    A, dir 01100101 3 2 1
A ← A (+) #DAT; XRL   A,#DAT 01100100 2 2 1
(dir) ← (dir) (+) A; XRL    dir,A 01100010 3 2 1
(dir) ← (dir) (+) #DAT; XRL  dir,#DAT 01100011 7 3 2
A ← 0; Сброс Аккумулятора CLR    A 11100100 1 1 1
A ← ~A; Инверсия Аккумулятора CPL    A 11110100 1 1 1
Циклический сдвиг влево Акк. RL     A 00100011 1 1 1
Цикл.сдвиг влево Акк. через перенос RLC   A 00110011 1 1 1
Циклический сдвиг вправо Акк. RR     A 00000011 1 1 1
Цикл.сдвиг вправо Акк.через перенос RRC   A 00010011 1 1 1

ОПЕРАЦИИ  С  БИТАМИ

Комментарии Мнемокод К О П ТК Б МЦ
С ← 0;                         Сброс флага С CLR     C 11000011 1 1 1
C ← 1;                  Установка флага С SETB   C 11010011 1 1 1
С ← ~C;                 Инверсия флага С CPL      C 10110011 1 1 1
(bit) ← 0;  Сброс прямоадресуем.бита CLR     bit 11000010 4 2 1
(bit) ← 1;                 Установка «бита» SETB   bit 11010010 4 2 1
(bit) ← ~(bit);            Инверсия «бита» CPL      bit 10110010 4 2 1
C ← C & (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 ← (bit); Пересылка изпрямоадресуемого бита во флаг С MOV   C,bit 10100010 4 2 1
(bit) ← C; Пересылка из С в «бит» MOV   bit,C 10010010 4 2 2

КОМАНДЫ  УСЛОВНЫХ  ПЕРЕХОДОВ

Комментарии Мнемокод К О П ТК Б МЦ
PC ← PC + 2 + rel,  если А = 0 JZ    rel 01100000 5 2 2
PC ← PC + 2 + rel,  если А <> 0 JNZ   rel 01110000 5 2 2
PC ← PC + 2 + rel,  если флаг С = 1 JC    rel 01000000 5 2 2
PC ← PC + 2 + rel,  если флаг С = 0 JNC   rel 01010000 5 2 2
PC ← PC + 3 + rel,   если (bit) = 1 JB    bit,rel 00100000 11 3 2
PC ← PC + 3 + rel,   если (bit) = 0 JNB   bit,rel 00110000 11 3 2
PC ← PC + 3 + rel,   если (bit) = 1,(bit) ← 0 JBC   bit,rel 00010000 11 3 2
PC ← PC + 3 + rel,если A<>#DAT,C ← 1,

если A < #DAT,С ← 0,

если A > #DAT

CJNEA, #DAT, rel 10110100 10 3 2
PC ← PC + 3 + rel,если Rn<>#DAT,C ← 1,

если Rn < #DAT,С ← 0,

если Rn > #DAT

CJNERn, #DAT, rel 10111rrr 10 3 2
PC←PC + 3 + rel,если(@Ri)<>#DAT,C ← 1,

если (@Ri) < #DAT,С ← 0,

если (@Ri) > #DAT

CJNE@Ri, #DAT, rel 1011011i 10 3 2
PC ← PC + 3 + rel,если A<>(dir),C ← 1,

если A < (dir),С ← 0,

если A > (dir)

CJNEA, dir, rel 10110101 8 3 2
PC ← PC + 2 + rel,  если  Rn – 1 <> 0 DJNZ    Rn, rel 11011rrr 5 2 2
PC ← Pc + 3 + rel,  если (dir) – 1 <> 0 DJNZ     dir,rel 11010101 8 3 2

 

КОМАНДЫ  БЕЗУСЛОВНЫХ  ПЕРЕХОДОВ

Комментарии Мнемокод К О П ТК Б МЦ
PC[0_15]←16ADR; Длинный переход LJMP   16ADR 00000010 12 3 2
PC[0_11] ← 11ADR;Переходвнутри страницы в 2 Кбайта AJMP   11ADR sss00001 6 2 2
PC ← PC + 2 + rel;Относит.переход SJMP       rel 10000000 5 2 2
PC ← A + DPTR; Косвенныйотносительный переход JMP  @A+DPTR 01110011 1 1 2
(SP) ← PC + 3; PC[0_15] ←16ADR;Длинный вызов подпрограммы LCALL   16ADR 00010010 12 3 2
(SP) ← PC + 2;PC[0_10]←11ADR;Вызов подпр. внутри страницы в 2Кб ACALL   11ADR sss10001 6 2 2
PC ← (SP); Возврат из подпрограммы RET 00100010 1 1 2
PC ← (SP); Возврат  изподпрограммы обработки  прерываний RETI 00110010 1 1 2
PC ← PC + 1; Холостая команда NOP 00000000 1 1 1

 

 

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *