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 |
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 |
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 |