Instrukce
Mikroprocesor 8051 se programuje jazykem symbolických instrukcí (assembler).
Existuje několik typů instrukcí - instrukce pro přesun dat, instrukce pro aritmetické operace,
instrukce pro logické operace, instrukce pro posuny, instrukce pro bitové operace a instrukce pro skoky.
Instrukce pro přesuny
| MOV | A,¶ | (A) <- (¶) |
| MOV | Rx,¶ | (Rx) <- (¶) |
| MOV | a8,¶ | (a8) <- (¶) |
| MOV | @Rr, ,¶ | ((Rr)) <- (¶) |
| MOV | DPTR,#d16 | (DPTR) <- d16 |
| MOVC | A,@A+¶ | (A) <- ((A)+(DPTR))c |
| MOVC | A,@A+PC | (A) <- ((A)+(PC))c |
| MOVX | A, ¶ | (A) <- ((¶))x |
| MOVX | ¶,A | ((¶))x <- (A) |
| PUSH | a8 | zásobník <- (a8) |
| POP | a8 | (a8) <- zásobník |
| XCH | A, ¶ | (A) <-> (¶) |
| XCHD | A, ¶ | (A3–0) <-> (¶3–0) |
Instrukce pro aritmetické operace
| INC | ¶ | (¶) <- (¶) +1 |
| INC | ¶ | (¶) <- (¶) +1 |
| DEC | ¶ | (¶) <- (¶) –1 |
| ADD | A, ¶ | (A) <- (A)+(¶) |
| ADDC | A, ¶ | (A) <- (A)+(C)+(¶) |
| DA | A | dekad. korekce po + |
| SUBB | A, ¶ | (A) <- (A)–(C)–(¶) |
| MUL | AB | (A),(B) <- (A) * (B) |
| DIV | AB | (A),(B) <- (A) / (B) |
Instrukce pro logické operace
| ANL | A, ¶ | (A) <- (A) AND (¶) |
| ANL | A, ¶ | (A) <- (A) AND (¶) |
| ORL | A, ¶ | (A) <- (A) OR (¶) |
| ORL | a8, ¶ | (a8) <- (a8) OR (¶) |
| ORL | a8, ¶ | (a8) <- (a8) OR (¶) |
| XRL | A, ¶ | (A) <- (A) XOR (¶) |
| XRL | a8, ¶ | (a8) <- (a8) XOR (¶) |
| CLR | A | (A) <- (0) |
| CPL | A | (A) <- NOT (A) |
Instrukce pro posuny
| RL | rotace vlevo |
| RLC | rotace vlevo přes C |
| RR | rotace vpravo |
| RRC | rotace vpravo přes C |
| SWAP | (A0–3) <-> (A4–7) |
Instrukce pro bitové operace
| CLR | ¶ | (¶) <- 0 |
| SETB | ¶ | (¶) <- 1 |
| CPL | ¶ | (¶) <- NOT (¶) |
| ANL | C, ¶ | (C) <- (C) AND (¶) |
| ORL | C, ¶ | (C) <- (C) OR (¶) |
| MOV | C,b8 | (C) <- (b8) |
Instrukce pro skoky
ACALL - Absolute Call - volání podprogramu
LCALL - Long Call - instrukce pro nepodmíněné volání podprogramu
RET - návrat z podprogramu
RETI - návrat z přerušení
AJMP - Absolute Jump - krátký nepodmíněný skok
LJMP - Long Jump - nepodmíněný skok
SJMP - Short Jump - krátký nepodmíněný skok
JMP - Jump to Address - nepřímý nepodmíněný skok
JB - Jump if Bit Set
JC - Jump if Carry Set
JZ - Jump if Accumulator Zero
JNB - Jump if Bit Not Set
JNC - Jump if Carry Not Set
JNZ - Jump if Accumulator Not Zero
CJNE - Compare and Jump if Not Equal
DJNZ - Decrement register and Jump if Not Zero
Registry a adresy - vysvětlivky
| A | střadač |
| Rx | registr R0?R7 |
| @Rr | nepřímá adresa v R0, R1 |
| a8 | přímá adresa |
| d8, d16 | bezprostřední data (8, 16 bitů) |
| r8 | relativní adresa |
| b8 | bitová adresa |
| (/b8) | negovaný obsah buňky na adrese b8 |
| 1/1 | počet slabik/cyklů |
| c | paměť programu |
| x | externí paměť dat |
| * | ovlivňuje, je-li operandem |
| {SP} | ukládání do (SP+1) a (SP+2), vybírání z (SP) a (SP-1) |