Alle STM8 Assembler Befehle
| Funktion | Mnemonic | Beispiel | OP-Code | |
|---|---|---|---|---|
| Add with Carry | ADC | ADC A,($12,SP) | 19 bb | |
| Add without Carry | ADD | ADD A,($12,SP) | 1B bb | |
| Add without Carry to Stackpointer | ADD | ADD SP,#$12 | 5B ii | Add word without Carry | ADW | ADDW X,($12,SP) | 72 FB bb |
| Logical AND | AND | AND A,($12,SP) | 14 bb | |
| Copy carry in memory bit | BCCM | BCCM $1234,#1 | 90 fn ww bb n=11 + 2*bit | |
| Logical bit compare | BCP | BCP A,($12,SP) | 15 bb | |
| Complement bit in memory | BCPL | BCPL $1234,#1 | 90 fn ww bb n=10 + 2*bit | |
| Bit reset | BRES | BRES $1234,#1 | 72 fn ww bb n=11 + 2*bit | |
| Bit set | BSET | BSET $1234,#1 | 72 fn ww bb n=10 + 2*bit | |
| Bit Test, relative Jump if false | BTJF | BTJF $1234,#1,label | 72 0n ww bb n=01 + 2*bit | |
| Bit Test, relative Jump if true | BTJT | BTJT $1234,#1,label | 72 0n ww bb n=00 + 2*bit | |
| Call Subroutine, short | CALL | CALL [$1234.w] | 72 CD ww bb | |
| Call Subroutine, far | CALLF | CALLF $123456 | 8D ee ww bb | |
| Call Subroutine, relative | CALLR | CALLR label | 92 AD bb | |
| Complement carry flag | CCF | CCF | 8F | |
| Clear destination byte | CLR | CLR ([$1234.w],X) | 72 fn ww bb n=11 + 2*bit | |
| Clear destination index register | CLRW | CLRW X | 5F | |
| Compare | CP | CP A,($12,SP) | 11 bb | |
| Compare word | CPW | CPW X,($12,SP) | 13 bb | |
| Logical 1's complement | CPL | CPL ([$1234.w],X) | 72 63 ww bb | |
| Logical 1's complement X | CPLW | CPLW X | 53 | |
| Decrement by one | DEC | DEC ([$1234.w],X) | 72 6A ww bb | |
| Decrement Word in X | DECW | DECW X | 5A | |
| Divide, unsigned X by A | DIV | DIV X,A | 62 | |
| Divide, unsigned Y by A | DIV | DIV Y,A | 90 62 | |
| Divide, unsigned X by Y | DIVW | DIVW X,Y | 65 | |
| Exchange Databyte A to Mem | EXG | EXG A,$1234 | 31 ww bb | |
| Exchange Databyte A to X_low | EXG | EXG A,XL | 41 | |
| Exchange Databyte A to Y_low | EXG | EXG A,YL | 61 | |
| Halt oscillator | HALT | HALT | 8E | |
| Increment by one | INC | INC ([$1234.w],X) | 72 6C ww bb | |
| Increment word by one | INCW | INCW X | 5C | |
| Interrupt Return | IRET | IRET | 80 | |
| Jump to Section "0" | JP | JP ([$1234.w],X) | 72 DC ww bb | |
| Jump far | JPF | JPF $123456 | AC ee ww bb | |
| Jump relative | JRA | JRA label | 20 bb | |
| Jump relative if CARRY | JRC | JRC label | 25 bb | |
| Jump relative if EQUAL | JREQ | JREQ label | 27 bb | |
| Jump never | JRF | JRF label | 21 bb | |
| Jump relative if H=1 | JRH | JRH label | 29 bb | |
| Jump relative if PortINT pin = 1 | JRIH | JRIH label | 90 2F bb | |
| Jump relative if PortINT pin = 0 | JRIL | JRIL label | 90 2E bb | |
| Jump relative if Interrupts masked | JRM | JRM label | 2D bb | |
| Jump relative if MINUS | JRMI | JRMI label | 2B bb | |
| Jump relative if NOT CARRY | JRNC | JRNC label | 24 bb | |
| Jump relative if NOT EQUAL | JRNE | JRNE label | 26 bb | |
| Jump relative if H = 0 | JRNH | JRNH label | 90 28 bb | |
| Jump relative if Interrupts NOT masked | JRNM | JRNM label | 90 2C bb | |
| Jump relative if NO OVERFLOW (V = 0) | JRNV | JRNV label | 28 bb | |
| Jump relative if POSITIVE (n=0) | JRPL | JRPL label | 2A bb | |
| Jump relative if N Xor V = 0 | JRSGE | JRSGE label | 2E bb | |
| Jump relative if Z Or (N Xor V) = 0 | JRSGT | JRSGT label | 2C bb | |
| Jump relative if Z Or (N Xor V) = 1 | JRSLE | JRSLE label | 2D bb | |
| Jump relative if N Xor V = 1 | JRSLT | JRSLT label | 2F bb | |
| Jump relative | JRT | JRT label | 20 bb | |
| Jump relative if NOT CARRY | JRUGE | JRUGE label | 24 bb | |
| Jump relative if C + Z = 0 | JRUGT | JRUGT label | 22 bb | |
| Jump relative if C + Z = 1 | JRULE | JRULE label | 23 bb | |
| Jump relative if CARRY | JRULT | JRULT label | 25 bb | |
| Jump relative if V = 1 | JRV | JRV label | 29 bb | |
| Load Register "A" | LD | LD A,($12,SP) | 7B bb | |
| Load Memory | LD | LD ($12,SP), A | 68 bb | |
| Load Register "A" with XH | LD | LD A,XH | 95 | |
| Load far, Register "A" indexed by X+Offset | LDF | LDF A,($123456,X) | AF ee ww bb | |
| Load far, Register "A" indexed by Y+Offset | LDF | LDF A,($123456,Y) | 90 AF ee ww bb | |
| Load far, Register "A" from X+[longptr] | LDF | LDF A,([$1234.e],X) | 72 AF ww bb | |
| Load far, Memory indexed by X+Offset | LDF | LDF ($123456,X),A | A7 ee ww bb | |
| Load far, Memory indexed by Y+Offset | LDF | LDF ($123456,Y),A | 90 A7 ee ww bb | |
| Load far, Memory indexed by Y+[longptr] | LDF | LDF ([$1234.e],X),A | 72 A7 ww bb | |
| Load word to X Register | LDW | LDW X,($12,SP) | 72 EE bb | |
| Load word to Memory from X Register | LDW | LDW ($12,SP),X | 72 EF bb | |
| Load Y Register with word | LDW | LDW Y,($12,SP) | 72 E6 bb | |
| Load word to Memory from Y Register | LDW | LDW ($12,SP),Y | 72 E7 bb | |
| Load word to Stackpointer from X Register | LDW | LDW SP,X | 8B | |
| Load word to X Register from Stackpointer | LDW | LDW X,SP | 96 | |
| Load word to X Register from Y Register | LDW | LDW X,Y | 93 | |
| Move immediate Data to Memory | MOV | MOV $1234,#$12 | 35 ii ww bb | |
| Move Mem2 to Mem1 | MOV | MOV $12 $34 | 45 bb2 bb1 | |
| Move Word Mem2 to Mem1 | MOV | MOV $1234 $5678 | 45 ww2 bb2 ww1 bb1 | |
| Multiply A by X | MUL | MUL | 42 | |
| Multiply A by Y | MUL | MUL | 90 42 | |
| Negate - Logical 2's Complement | NEG | NEG ([$1234.w],X) | 72 60 ww bb ???? | |
| Negate Word - Logical 2's Complement | NEGW | NEGW X | 50 | |
| No Operation | NOP | NOP | 9D | |
| Logical OR | OR | OR A,($12,SP) | 1A bb | |
| POP Byte from Stack | POP | POP $1234 | 32 ww bb | |
| POP Code Condition Register from Stack | POP | POP CC | 86 | |
| POP Word (X) from Stack | POPW | POPW X | 85 | |
| PUSH Byte onto Stack | PUSH | PUSH $1234 | 7B ww bb | |
| PUSH immediate Byte onto Stack | PUSH | PUSH #$12 | 4B bb | |
| PUSH Word (X) onto Stack | PUSHW | PUSHW X | 89 | |
| Reset CARRY Flag | RCF | RCF | 98 | |
| Return from Subroutine in Section 0 | RET | RET | 81 | |
| Return Far from Subroutine | RETF | RETF | 87 | |
| Reset Interrupt Mask / Enable Interrupt | RIM | RIM | 9A | |
| Rotate Byte in X, Left through CARRY | RLC | RLC ([$1234.w],X) | 72 69 ww bb | |
| Rotate Word in X, Left through CARRY | RLCW | RLCW X | 59 | |
| Rotate Word in X, Left through ACCUMULATOR | RLWA | RLWA X | 02 | |
| Rotate Byte in X, Right through CARRY | RRC | RRC ([$1234.w],X) | 72 66 ww bb | |
| Rotate Word in X, Right through CARRY | RRCW | RRCW X ???? | 56 | |
| Rotate Word in X, Right through ACCUMULATOR | RRWA | RRWA X | 01 | |
| Reset OVERFLOW Flag (V) | RVF | RVF | 9C | |
| Subtract with CARRY | SBC | SBC A,($12,SP) | 12 bb | |
| Set CARRY Flag (C) | SCF | SCF | 99 | |
| Set Interrupt Mask / Disable Interrupts | SIM | SIM | 9B | |
| Shift Byte in X, Left Arithmetic | SLA | SLA ([$1234.w],X) | 72 68 ww bb | |
| Shift Word in X, Left Arithmetic | SLAW | SLAW X | 58 | |
| Shift Byte in X, Left Logical | SLL | SLL ([$1234.w],X) | 72 68 ww bb ???? | |
| Shift Word in X, Left Logical | SLLW | SLLW X | 58 ???? | |
| Shift Byte in X, Right Arithmetic | SRA | SRA ([$1234.w],X) | 72 67 ww bb | |
| Shift Word in X, Right Arithmetic | SRAW | SRAW X | 57 | |
| Shift Byte in X, Right Logical | SRL | SRL ([$1234.w],X) | 72 64 ww bb | |
| Shift Word in X, Right Logical | SRLW | SRLW X | 57 | |
| Subtract A without CARRY | SUB | SUB A,($12,SP) | 10 bb | |
| Subtract SP without CARRY | SUB | SUB SP,#$12 | 52 ii | |
| Subtract word without CARRY | SUBW | SUBW X,($12,SP) | 72 F0 bb | |
| Swap nibbles | SWAP | SWAP ([$1234.w],X) | 72 6E ww bb | |
| Swap bytes | SWAPW | SWAPW X | 5E | |
| Test NEGATIVE or ZERO | TNZ | TNZ ([$1234.w],X) | 72 6D ww bb | |
| Test word for NEGATIVE or ZERO | TNZW | TNZW X | 5D | |
| Trap Software Interrupt | TRAP | TRAP | 83 | |
| Wait for Event | WFE | WFE | 72 8F | |
| Wait for Interrupt | WFI | WFI | 8F | |
| Logical XOr | XOR | XOR | 18 bb |