|
Команды ассемблера MPASM
Мнемокод |
Операнд |
Выполняемые действия |
Изм. флаги STATUS |
ADDLW |
k |
Сумма восьмиразрядной константы k и содержимое регистра W заносится в
W |
C, DC, Z |
ADDWF |
f, d |
Сумма содержимого регистров W и f заносится в W (d=0) или в f (d=1) |
C, DC, Z |
ANDLW |
k |
Результат поразрядного И содержимого регистра W и восьмиразрядной константы
k заносится в W |
Z |
ANDWF |
f, d |
Результат поразрядного И содержимого регистров W и f заносится в W (d=0)
или f (d=1) |
Z |
BCF |
f, b |
В разряд b регистра f заносится логический 0 |
нет |
BSF |
f, b |
В разряд b регистра f заносится логическая 1 |
нет |
BTFSC |
f, b |
Если значение разряда b регистра f – 0, то вместо следующей команды выполняется
NOP |
нет |
BTFSS |
f, b |
Если значение разряда b регистра f – 1, то вместо следующей команды выполняется
NOP |
нет |
CALL |
k |
Переход к подпрограмме по адресу k. В аппаратный стек заносится адрес
следующей за CALL команды, в программный счетчик – константа k |
нет |
CLRF |
f |
Во все разряды регистра f заносятся логические 0 |
Z |
CLRW |
нет |
Во все разряды регистра W заносятся логические 0 |
Z |
CLRWDT |
нет |
Сброс WDT и предварительного делителя. В разряды TO и PD регистра
STATUS заносится логическая 1 |
TO, PD |
COMF |
f, d |
Все разряды регистра f инвертируются и заносятся в W (d=0) или f (d=1) |
Z |
DECF |
f, d |
Содержимое регистра f, уменьшенное на 1, заносится в W (d=0) или f (d=1) |
Z |
DECFSZ |
f, d |
Аналогичны команде DECF. Если результат нулевой, вместо следующей команды
выполняется NOP |
нет |
GOTO |
k |
Безусловный переход по адресу k. В программный счетчик заносится
константа k |
нет |
INCF |
f, d |
Содержимое регистра f, увеличенное на 1, заносится в W (d=0) или f (d=1) |
Z |
INCFSZ |
f, d |
Аналогичны команде INCF. Если результат нулевой, вместо следующей команды
выполняется NOP |
нет |
IORLW |
k |
Результат поразрядного ИЛИ содержимого регистра W и восьмиразрядной константы
k заносится W |
Z |
IORWF |
f, d |
Результат поразрядного ИЛИ содержимого регистров W и f заносится в W (d=0)
или f (d=1) |
Z |
MOVF |
f, d |
Содержимое регистра f заносится в W (d=0) или f (d=1). При d=1служит
для проверки f на равенство 0 |
Z |
MOVLW |
k |
Восьмиразрядная константа k заносится в регистр W |
нет |
MOVWF |
f |
Содержимое регистра W заносится в регистр f |
нет |
NOP |
нет | Переход к следующей команде без выполнения каких либо действий |
нет |
OPTION |
нет |
Содержимое регистра W заносится в регистр OPTION |
нет |
RETFIE |
k | Возврат из прерывания. В программный счетчик заносится адрес из аппаратного
стека, а в регистр W восьмиразрядная константа k |
нет |
RETURN |
нет | Возврат из подпрограммы. В программный счетчик заносится адрес из аппаратного
стека |
нет |
RLF |
f, d |
Содержимое регистра f сдвигается на один разряд в сторону старшего (влево),
причем младший разряд принимает значение разряда С рег. STATUS, а
старое значение ст. разряда переносится в С |
С |
RRF |
f, d |
Содержимое регистра f сдвигается на один разряд в сторону младшего (вправо),
причем старший разряд принимает значение разряда С рег. STATUS, а
старое значение мл. разряда переносится в С |
С |
SLEEP |
нет |
Перевод МК в спящий режим. В разряд PD регистра STATUS заносится
лог. 0, а в разряд TO лог. 1. WDT и предделитель сбрасываются. Тактовый
генератор выключается |
TO, PD |
SUBLW |
k |
Разность восьмиразрядной константы k и содержимого регистра W заносится
в W |
C, DC, Z |
SUBWF |
f, d |
Разность содержимого регистров W и f заносится в W (d=0) или в f (d=1) |
C, DC, Z |
SWAPF |
f, d |
Старшие четыре разряда регистра f и младшие четыре разряда того же регистра
заносятся в W (d=0) или f (d=1) поменявшись местами (старшие вместо
младших и наоборот) |
нет |
XORLW |
k |
Результат поразрядного ИСКЛЮЧАЮЩЕГО ИЛИ содержимого регистра W и восьмиразрядной
константы k заносится в W |
Z |
XORWF |
f, d | Результат поразрядного ИСКЛЮЧАЮЩЕГО ИЛИ содержимого регистров W и
f заносится в W (d=0) или в f (d=1) |
Z |
Примечания: 1. При выполнении команд модифицирующих значение регистров PORTx,
необходимо учитывать внешнее воздействие на эти порты. 2. Если к TMR0 подключен
предделитель, то он обнуляется при записи в регистр TMR0.
Макроопределения ассемблера MPASM
Все приведенные ниже макрокоманды ассемблера MPASM встроенны в него по умолчанию, поэтому программист может пользоваться ими как основными командами. Большая часть макроопределений - это переходы по условиям и управление флагами регистра STATUS. Однако следует помнить, что при трансляции программ с этими макроопределениями другими ассемблерами ошибки неизбежны...
Макроопределение |
Действие |
Макроопределение |
Действие |
ADDCF |
macro |
с |
|
btfsc |
STATUS,C |
|
incf |
f, d |
|
endm |
|
|
Добавить к содержимому регистра f значение признака переноса |
MOVFW |
macro |
f |
|
movf |
f, 0 |
|
endm |
|
|
|
|
|
Копировать содержимое регистра f в регистр W |
ADDDCF |
macro |
f, d |
|
btfsc |
STATUS,DC |
|
incf |
f, d |
|
endm |
|
|
Добавить к содержимому регистра f значение признака вспомогательного переноса |
NEGF |
macro |
f, d |
|
comf |
f, 1 |
|
incf |
f, d |
|
endm |
|
|
Изменить знак числа, находящегося в регистре f |
|
Безусловный переход |
SETC |
macro |
|
|
bcf |
STATUS,C |
|
endm |
|
|
Установить признак переноса |
BC |
macro |
k |
|
btfsc |
STATUS,C |
|
goto |
k |
|
endm |
|
|
Переход, если перенос |
SETDC |
macro |
|
|
bcf |
STATUS,DC |
|
endm |
|
|
|
|
|
Установить признак вспомогательного переноса |
BDC |
macro |
k |
|
btfsc |
STATUS,DC |
|
goto |
k |
|
endm |
|
|
Переход, если вспомогательный перенос |
SETZ |
macro |
|
|
bcf |
STATUS,Z |
|
endm |
|
|
|
|
|
Установить признак нуля |
BNC |
macro |
k |
|
btfss |
STATUS,C |
|
goto |
k |
|
endm |
|
|
Переход, если нет переноса |
SKPC |
macro |
|
|
btfss |
STATUS,C |
|
endm |
|
|
|
|
|
Пропустить следующую команду, если перенос |
BNDC |
macro |
k |
|
btfss |
STATUS,DC |
|
goto |
k |
|
endm |
|
|
Переход, если нет вспомогательного переноса |
SKPDC |
macro |
|
|
btfss |
STATUS,DC |
|
endm |
|
|
|
|
|
Пропустить следующую команду, если вспомогательный перенос |
BNZ |
macro |
k |
|
btfss |
STATUS, Z |
|
goto |
k |
|
endm |
|
|
Переход, если не ноль |
SKPNC |
macro |
|
|
btfsc |
STATUS,C |
|
endm |
|
|
|
|
|
Пропустить следующую команду, если нет переноса |
BZ |
macro |
k |
|
btfsс |
STATUS, Z |
|
goto |
k |
|
endm |
|
|
Переход, если ноль |
SKPNDC |
macro |
|
|
btfsc |
STATUS,DC |
|
endm |
|
|
|
|
|
Пропустить следующую команду, если нет вспомогательного переноса |
CLRC |
macro |
|
|
bcf |
STATUS, C |
|
endm |
|
|
Снять признак переноса |
SKPZ |
macro |
|
|
btfss |
STATUS,Z |
|
endm |
|
|
Пропустить следующую команду, если ноль |
CLRDC |
macro |
|
|
bcf |
STATUS,DC |
|
endm |
|
|
Снять признак вспомогательного переноса |
SKPNZ |
macro |
|
|
btfsc |
STATUS,Z |
|
endm |
|
|
Пропустить следующую команду, если нет нуля |
CLRZ |
macro |
|
|
bcf |
STATUS,Z |
|
endm |
|
|
Снять признак нуля |
TSTF |
macro |
f |
|
movf |
f, 1 |
|
endm |
|
|
Проверить на ноль содержимое регистра f |
Скачать ассемблер MPASM
|