El PIC 16F690 incorpora instruccions que permeten sumar i restar directament números d'un byte (8 bits). Si hi ha risc que el resultat de la suma sigui més gran que 255 o que el de la resta sigui negatiu, caldrà gestionar els bits d'estat.
Quan els resultats puguin ser més grans que 255 caldrà fer operacions de més d'un byte. A continuació veurem com fer sumes i restes en les que el resultat ocupa dos bytes. Guardarem el resultat en dues posicions de memòria consecutives seguint l'estructura següent:

Sumem la variable Valor (1 byte) a la paraula Resul (2 bytes) i guardem el resultat a Resul.
Valor EQU 0x20 ; Valor que sumem Resul EQU 0x21 ; Variable en la que guardem el resultat (2 bytes)
... movf Valor,w ; Llegim a W la variable que hem de sumar addwf Resul,f ; L'afegim al byte de la dreta btfsc CARRY ; Mirem si s'activa C incf Resul+1,f ; Si s'activa, incrementem el byte superior ...
Restem la variable Valor (1 byte) de la paraula Resul (2 bytes) i guardem el resultat a Resul.
Valor EQU 0x20 ; Valor que restem (substrahend) Resul EQU 0x21 ; Variable en la que guardem el resultat (2 bytes)
... movf Valor,w ; Copia el valor assenyalat per FSR a W subwf Resul,f ; El resta de la suma total btfss CARRY ; S'ha activat C? decf Resul+1,f ; Si no s'ha activat, decrementem el byte superior ...
Sumem la variable Valor (2 bytes) a la paraula Resul (2 bytes) i guardem el resultat a Resul.
Valor EQU 0x20 ; Valor que sumem (2 bytes) Resul EQU 0x22 ; Variable en la que guardem el resultat (2 bytes)
... movf Valor,w ; Llegim a W la variable que hem de sumar addwf Resul,f ; L'afegim al byte de la dreta btfsc CARRY ; Mirem si s'activa C incf Resul+1,f ; Si s'activa, incrementem el byte superior movf Valor+1,w ; Llegim a W la variable que hem de sumar addwf Resul+1,f ; L'afegim al byte de la dreta ...
Restem la variable Valor (2 bytes) de la paraula Resul (2 bytes) i guardem el resultat a Resul. La funció suma Resul amb el negat de Valor.
Valor EQU 0x20 ; Valor que restem (2 bytes) Resul EQU 0x22 ; Variable en la que guardem el resultat (2 bytes)
... comf Valor,f ; Complementa Valor incf Valor,f ; I l'incrementa (el conjunt equival a canviar el signe) btfsc ZERO ; Mirem si s'activa Z decf Valor+1,f ; Si era zero cal decrementar Valor+1 comf Valor+1,f ; Complementem Valor+1 movf Valor,w ; Llegim a W la variable que hem de sumar addwf Resul,f ; L'afegim al byte de la dreta btfsc CARRY ; Mirem si s'activa C incf Resul+1,f ; Si s'activa, incrementem el byte superior movf Valor+1,w ; Llegim a W la variable que hem de sumar addwf Resul+1,f ; L'afegim al byte de la dreta ...

Aquesta obra d'Oriol Boix està llicenciada sota una llicència no importada Reconeixement-NoComercial-SenseObraDerivada 3.0.