Пример простейшей программы для PIC16F84A
Эта программа включает некоторые светодиоды, подключенные к ножкам порта A и порта B, как показано на схеме:

Текст программы:
list p=16f84a ; Указываем компилятору тип процессора
#include <p16F84A.inc> ; указываем компилятору файл с информацией о регистрах и константах
bsf STATUS,RP0 ; Устанавливаем бит RP0 регистра STATUS (т.е. делаем бит RP0 равным 1). Таким образом, переходим на страницу памяти №1. На этой странице расположены регистры TRISA и TRISB.
movlw B'00000000' ; Отправляем в рабочий регистр W двоичное число 00000000
movwf TRISA ; Отправляем двоичное число 00000000 из рабочего регистра в регистр TRISA. Так как все биты теперь равны нулю, все ножки порта А установлены, как выходы. 0 – означает выход, а 1- вход.
movlw B'00000000' ;Отправляем в рабочий регистр W двоичное число 00000000
movwf TRISB ; Отправляем двоичное число 00000000 из рабочего регистра в регистр TRISB. Так как все биты теперь равны нулю, все ножки порта B установлены, как выходы. 0 – означает выход, а 1- вход.
bcf STATUS,RP0 ; сбрасываем (обнуляем) бит RP0 регистра STATUS. Таким образом, переходим на страницу памяти №0.
movlw B'00000100' ; отправляем в рабочий регистр двоичное число 00000100
movwf PORTA ; отправляем двоичное число 00000100 из рабочего регистра в порт А. В результате будет установлен бит №2 (отсчет ведется от 0) порта A, и соответствующий светодиод будет гореть.
movlw B'10011000' ; отправляем в рабочий регистр двоичное число 10011000
movwf PORTB ; отправляем двоичное число 10011000 из рабочего регистра в порт B. Таким образом, будут установлены биты №3, №4 и №7 порта B, и соответствующие светодиоды будут гореть.
LOOP ; метка LOOP
goto LOOP ; переход на метку LOOP. Это бесконечный цикл. Программа зацикливается и больше ничего не делает.
END ; конец программы