En assemblador cada instrucció es representa amb el seu mnemònic.
Normalment també donem noms a les variables per no haver d'anar posant les seves adreces. De la mateixa manera, podem posar etiquetes per indicar posicions de programa i així fer els salts sense haver d'anar calculant l'adreça que els correspon. Addicionalment, podem afegir comentaris per deixar clar què fa cada instrucció o tros de programa.
Els valors els introduïm en el format que ens vagi millor (binari, decimal, etc.). El programari compilador s'encarregarà de traduir mnemònics, adreces, variables i valors al codi màquina corresponent.
A continuació tenim un tros de programa en el que es comenten els principals elements:

Hi ha alguns altres elements que també han d'estar en un programa complet. Anem a veure-ho a partir del programa següent.
#include <p16F690.inc> __config (_INTRC_OSC_NOCLKOUT&_WDT_OFF&_PWRTE_OFF&_MCLRE_OFF&_CP_OFF&_BOR_OFF&_IESO_OFF&_FCMEN_OFF)
cblock 0x20 Valor ; Variable on guardem el que mostraran el valor endc
org 0 Inici bsf STATUS,RP0 ; Tria el banc 1 clrf TRISC ; Posa tots els bits del port C com a sortida bcf STATUS,RP0 ; Tria el banc 0 movlw b'00001000' ; Posa el valor al registre W movwf Valor ; Copia el valor de W a la variable Valor Bucle movf Valor,w ; Copia la variable Valor sobre el registre W movwf PORTC ; Copia el valor de W al port C bcf STATUS,C ; posa a zero el bit d'arrossegament rrf Valor,f ; Fa rodar els bits cap a la dreta ; el bit d'arrossegament entra per l'esquerra ; i el bit de la dreta passa a l'arrossegament btfsc STATUS,C ; Comprova si s'ha activat l'arrossegament ; Si no s'ha activat, salta una instrucció bsf Valor,3 ; Si s'ha activat, torna a posar un 1 goto Bucle ; Repetim-ho... end
A la primera part (fons groc) fem la configuració general. La primera línia li diu al compilador que inclogui el fitxer de característiques del PIC 16F690. En aquest fitxer hi ha, per exemple, les adreces dels registres específics del processador; així quan nosaltres indiquem PORTC, el compilador sap quina adreça li correspon.
La segona línia fa la configuració general del processador; són uns registres que només poden ser modificats en el moment de programar i que especifíquen la configuració que volem. En aquest cas hem posat la configuració bàsica, amb totes les funcions especials desactivades.
El segon bloc (fons blau) és la definició de les variables. A la primera línia li diem que la primera variable es situï a l'adreça 20h, la primera adreça de memòria de dades disponible. Podeu trobar l'organització de la memòria de dades a la la figura 2-8 del document de característiques del PIC 16F690. En aquest cas definim una sola variable (anomenada Valor) que, per tant, es guardarà a l'adreça 20h. La darrera instrucció d'aquest bloc indicque s'ha acabat la definició de variables.
Al darrer bloc (fons vermell) hi ha el programa pròpiament dit. A la primera línia li diem que el programa comença a l'adreça 0 (primera adreça de la memòria de programa). El programa s'inicia amb l'etiqueta Inici i acaba amb end. L'etiqueta Inici no és necessària (si no hi ha cap goto que hi vagi) però ens ajuda a veure l'estructura del programa. Podeu trobar la llista de les instruccions i la seva descripció a l'apartat 15 del document de característiques del PIC 16F690.
Anem a comentar algunes coses d'aquest programa. La memòria del microcontrolador està estructurada en quatre bancs. Encara que normalment les nostres variables estaran al banc 0, sovint necessitarem accedir a altres bancs (habitualment al banc 1) per poder llegir o escriure registres interns del microcontrolador. En aquest cas hem d'accedir al banc 1 per canviar la configuració d'entrades i sortides del port C (TRISC) que és on tenim connectats els LED.
El registre STATUS conté els dos bits que controlan els bancs de memòria (RP0 i RP1) i els bits d'estat que ens donen informació sobre el resultat d'algunes instruccions.
Els programes molt senzills tenen un codi que només es repeteix un cop, com és el cas de l' exemple EL. Llavors la darrera línia del programa és:
... goto $ ; Es bloqueja aquí end
El goto indica al programa que salti a una posició concreta i el signe $ indica la posició actual. Així el programa es queda repetint indefinidament aquesta instrucció; fins que desconnectem l'alimentació i la tornem a connectar. Si no hi hagués aquesta línia, el microcontrolador executaria les instruccions que hi pugui haver en les posicions següents i que no sabem quines són; per tant tindríem un funcionament incontrolat.
Els programes més habituals tenen una part que només s'executa quan engeguem el microcontrolador (inicialització) i una part que es repeteix indefinidament. En el programa que hem posat d'exemple més amunt, la part d'inicialització està entre les etiquetes Inici i Bucle. A partir de l'etiqueta Bucle hi ha el tros de programa que es repeteix indefinidament.

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