La instrucció goto ens permet saltar a una posició de memòria diferent i ens és útil en molts casos. Però sovint tenim un mateix conjunt d'instruccions que es repeteix en diversos punts del programa. En aquests casos seria convenient tenir-ho en un únic lloc i saltar-hi des de les diferents posicions però el problema és saber després on hem de tornar. Per aquests casos disposem de la instrucció call.
Quan fem call, saltem a la posició de memòria indicada però el punt des d'on saltem (de fet, la posició següent de la memòria de programa) es guarda. Quan hem acabat el tros del programa trobem la instrucció return que recupera l'adreça a partir de la que hem de continuar. Així, encara que tinguem diverses crides (call) sobre la mateixa adreça, el microcontrolador sap on ha de retornar quan acabi.

La parella d'instruccions call i return actúen com una crida a una funció. També podem guardar un valor a l'acumulador abans del call i es comportarà com una funció d'una variable. Per aconseguir que es comporti com una funció de diverses variables, caldrà guardar en algun lloc definit els valors corresponents.
Dins una d'aquestes subfuncions hi pot haver instruccions call a altres però cal tenir presents els límits. Quan hi ha un call, el processador guarda l'adreça de la instrucció següent en una zona especial de la memòria anomenada pila (stack). En el PIC 16F690 la pila té 8 posicions, per tant no és possible tenir encadenades més de 8 subfuncions. Quan tenim subfuncions encadenades, és molt important comptar quin és el cas més desfavorable. Aquesta mateixa pila es fa servir per a les interrupcions; o sigui que també cal tenir-les en compte en aquest càlcul.
Important: No es poden emprar indistintament les instruccions goto i call. La instrucció call és només per a saltar a una funció, de la qual sempre s'ha de retornar amb un return. En canvi, la instrucció goto és per a salts interns a la mateixa part del programa (ja sigui el programa principal, una funció o una funció d'interrupció).
En el cas següent el programa salta a l'adreça Subr i quan acaba la funció retorna a la posició Seguim.
... ; Tros de programa anterior al call call Subr ; Salta a la funció Seguim: ; Aquí és on anirà en executar el return ... ; Segueix el programa goto Bucle
; ; Inici de la funció ; Subr: ... ; Instruccions de la funció return ; Final de la funció

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