Команды для MPlab
ADD LW K – сложение константы и аккумулятора. Константа от 0 до 255 (в десятичной системе), (w)+k -> (w) при этом изменяются флаги C, DC, Z.
ADD wf f,d – сложение аккумулятора с регистром: (w)+(f) –> (пр.)d. f от 0 до 127 , d принадлежит значение 0 или 1 в зависимости от приёмника. Изменяются флаги C, DC, Z.
AND LW K – побитное U константы и аккумулятора. (w)^k – > (w). Изменяется флаг Z.
AND wf f,d – побитное U между аккумулятором и регистром. (w)^(f) – >(пр.)d. Изменяется флаг Z.
BCF f, b – очистить бит в регистре b от 0 до 7. 0 -> (f<b>). В указан. бит регистра запис-ся.
BSF f, b – установить бит в регистре. 1 -> (f<b>). Флаги не изменяются.
Btfsc f, b – проверить бит в регистре и пропустить, если 0. Если бит =1, то исполняются следующие команды. Если =0, то следующая команда пропускается.
Btfss f, b – проверить бит в регистре и пропустить, если =1.
CALL K – вызов подпрограммы. К принимает значение от 0 до 2047. (РС)+1 -> TOS, K -> PC <10:0> , (PCLATH <4:3>) -> PC <12:11>. Адрес следующей инструкции загружается в вершину стека. 11 бит загружается из кода команд в счётчик команд, а 2 старших загружается в12-ый и 11-ый. Команда выполняется за 2 цикла.
CLR F f – очищает содержимое регистров. Изменяется флаг Z.
CLR W – очистка аккумулятора. Изменяется флаг Z.
CLR WDT – очищает сторожевой таймер и его предделитель. Изменяются флаги ТО и PD.
COM f f, d – инвертирует регистр. Изменяется флаг Z. (f) – 1 -> (пр)d.
Decf f,d – декремент регистра f. Изменяется флаг Z. (f) – 1 -> (пр)d.
Dtc fsz f,d – вычесть 1 из регистра и пропустить, если 0. Если результат не равен 0, то выполняется следующая команда, если =0, то следующая команда пропускается.
GOTO K – безусловный переход, где к – адрес.
INC f f, d – инкреминируется содержание реистра. (f) + 1 -> (пр)d. Изменяется флаг Z.
INC fsz f,d – инкременировать содержание регистра и пропустить, если =0.
IOR lw k – побитная ИЛИ const и аккумулятора. Изменяется флаг Z. (w) \/ к -> (w).
IOR wf f, d – побитная ИЛИ аккумулятора и регистра. Изменяется флаг Z. (w)\/(f) -> (пр)d.
MOV f f, d – пересылает содержимое регистра f в приёмник, зависящий от d. Изменяется флаг Z. (f) -> (пр)d , (f) -> (f) – используется для проверки содержимого регистра.
MOV lw k – пересылка const в аккумулятор.
MOV wf f – пересылка содержимого аккумулятора в регистр. (w) -> (f)
NOP – пустая операция.
REtfIE – возврат из подпрограммы с разрешением прерывания. TOS -> PC, 1 -> GIE. Вершина стека загружается в счётчик команд. Устанавливается в 1 бит, разрешая прерывания.
RETlwk – возврат из подпрограммы с загрузкой константы в аккумулятор. K -> (w), TOS -> PC.
RETURN – возврат из подпрограммы. TOS -> PC.
RLF f, d – циклический сдвиг регистра f влево через перенос. Изменяется флаг С. Содержимое загружается в зависимости от d.
RRF f, d – циклический сдвиг регистра f вправо через перенос. Изменяется флаг С. Содержимое загружается в зависимости от d.
SLEEP – изменяются флаги ТО и PD. Очищает сторожевой таймер и его предделитель.
SUB LW K – вычитает из константы содержимое аккумулятора. К – (w) –> (w). Изменяются флаги C, DC, Z.
SUB wf f, d – производит вычитание из регистра аккумулятора. Приёмник зависит от бита d. (f) – (w) -> (пр)d. Изменяются флаги C, DC, Z.
SWAPF f, d – меняет местами старший и младший полубайты регистра. . Приёмник зависит от бита d.
XOR LW k – побитное исключение ИЛИ константы и аккумулятора. Изменяется флаг Z. (w)\-/ k -> (w).
XOR WW f, d – побитное исключение ИЛИ аккумулятора и регистра. Изменяется флаг Z. (w)\-/ (f) -> (пр)d.