MCS-51 utasításkészlete 2/2 

Utasítások hossza és végrehajtási idejük

 A 8051 mikrokontrollernek összesen 111 utasítása van. Az utasítások között egy-, két- és három bájt hosszúakat találunk. Az utasítás bájtszámban a műveleti kód és - rendszerint közvetetten - az operandusok is benne vannak. Az utasítások között:

ˇ 49 egy-bájt

ˇ 45 két-bájt és

ˇ 17 három-bájt hosszúságú van. 

Az INTEL cég processzoraira és kontrollerjeire érvényes a következő írási sorrend: első művelet, második az adat-cél és végül következik a forrás. A felhasználói könyvek, katalógusok az alábbi rövidítéseket használják:

Rn az R0 - R7 munkaregiszterek valamelyikét jelöli. Az utasítás e regiszter tartalmára vonatkozik.

direct a belső RAM-ban egy cím, I/O port vagy státusregiszter. Az utasításban hexadecimálisan kell megadni.

@Ri az R0,vagy R1 regiszterek tartalma, amely az elérendő bájt címe.

#data az utasításban megadott 8 bites adat.

#data 16 az utasításban megadott 16 bites adat (a 2. és a 3. bájt).

rel egy relatív cím. A következő utasítás címéhez viszonyítottan -128 és +127 területen belülre mutathat.

bit jelentheti a 128 "softver-flag" valamelyikét, egy I/O bitet illetve vezérlő vagy státuszbitet. 

A táblázatokban az egyes utasítások hosszát és az oszcillátor periódusában megadott végrehajtási idejét láthatjuk. A felhasználó ezek alapján kiszámíthatja a szükséges memóriaterületet és a futás időt. ( Egy gépi ciklus hossza 12 oszcillátor periódus.)  Vissza 

Adatátvíteli utasítások

 

Utasítás

Hossz, bájt

Oszcillátor-periódus

MOV A,Rn

1

12

MOV A,direct

2

12

MOV A,@Ri

1

12

MOV A,#data

2

12

MOV Rn,A

1

12

MOV Rn,direct

1

24

MOV Rn,#data

2

12

MOV direct,A

2

12

MOV direct,Rn

2

24

MOV direct,direct

3

24

MOV direct,@Ri

2

24

MOV direct,#data

3

24

MOV @Ri,A

1

12

MOV @Ri,direct

2

24

MOV @Ri,#data

2

12

MOV DPTR,#data16

3

24

MOVC A,@A+DPTR

1

24

MOVC A,@A+PC

1

24

MOVX A,@Ri

1

24

MOVX A,@DPTR

1

24

MOVX @Ri,A

1

24

MOVX @DPTR,A

1

24

PUSH direct

2

24

POP direct

2

24

XCH A,Rn

1

12

XCH A,direct

2

12

XCH A,@Ri

1

12

XCHD A,@Ri

1

12

   Vissza

Aritmetikai utasítások

 

Utasítás

Hossz, bájt

Oszcillátor-periódus

ADD A,Rn

1

12

ADD A,direct

2

12

ADD A,@Ri

1

12

ADD A,#data

2

12

ADDC A,Rn

1

12

ADDC A,direct

2

12

ADDC A,@Ri

1

12

ADDC A,#data

2

12

SUBB A,Rn

1

12

SUBB A,direct

2

12

SUBB A,@Ri

1

12

SUBB A,#data

2

12

INC A

1

12

INC Rn

1

12

INC direct

2

12

INC @Ri

1

12

INC DPTR

1

24

DEC A

1

12

DEC Rn

1

12

DEC direct

2

12

DEC @Ri

1

12

MUL AB

1

48

DIV AB

1

48

DA

1

12

 

 VisszaLogikai és boole- utasítások

 

Utasítás

Hossz, bájt

Oszcillátor-periódus

ANL A,Rn

1

12

ANL A,direct

2

12

ANL A,@Ri

1

12

ANL A,#data

2

12

ANL direct,A

2

12

ANL direct,#data

3

24

ORL A,Rn

1

12

ORL A,direct

2

12

ORL A,@Ri

1

12

ORL A,#data

2

12

ORL direct,A

2

12

ORL direct,#data

3

24

XRL A,Rn

1

12

XRL A,direct

2

12

XRL A,@Ri

1

12

XRL A,#data

2

12

XRL direct,A

2

12

XRL direct,#data

3

24

CLR A

1

12

CPL A

1

12

RL A

1

12

RLC A

1

12

RR A

1

12

RRC A

1

12

SWAP A

1

12

CLR C

1

12

CLR bit

2

12

SETB C

1

12

SETB bit

2

12

CPL C

1

12

CPL bit

2

12

ANL C,bit

2

24

ANL C,/bit

2

24

ORL C,bit

2

24

ORL C,/bit

2

24

MOV C,bit

2

12

MOV bit,C

2

24

JC rel

2

24

JNC rel

2

24

JB bit,rel

3

24

JNB bit,rel

3

24

JBC bit,rel

3

24

 

  Vissza

Vezérlő utasítások

 

Utasítás

Hossz, bájt

Oszcillátor-periódus

ACALL addr11

2

24

LCALL addr16

3

24

RET

1

24

AJMP addr11

2

24

LJMP addr16

3

24

SJMP rel

2

24

JMP

1

24

JZ rel

2

24

JNZ rel

2

24

CJNE A,direct,rel

3

24

CJNE A,#data,rel

3

24

CJNE Rn,#data,rel

3

24

CJNE @Ri,#data,rel

3

24

DJNZ Rn,rel

3

24

DJNZ direct,rel

3

24

NOP

1

12

RETI

1

12

 Vissza