Instructions "Add" "Sub"

Add W,Reg [C,D,Z] Add Reg,W [C,D,Z]
Sub W,Reg,W [C,D,Z] Sub Reg [C,D,Z]
Sub W,#Val,W [C,D,Z] Add #Val,W [C,D,Z]


Selon l'habitude de Motorola, la soustraction A-B s'écrit Sub B,A. Le résultat est en général dans A, mais il pourrait être dans un autre registre C et on écrirait Sub B,A,C
Le PIC a une particularité inhabituelle lorque l'on veut soustraire un valeur immédiate. L'instruction Sub #Valeur,A (on prend le contenu de A, on soustrait la valeur et on met le résultat dans A) qui existe sur tous les autres processeurs est remplacée par un Sub W,#Valeur,W. La notation Calm est dans ce cas très explicite et évite des erreurs ultérieures : On prend la valeur, on soustrait le contenu de W et on met le résultat dans W. On obtient le complément à 2 de l'instruction Sub #Valeur,w, que l'on peut générer par un Add #-Valeur,W.
Deux instructions de soustraction avec une variable existent : Sub W,Variable,W et Sub W,Variable. Dans les deux cas, on soustrait W de la variable et on place le résultat dans W (premier cas) ou dans la variable (second cas correspondant à tous les autres processeurs où l'on n'a jamais jugé nécessaire d'écrire Sub W,Variable,Variable
La soustraction est effectuée comme une addition du complément. La valeur finale du Carry est donc inversée par rapport aux autres processeurs.