Seznam instrukci ­ 8051, 8751, 8031

 

ADD A,R0-7 ADDC A,R0-7 SUBB A,R0-7

ADD A,@R0-1 ADDC A,@R0-1 SUBB A,@R0-1

ADD A,# data ADDC A,#data SUBB A,#data

ADD A,dataadr ADDC A,dataadr SUBB A, dataadr

ANL A,R0-7 ORL A,R0-7 XRL A,R0-7

ANL A,@R0-1 ORL A,@R0-1 XRL A,@R0-1

ANL A,# data ORL A,# data XRL A,# data

ANL A,dataadr ORL A,dataadr XRL A,dataadr

ANL dataadr,#data ORL dataadr,#data XRL dataadr,#data

ANL dataadr,A ORL dataadr,A XRL dataadr,A

---------------------------------------------------------

CLR A CPL A DA A (C=1 je-li [A]>99)

---------------------------------------------------------

INC A DEC A

INC R0-7 DEC R0-7

INC @R0-1 DEC @R0-1

INC dataadr DEC dataadr

INC DPTR

---------------------------------------------------------

CLR C (C<--0) SETB C (C<--1) CPL C

CLR bitadr SETB bitadr CPL bitadr

ANL C,bitadr ORL C,bitadr

ANL C,/bitadr ORL C,/bitadr

MOV C,bitadr MOV bitadr,C

---------------------------------------------------------

MOV A,R0-7 MOV R0-7,A MOV A,#data

MOV A,@R0-1 MOV @R0-1,A MOV R0-7,#data

MOV A,dataadr MOV dataadr,A MOV @R0-1,#data

MOV dataadr,@R0-1 MOV @R0-1,dataadr MOV dataadr,#data

MOV dataadr,R0-7 MOV R0-7,datadr MOV dataadr1, datadr2

MOV DPTR,#data16

MOVC A,@A+PC (A <-- A+PC+1 z ROM)

MOVC A,@A+DPTR (A <-- A+DPTR z ROM)

MOVX A,@R0-1 MOVX A,@DPTR

MOVX @R0-1,A MOVX @DPTR,A

---------------------------------------------------------

XCH A,R0-7 XCHD A,@R0-1 (jen D3...D0)

XCH A,@R0-1 XCH A,dataadr

---------------------------------------------------------

RL A RR A

RLC A RRC A

SWAP A (D7...D4 <---> D3...D0)

---------------------------------------------------------

MUL AB (BA <-- A*B, čísla bez znam., B=High, A=Low) (C=0)

DIV AB ( A <-- A/B, B <-- zbytek, čísla bez znam.) (C=0)

---------------------------------------------------------

ACALL adr11 (v rĂĄmci strĂĄnky 2K)

LCALL adr16 (v råmci plných 64K)

---------------------------------------------------------

RET neobnovuje PSW

RETI (povoluje INT. stejné či nižší prior.) " "

---------------------------------------------------------

PUSH dataadr POP dataadr

---------------------------------------------------------

AJMP adr11 (v rĂĄmci strĂĄnky 2K)

LJMP adr16 (v råmci plných 64K)

SJMP adr8 (adr. relativnĂ­)

JMP @A+DPTR (PC <-- A+DPTR)

---------------------------------------------------------

Adresy vĹždy relativnĂ­:

DJNZ R0-7,adr8 (DCR reg , jump if reg >0)

DJNZ dataadr,adr8 (DCR data, jump if data>0)

JC adr8 (jump if C=1)

JNC adr8 (jump if C!=1)

JZ adr8 (jump if A=0)

JNZ adr8 (jump if A!=0)

JB bitadr,adr8 (jump if bit=1)

JBC bitadr,adr8 (současně vynuluje bit)

JNB bitadr,adr8 (jump if bit=0)

CJNE @R0-1,#data,adr8 (jump if operand1!=operand2)| C=1 je-li

CJNE R0-7,#data,adr8 " | 1. operand

CJNE A,#data,adr8 " | < 2. operand

CJNE A,dataadr,adr8 " | "

---------------------------------------------------------

NOP

---------------------------------------------------------

Speciální funkční registry (SFR) lze adresovat jen přímo, jako "dataadr". Všechny instrukce pro práci s daty platí i pro spec. registry; proto nejsou instrukce pro vstup/výstup dat, pro SP, atd. U některých SFR lze adresovat jednotlivé bity.

"dataadr"- adr. ve vnitřní RAM i SFR, tj. 0-255.

"bitadr" - číslo bitu 0-7 ve slově (lze jen na adresách 32-47 RAM a 128-255 pro SFR).

- číslo bitu 0-127 v bitovém poli (sem se mapují za sebou bity z výše uvedených oblastí RAM a některých SFR).

ACC (E0H) akumulĂĄtor IE (A8H) povolovĂĄnĂ­ interruptĹŻ

PSW (D0H) stavovĂŠ slovo IP (B8H) priorita interrruptĹŻ

B (F0H) reg. B SBUF (99H) data pro sĂŠriovĂ˝ kanĂĄl

DPH (83H) adr. ext. RAM (H) SCON (98H) řízení sériového kanálu

DPL (82H) - " - (L) TCON (88H) řízení čítačů/časovačů

SP (81H) ukazatel zásobníku TH0 (8CH) data pro čít/čas 0 (H)

P0 (80) brĂĄna 0 TH1 (8DH) " " " 1 (H)

P1 (90H) " 1 TL0 (8AH) " " " 0 (L)

P2 (A0H) " 2 TL1 (8BH) " " " 1 (L)

P3 (B0H) " 3 TMOD (89H) mód čítačů/časovačů

┌───┬───┬───┬───┬───┬───┬───┬───┐

PSW: │ C │AC │F0 │RS1│RS0│ - │OV │ P │

└───┴───┴───┴───┴───┴───┴───┴───┘

přenos ................| | | | | | |

pom. přenos ..............| | | | | |

bit pro vĹĄeob. pouĹžitĂ­ ......| | | | |

volba reg. banku ................|..| | |

přetečení ................................| |

parita obsahu A .............................|

C = 1...jestliže operace vyvolala přenos z 8. bitu.

OV =1...je-li přenos ze 7. do 8. bitu a není z 8. bitu, nebo není-li přenos ze 7. do 8. bitu a je z 8. bitu.

u MUL: OV=0 je-li B=0, jinak je 1.

u DIV: OV=1 při dělení nulou, jinak je 0.

P =1....při liché paritě obsahu akumulátoru, 0 při sudé.

Registry R0-R7 tvoří 4 skupiny (bank), přepínané pomocí 2 bitů PSW, příslušné adresy ve vnitřní RAM: 0-7, 8-15, 16-23, 24-31.

Zásobník se po RESET nastavuje do pozice 7, první zápis je na pozici 8 (postupuje nahoru). Lze přestavit zásahem do SFR "SP".