Popis instrukcí pro 8051

Z MediaWiki SPŠ a VOŠ Písek
Skočit na navigaci Skočit na vyhledávání

použito <source lang="asm"> </source>


Popis instrukcí pro 8051

Zkratka  Adresa   Význam
 ACC*     0E0h     akumulátor
 B*       0F0h     B registr
 PSW*     0D0h     stavový registr
 SP        81h     ukazatel na zásobník
 DPTR    82h,83h   ukazatel na data (DPL, DPH)
 P0*       80h     port 0
 P1*       90h     port 1
 P2*      0A0h     port 2
 P3*      0B0h     port 3
 IP*      0B8h     řízení priority přerušení
 IE*      0A8h     povolení/zákaz přerušení
 TMOD      89h     řízení režimu časovače/čítače
 TCON*     88h     řízení časovače/čítače
 TH0       8Ch     vyšší slabika časovače/čítače 0
 TL0       8Ah     nižší slabika časovače/čítače 0
 TH1       8Dh     vyšší slabika časovače/čítače 1
 TL1       8Bh     nižší slabika časovače/čítače 1
 SCON*     98h     řízení sériového rozhraní
 SBUF      99h     data sériového rozhraní
 PCON      87h     řízení spotřeby 

---------- Aritmetické operace ------------------------------
ADD   A,Rn           Přičte obsah registru k akumulátoru
ADD   A,direct       Přičte obsah adresy k akumulátoru
ADD   A,@Ri          Přičte obsah nepřímé adresy k akumulátoru
ADD   A,#data        Přičte přímá data k akumulátoru
ADDC  A,Rn           Přičte CY a obsah registru k akumulátoru
ADDC  A,direct       Přičte CY a obsah adresy k akumulátoru
ADDC  A,@Ri          Přičte CY a obsah nepřímé adresy k akumulátoru
ADDC  A,#data        Přičte CY a přímá data k akumulátoru
SUBB  A,Rn           Odečte CY a obsah registru od akumulátoru
SUBB  A,direct       Odečte CY a obsah adresy od akumulátoru
SUBB  A,@Ri          Odečte CY a obsah nepřímé adresy od akumulátoru
SUBB  A,#data        Odečte CY a přímá data od akumulátoru
INC   A              Zvětší obsah akumulátoru o 1
INC   Rn             Zvětší obsah registru o 1
INC   direct         Zvětší obsah adresy o 1
INC   @Ri            Zvětší obsah nepřímé adresy o 1
DEC   A              Zmenší obsah akumulátoru o 1
DEC   Rn             Zmenší obsah registru o 1
DEC   direct         Zmenší obsah adresy o 1
DEC   @Ri            Zmenší obsah nepřímé adresy o 1
INC   DPTR           Zvětší obsah ukazatele dat o 1
MUL   AB             Vynásobí registry A a B
DIV   AB             Dělí registr A registrem B
DA    A              Desítková úprava obsahu akumulátoru 

---------- Logické operace ------------------------------
ANL   A,Rn           Logický součin akumulátoru s obsahem registru
ANL   A,direct       Logický součin akumulátoru s obsahem adresy
ANL   A,@Ri          Logický součin akumulátoru s obsahem nepřímé adresy
ANL   A,#data        Logický součin akumulátoru s přímými daty
ANL   direct,A       Logický součin obsahu adresy s akumulátorem
ANL   direct,#data   Logický součin obsahu adresy s přímými daty
ORL   A,Rn           Logický součet akumulátoru s obsahem registru
ORL   A,direct       Logický součet akumulátoru s obsahem adresy
ORL   A,@Ri          Logický součet akumulátoru s obsahem nepřímé adresy
ORL   A,#data        Logický součet akumulátoru s přímými daty
ORL   direct,A       Logický součet obsahu adresy s akumulátorem
ORL   direct,#data   Logický součet obsahu adresy s přímými daty
XRL   A,Rn           Exclusive-OR akumulátoru s obsahem registru
XRL   A,direct       Exclusive-OR akumulátoru s obsahem adresy
XRL   A,@Ri          Exclusive-OR akumulátoru s obsahem nepřímé adresy
XRL   A,#data        Exclusive-OR akumulátoru s přímými daty
XRL   direct,A       Exclusive-OR obsahu adresy s akumulátorem
XRL   direct,#data   Exclusive-OR obsahu adresy s přímými daty
CLR   A              Nuluje obsah akumulátoru
CPL   A              Neguje obsah akumulátoru
RL    A              Rotace obsahu akumulátoru vlevo
RLC   A              Rotace obsahu akumulátoru a CY vlevo
RR    A              Rotace obsahu akumulátoru vpravo
RRC   A              Rotace obsahu akumulátoru a CY vpravo
SWAP  A              Vymění horní a dolní nibble obsahu akumulátoru

---------- Přesun dat ------------------------------
MOV   A,Rn           Přesun obsahu registru do akumulátoru
MOV   A,direct       Přesun obsahu adresy do akumulátoru
MOV   A,@Ri          Přesun obsahu nepřímé adresy do akumulátoru
MOV   A,#data        Přesun přímých dat do akumulátoru
MOV   Rn,A           Přesun obsahu akumulátoru do registru
MOV   Rn,direct      Přesun obsahu adresy do registru
MOV   Rn,#data       Přesun obsahu nepřímé adresy do registru
MOV   direct,A       Přesun obsahu akumulátoru na adresu
MOV   direct,Rn      Přesun obsahu registru na adresu
MOV   dirct1,dirct2  Přesun obsahu adresy na jinou adresu
MOV   direct,@Ri     Přesun obsahu nepřímé adresy na jinou adresu
MOV   direct,#data   Přesun přímých dat na adresu
MOV   @Ri,A          Přesun obsahu akumulátoru na nepřímou adresu
MOV   @Ri,direct     Přesun obsahu adresy na nepřímou adresu
MOV   @Ri,#data      Přesun přímých dat na nepřímou adresu
MOV   DPTR,#data16   Přesun 16-bitových dat do ukazatele dat
MOVC  A,@A+DPTR      Přesun kódového bajtu z adresy (A)+(DPTR)do akumulátoru
MOVC  A,@A+PC        Přesun kódového bajtu z adresy (A)+(PC) do akumulátoru
MOVX  A,@Ri          Přesun obsahu externí paměti do akumulátoru (8-bit addr)
MOVX  A,@DPTR        Přesun obsahu externí paměti do akumulátoru (16-bit addr)
MOVX  @Ri,A          Přesun obsahu akumulátoru do externí paměti (8-bit addr)
MOVX  @DPTR,A        Přesun obsahu akumulátoru do externí paměti (16-bit addr)
PUSH  direct         Uložení obsahu adresy na zásobník
POP   direct         Obnovení obsahu adresy ze zásobníku
XCH   A,Rn           Výměna obsahu akumulátoru s obsahem registru
XCH   A,direct       Výměna obsahu akumulátoru s obsahem adresy
XCH   A,@Ri          Výměna obsahu akumulátoru s obsahem nepřímé adresy
XCHD  A,@Ri          Výměna nižších nibblů mezi obsahem nepřímé adresy kumulátorem

---------- Booleovské instrukce ------------------------------
CLR   C              Vynuluje CY
CLR   bit            Vynuluje bit
SETB  C              Nastaví CY
SETB  bit            Nastaví bit
CPL   C              Neguje CY
CPL   bit            Neguje bit
ANL   C,bit          Logický součin CY s bitem
ANL   C,/bit         Logický součin CY s negací bitu
ORL   C,bit          Logický součet CY s bitem
ORL   C,/bit         Logický součin CY s negací bitu
MOV   C,bit          Přesun bitu do CY
MOV   bit,C          Přesun CY do bitu

---------- Větvení programu ------------------------------
ACALL addr11         Volání podprogramu uvnitř 2K stránky
LCALL addr16         Dlouhé volání podprogramu
RET                  Návrat z podprogramu
RETI                 Návrat z přerušení
AJMP  addr11         Skok uvnitř 2K stránky
LJMP  addr16         Dlouhý skok
SJMP  rel            Krátký skok (relativní adresa)
JMP   @A+DPTR        Skok na adresu určenou (DPTR)+(A)

---------- Podmíněné skoky ------------------------------
JC    rel            Skok při nastaveném CY
JNC   rel            Skok při nulovém CY
JB    bit,rel        Skok při nastaveném bitu
JNB   bit,rel        Skok při nulovém bitu
JBC   bit,rel        Skok a nulování při nastaveném bitu
JZ    rel            Skok při nulovém akumulátoru
JNZ   rel            Skok při nenulovém akumulátoru
CJNE  A,direct,rel   Skok při různém obsahu akumulátoru a adresy
CJNE  A,#data,rel    Skok při různém obsahu akumulátoru a přímých dat
CJNE  Rn,#data,rel   Skok při různém obsahu registru a přímých dat
CJNE  @Ri,#data,rel  Skok při různém obsahu nepřímé adresy a přímých dat
DJNZ  Rn,rel         Zmenší obsah registru a skočí, je-li <> 0
DJNZ  direct,rel     Zmenší obsah registru adresy a skočí, je-li <> 0

NOP                  Žádná operace