Портал для радиолюбителей
   Команды ассемблера MPASM
    


Команды ассемблера 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
B macro k
  goto k
  endm  
Безусловный переход
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



    © PavKo, 2007-2018   Обратная связь   Ссылки   Яндекс.Метрика