Система команд МК51. Классификация и общая характеристика, отличие от системы команд МК48

Страницы работы

Содержание работы

Система команд МК51. Классификация и общая характеристика, отличие от системы команд МК48.

Система команд содержит 111 базовых команд. По функциональному признаку делятся на 5 групп: команды передачи данных, арифметические операции, логические операции, передача управления и операций с битами. В отличие от МК48 имеются команды умножения, деления, вычитания, операции над битами и более широкий набор команд передачи управления. Состав операндов МК51 включает в себя биты, 4-х битные цифры, байты и 16-ти битные слова. Используется 4 вида адресации: прямая, косвенная, непосредственная, неявная.

Слово состояния программы:

C     (7) – флаг переноса (аппаратно и программно изменяемый) – при выполнении арифметических и логических операций.

АС  (6) – флаг вспомогательного переноса (аппаратно изменяемый) – при выполнении команд сложения и вычитания (перенос или заем в бите 3).

F0   (5) – флаг 0. Флаг пользователя.

RS1(4)ü

ý Выбор банка регистров.

RS0(3)þ

0V  (2) – флаг переполнения (аппаратно изменяемый) – при выполнении арифметических операций.

--   (1) – не используется.

Р    (0) – флаг паритета (аппаратно изменяемый) – контроль четности количества битов в аккумуляторе.

Группа команд передачи данных.

Все команды не влияют на флаги кроме загрузки PSW и ACC. В отличие от команд МК48, передача данных в МК51 может выполняться без участия ACC.

MOV A, Rn          – (A)¬(Rn) , n=0..7;        MOV A, @Ri              –(A)¬((Ri)), i=0,1;     MOV Rn, #d                    –(Rn)¬#d;

MOV A, #d           – (A)¬#d;                         MOV Rn, ad                –(Rn)¬(ad);                 MOV ad, A                     –(ad)¬(A);

MOV Rn,A           –(Rn)¬(A);                       MOV A, ad                  – (A)¬(ad) ;                 MOV ad, Rn                   --(ad)¬(Rn);

MOV add, ads       –(add)¬(ads);                    MOV ad, @Ri             --(ad)¬((Ri));               MOV ad, #d      –(ad)¬#d;

MOV @Ri, A        –((Ri))¬(A);                      MOV @Ri, ad            –((Ri))¬(ad);                MOV @Ri, #d  –((Ri))¬#d;

MOV DPTR,#d16 –(DPTR)¬#d16;               MOVX A,@Ri           –(A)¬(Ri) (из ВПД)

MOVX A, @DPTR –(A)¬((DPTR)) (из расширенной ВПД);

MOVX @Ri, A –((Ri))¬(A); (в ВПД);

MOVX @DPTR, A –((DPTR))¬(A); (в расширенную ВПД);

PUSH ad – (SP)¬(SP)+1, ((SP))¬ad;              POP ad –(ad)¬((SP)), (SP)¬(SP)-1;

XCH A, Rn –(A)«(Rn);                                     XCH A, ad –(A)«(ad);                                   XCH A, @Ri –(A)«((Ri));

XCHD A, @Ri –(A0-3)«((Ri)0-3);

MOVC A, @A+DPTR –(A)¬((A)+(DPTR)); 

MOVC A, @A+PC –(PC)¬(PC)+1, (A)¬((A)+(PC));

Команды арифметических операций.

ADD A, операнд (Rn, ad, @Ri, #d) –(A)¬(A)+(операнд);            ADDC A, операнд                                     (A)¬(A)+(операнд)+( C );

DA A                          десятичная коррекция ACC;                          SUBB A, операнд         (A)¬(A)-( C )-(операнд);

INC операнд            инкремент;                                                        DEC операнд                 декремент;

MUL AB                    (B)(A)¬(A)·(B);                                              DIV AB                                    (A).(B)¬(A)/(B);

Команды логических операций.

ANL A, операнд      (A)¬(A) and (операнд);                                  ANL ad, операнд           (ad)¬(ad) and (операнд);

ORL A, операнд      (A)¬(A) or (операнд);                                    ORL ad, операнд           (ad)¬(ad) or (операнд);

XRL A, операнд      (A)¬(A) xor (операнд);                                                                            XRL ad, операнд                    (ad)¬(ad) xor (операнд);

SWAP A                    (A0-3)«(A4-7);                                                    CLR A                             (A)¬0;

CPL A                        (A)¬ not (A);                                                    RL A                                (An+1)¬(An), n=0..6, A0¬A7;

RR A                          сдвиг вправо;                                                    RLC A                             (An+1)¬(An),  A0¬(C), (C)¬A7;

RRC A                       сдвиг вправо через перенос;                         

Группа команд операций с битами.

В качестве операндов могут выступать отдельные биты некоторых регистров специальных функций и портов, а также 128 программных флагов пользователя.

CPL C –( C )¬0;                CLR bit –( C )¬0 ;             SETB C –( C )¬1;                            SETB bit –( C )¬1;

CPL C –( C )¬not ( C );     CPL bit –( b )¬not (b);      ANL C,bit –( C )¬( C )AND(b);     ANL C,/bit –( C )¬( C )AND(b);

 


ORL C,bit  –( C )¬ ( C )or(b);     ORL C,/bit  –( C )¬ ( C )or( b);

MOV  C,bit –( C )¬(b);                MOV bit,C –( b )¬( C );

            Группа команд передачи управления.

Команды, обеспечивающие условное и безусловное ветвление, вызов подпрограммы и возврат из них, а также NOP. Длинный переход - переход по всему адресному пространству ПП (ad16). Содержат в мнемонике L. Абсолютный переход - переход в пределах одной страницы памяти (2048 байт) (ad11). Содержат в мнемокоде А. Относительный переход - переход в пределах - -128 .. +128 байт относительно байта следующей команды.  Косвенный переход

JMP @A+DPTR - переход по вычесленному адресу, неизвестному при написании программы –(PC)¬(A)+DPTR.

LJMP ad16 –(PC)¬ad16;    AJMP ad11 –(PC)¬(PC)+2,(PC0-10)¬ad11 ;       SJMP rel –(PC)¬(PC)+2;(PC)¬(PC)+rel;

JZ rel - переход если А=0;   JNZ rel  - переход если А¹0;    JC rel - переход если С=1;    JNC rel - переход если С=0;

JB bit, rel - (PC)¬(PC)+3, если (b)=1 то (PC)¬(PC)+rel;       JNB bit, rel - (PC)¬(PC)+3, если (b)=0 то (PC)¬(PC)+rel;

JBC bit, rel – переход, если (b)=1, (b)¬0;    DJNZ Rn,rel – декремент Rn и переход, если не 0;

DJNZ ad,rel – декремент ad и переход, если не 0;

CJNE A,ad, rel - сравнение АСС и ad и переход если ¹;

CJNE A,#d,rel - сравнение АСС и #d и переход если ¹;      

CJNE Rn,#d,rel - сравнение регистра  и #d и переход если ¹;      

CJNE @R,#d,rel - сравнение байта в РПД и #d и переход если ¹; 

LCALL ad16 - длинный вызов подпрограммы;

ACALL ad11 - абсолютный  вызов подпрограммы;

RET - возврат из подпрограммы ;

RETI - возврат из подпрограммы обработки прерывания.

Похожие материалы

Информация о работе