| W : le registre =W. — Nbre : une constante. — Registre,Reg1,Reg2 : des adresses en RAM |
| W = 0 | CLRW | ||
| Registre = 0 | CLRF Registre | ||
| W = Nbre | MOVLW Nbre | ||
| Registre = Nbre | W = Nbre Registre = W |
MOVLW Nbre MOVWF Registre |
|
| Registre = W | MOVWF Registre | ||
| W = Registre | MOVF Registre,W | ||
| Reg1 = Reg2 | W = Reg2 Reg1 = W |
MOVF Reg2,W MOVWF Reg1 |
|
| Addition | |||
| W = W + 1 | ADDLW 1 | ||
| Registre = W + 1 | W = W + 1 Registre = W |
ADDLW 1 MOVWF Registre |
|
| W = Registre + 1 | INCF Registre,W | ||
| Registre = Registre + 1 | INCF Registre,F | ||
| W = W + Nbre | ADDLW Nbre | ||
| Registre = W + Nbre | W = W + Nbre Registre = W |
ADDLW Nbre MOVWF Registre |
|
| W = Registre + Nbre | W = Nbre W = W + Registre |
MOVLW Nbre ADDWF Registre,W |
|
| Registre = Registre + Nbre | W = Nbre Registre = W + Registre |
MOVLW Nbre ADDWF Registre,F |
|
| W = W + Registre | ADDWF Registre,W | ||
| Registre = W + Registre | ADDWF Registre,F | ||
| W = Reg1 + Reg2 | W = Reg2 W = W + Reg1 |
MOVF Reg2,W ADDWF Reg1,W |
|
| Reg1 = Reg1 + Reg2 | W = Reg2 Reg1 = W + Reg1 |
MOVF Reg2,W ADDWF Reg1,F |
|
| Soustraction | |||
| W = -W | SUBLW 0 | ||
| Registre = -W | W = -W Registre = W |
SUBLW 0 MOVWF Registre |
|
| W = -Registre | W = Registre W = -W |
MOVF Registre,W SUBLW 0 |
|
| Reg1 = -Reg2 | W = Reg2 W = -W Reg1 = W |
MOVF Reg2,W SUBLW 0 MOVWF Reg1 |
|
| W = W-1 | W = W + (-1) | ADDLW 0xFF | |
| Registre = W-1 | W = W + (-1) Registre = W |
ADDLW 0xFF MOVWF Registre |
|
| W = Registre-1 | DECF Registre,W | ||
| Registre = Registre-1 | DECF Registre,F | ||
| W = W-Nbre | W = W + (-Nbre) | ADDLW -Nbre | |
| Registre = W-Nbre | W = W + (-Nbre) Registre = W |
ADDLW -Nbre MOVWF Registre |
|
| W = Nbre-W | SUBLW Nbre | ||
| Registre = Nbre-W | W = Nbre-W Registre = W |
SUBLW Nbre MOVWF Registre |
|
| W = Registre-Nbre | W = Nbre W = Registre-W |
MOVLW Nbre SUBWF Registre,W |
|
| Registre = Registre-Nbre | W = Nbre Registre = Registre-W |
MOVLW Nbre SUBWF Registre,F |
|
| W = Nbre-Registre | W = Registre W = Nbre-W |
MOVF Registre,W SUBLW Nbre |
|
| Registre = Nbre-Registre | W = Registre W = Nbre-W Registre = W |
MOVF Registre,W SUBLW Nbre MOVWF Registre |
|
| W = W-Registre | W = Registre-W W = -W |
SUBWF Registre,W SUBLW 0 |
|
| Registre = W-Registre | W = Registre-W W = -W Registre = W |
SUBWF Registre,W SUBLW 0 MOVWF Registre |
|
| W = Registre-W | SUBWF Registre,W | ||
| Registre = Registre-W | SUBWF Registre,F | ||
| W = Reg1-Reg2 | W = Reg2 W = Reg1-W |
MOVF Reg2,W SUBWF Reg1,W |
|
| Reg1 = Reg1-Reg2 | W = Reg2 Reg1 = Reg1-W |
MOVF Reg2,W SUBWF Reg1,F |
|
| Reg2 = Reg1-Reg2 | W = Reg2 W = Reg1-W Reg2 = W |
MOVF Reg2,W SUBWF Reg1,W MOVWF Reg2 |
|
| Opération Logique OU ( OR ) | |||
| W = W OU Nbre | IORLW Nbre | Table
de vérité fonction OU: Permet en autre de passer des bits à 1. |
|
| Registre = W OU Nbre | W = W OU Nbre Registre = W |
IORLW Nbre MOVWF Registre |
|
| W = Registre OU Nbre | W = Registre W = W OU Nbre |
MOVF Registre,W IORLW Nbre |
|
| Registre = Registre OU Nbre | W = Nbre Registre = Registre OU W |
MOVLW Nbre IORWF Registre,F |
|
| W = W OU Registre | IORWF Registre,W | ||
| Registre = W OU Registre | IORWF Registre,F | ||
| W = Reg1 OU Reg2 | W = Reg2 W = W OU Reg1 |
MOVF Reg2,W IORWF Reg1,W |
|
| Reg1 = Reg1 OU Reg2 | W = Reg2 Reg1 = W OU Reg1 |
MOVF Reg2,W IORWF Reg1,F |
|
| Opération Logique ET ( AND ) | |||
| W = W ET Nbre | ANDLW Nbre | Table
de vérité fonction ET: Permet en autre de passer des bits à 0. |
|
| Registre = W ET Nbre | W = W ET Nbre Registre = W |
ANDLW Nbre MOVWF Registre |
|
| W = Registre ET Nbre | W = Registre W = W ET Nbre |
MOVF Registre,W ANDLW Nbre |
|
| Registre = Registre ET Nbre | W = Nbre Registre = Registre ET W |
MOVLW Nbre ANDWF Registre,F |
|
| W = W ET Registre | ANDWF Registre,W | ||
| Registre = W ET Registre | ANDWF Registre,F | ||
| W = Reg1 ET Reg2 | W = Reg2 W = W ET Reg1 |
MOVF Reg2,W ANDWF Reg1,W |
|
| Reg1 = Reg1 ET Reg2 | W = Reg2 Reg1 = W ET Reg1 |
MOVF Reg2,W ANDWF Reg1,F |
|
| Opération Logique OU-Exclusif ( XOR ) | |||
| W = W XOR Nbre | XORLW Nbre | Table
de vérité fonction XOR: Permet en autre de permuter des bits. |
|
| Registre = W XOR Nbre | W = W XOR Nbre Registre = W |
XORLW Nbre MOVWF Registre |
|
| W = Registre XOR Nbre | W = Registre W = W XOR Nbre |
MOVF Registre,W XORLW Nbre |
|
| Registre = Registre XOR Nbre | W = Nbre Registre = Registre XOR W |
MOVLW Nbre XORWF Registre,F |
|
| W = W XOR Registre | XORWF Registre,W | ||
| Registre = W XOR Registre | XORWF Registre,F | ||
| W = Reg1 XOR Reg2 | W = Reg2 W = W XOR Reg1 |
MOVF Reg2,W XORWF Reg1,W |
|
| Reg1 = Reg1 XOR Reg2 | W = Reg2 Reg1 = W XOR Reg1 |
MOVF Reg2,W XORWF Reg1,F |
|
| Opération Logique NON (NOT ) | |||
| W = NOT W | XORLW 0xFF | Table
de vérité fonction NOT: Permet de permuter tous les bits. |
|
| Registre = NOT W | W = NOT W Registre = W |
XORLW 0xFF MOVWF Registre |
|
| W = NOT Registre | COMF Registre,W | ||
| Registre = NOT Registre | COMF Registre,F | ||
| Reg1 = NOT Reg2 | W = NOT Reg2 Reg1 = W |
COMF Registre,W MOVWF Reg1 |
|
| Affectation de bits avec b le numéro du bit de 0 à 7 | |||
| W(b) = 0 | ANDLW B'11111111' avec le bit b à 0 |
Si vous avez plusieurs bits à modifier, il est préférable d'utiliser la fonction OU ou ET. | |
| Registre(b) = 0 | BCF Registre,b | ||
| W(b) = 1 | IORLW B'00000000' avec le bit b à 1 |
||
| Registre(b) = 1 | BSF Registre,b | ||
| Saut | |||
| Saut vers Label | GOTO Label | ||
| Appel de la fonction Label | CALL Label | ||
| Retour d'une fonction | RETURN | ||
| Retour d'une fonction avec résultat | W = Nbre RETURN |
RETLW Nbre | |
| Saut conditionnel | |||
| Remarque : Pour simplifier le tableau, lorsque la condition est vraie, on exécute un saut ( GOTO ) mais vous pouvez le remplacer par un appel à une fonction ( CALL ) ou par une ligne de code et une seule. | |||
| si Registre(b) = 1 goto Label | BTFSC Registre,b GOTO Label |
||
| si Registre(b) = 0 goto Label | BTFSS Registre,b GOTO Label |
||
| Registre = Registre-1 si Registre <> 0 goto Label |
DECFSZ Registre,F GOTO Label |
||
| W = Registre-1 si W <> 0 goto Label |
DECFSZ Registre,W GOTO Label |
||
| Registre = Registre + 1 si Registre <> 256 goto Label |
INCFSZ Registre,F GOTO Label |
||
| W = Registre + 1 si Registre <> 256 goto Label |
INCFSZ Registre,W GOTO Label |
||
| Res représente le résultat de la dernière instruction. | |||
| si Res = 0 goto Label | BTFSC STATUS,Z GOTO Label |
||
| si Res <> 0 goto Label | BTFSS STATUS,Z GOTO Label |
||
| Après les instructions SUBWF ou SUBLW, vous pouvez tester : | |||
| si Res < 0 goto Label | BTFSS STATUS,C GOTO Label |
||
| si Res >= 0 goto Label | BTFSC STATUS,C GOTO Label |
||
| Après les instructions ADDWF ou ADDLW, vous pouvez tester : | |||
| si Res > 255 goto Label | BTFSC STATUS,C GOTO Label |
||
| si Res <= 255 goto Label | BTFSS STATUS,C GOTO Label |
||
| Autres cas courants ( Pour faire le saut lorsque la condition est fausse : remplacer BTFSC par BTFSS ) | |||
| si W = 0 goto Label | W = W + 0 si Res = 0 goto Label |
ADDLW 0 BTFSC STATUS,Z GOTO Label |
|
| si Registre = 0 goto Label | W = Registre si Res = 0 goto Label |
MOVF Registre,W BTFSC STATUS,Z GOTO Label |
|
| si W = Nbre goto Label | W = Nbre - W si Res = 0 goto Label |
SUBLW Nbre BTFSC STATUS,Z GOTO Label |
|
| si Registre = Nbre goto Label | W = Nbre W = Registre - W si Res = 0 goto Label |
MOVLW Nbre SUBWF Registre,W BTFSC STATUS,Z GOTO Label |
|
| si W = Registre goto Label | W = Registre - W si Res = 0 goto Label |
SUBWF Registre,W BTFSC STATUS,Z GOTO Label |
|
| si Reg1 = Reg2 goto Label | W = Reg2 W = Reg1 - W si Res = 0 goto Label |
MOVF Reg2,W SUBWF Reg1,W BTFSC STATUS,Z GOTO Label |
|
| si Registre < 0 goto Label | BTFSC Registre,7 GOTO Label |
||
| si Registre >= 128 goto Label | BTFSC Registre,7 GOTO Label |
||
| si W <= Nbre goto Label | W = Nbre - W si Res >= 0 goto Label |
SUBLW Nbre BTFSC STATUS,C GOTO Label |
|
| si Registre >= Nbre goto Label | W = Nbre W = Registre - W si Res >= 0 goto Label |
MOVLW Nbre SUBWF Registre,W BTFSC STATUS,C GOTO Label |
|
| si W <= Registre goto Label | W = Registre - W si Res >= 0 goto Label |
SUBWF Registre,W BTFSC STATUS,C GOTO Label |
|
| si Reg1 >= Reg2 goto Label | W = Reg2 W = Reg1 - W si Res >= 0 goto Label |
MOVF Reg2,W SUBWF Reg1,W BTFSC STATUS,C GOTO Label |
|
| Rotation droite avec retenue | RLF Registre,W ou RLF Registre,F |
||
| Rotation gauche avec retenue | RRF Registre,W ou RRF Registre,F |
||
| Pas d'action | NOP | ||
| Permutation | SWAPF Registre,W ou SWAPF Registre,F |
||
| Clear Watchdog | CLRWDT | ||
| Mode sleep | SLEEP | ||