Главная »
Периодика »
Безопасность0 ...
891011121314 ...
159Описание | Каманда | Функция | |
Логическое И содержимого регистра с содержимым регистра wreg и размещение результата в соответствии со значением указателя d | andwf Reg d | If (d - 1) wreg = wreg & Reg else Reg = wreg S, Reg If ((wreg & Reg) == 0x000) Z = 1 else Z = 0 | 0000 lOld ffff ffff |
Стирание заданного бита в регистре Reg | bcf Reg Bit | Reg = Reg & (OxOFF " (1 « Bit)) | 1000 Ibbb ffff ffff |
Установка заданного бита в регистре (запись в 1) | bsf Reg Bit | Reg = Reg (1 « Bit) | 1000 ОЬЬЬ ffff ffff |
Проверка значения бита регистра и пропуск следующей команды, если бит равен 0 При отсутствии пропуска требуется один командный цикл,а в случае пропуска -два цикла | btfsc Reg Bit | If ((Reg & (1 « Bit)) == 0) PC = PC + 1 | 1001 Ibbb ffff ffff |
Проверка значения бита регистра и пропуск следующей команды, если бит равен 1 При отсутствии пропуска требуется один командный цикл, а в случае пропуска - два цикла | btfss Reg Bit | If ((Reg & (1 « Bit)) = 0) PC = PC + 1 | 1001 Obbb ffff ffff |
Изменение состояния заданного бита регистра | btg Reg Bit | Reg = Reg (1 « Bit) | 0011 Ibbb ffff ffff |
Вызов подпрограммы (требуются два цикла) | call Label | PUSH ( PC ) PCLATH = PC (15 13) + Label (12 8) PCL = Label (7 0) | 111k kkkk kkkk kkkk |
Стирание указанного регистра и регистра wreg в зависимости от значения указателя s | clrf Reg s | Reg = 0 If (s " 0) wreg = 0 | 0010 100s ffff ffff |
Стирание счетчика сторожевого таймера | clrwdt | WDT = 0 WDT Postscaler = 0 T0 = 1 P0 = 1 | 0000 0000 0000 0100 |
| | |
Инвертирование содержимого заданного регистра и размещение результата в соответствии со значением указателя d | comf Reg d | if (d == 0) Wreg = Reg " OxOFF else Reg = Reg ~ OxOFF If ((Reg - OxOFF) == 0x000) Z = 1 else Z = 0 | 0001 OOld ffff ffff |
Описание | Команда | Функция | |
Сравнение содержимого региара с содержимым региара wreg В случае равенава - пропуск следукэщей команды (требукэтся два цикла) | cpfseq Reg | If ((Reg - wreg) == 0) PC = PC + 1 | 0011 0001 ffff ffff |
Сравнение содержимого региара с содержимым региара wreg Если первое больше - пропуск следукэщей команды (требукэтся два цикла) | cpfsgt Reg | If ((Reg - wreg) > 0 PC = PC + 1 | 0011 0010 ffff ffff |
Сравнение содержимого региара с содержимым региара wreg Если первое меньше - пропуск следукэщей команды (требуются два цикла) | cpfslt Reg | If ((Reg - wreg) < 0) PC = PC + 1 | 0011 0000 ffff ffff |
Десятичная коррекция и размещение результата в соответавии со значением указателя s | daw Reg s | If ((wreg & OxOF) > 9) If (s == 0) Wreg = (wreg «, OxOF) + 0x010 else Reg = (wreg «. OxOF) + 0x010 | 0010 Ills ffff ffff |
Декрем ентирование содержимого регистра и размещение результата в соответствии со значением указателя d | decf Reg d | if (d == 0) Wreg = Reg - 1 else Reg = Reg - 1 If ((Reg - 1) == 0x000) Z = 1 else Z = 0 If (((Reg > 0) «, ((Reg - 1) < OxOBO)) OV = 1 else OV = 0 If (((Reg «, OxOOF) - 1) & 0x080) = 0) DC = 0 else DC = 1 If ((Reg - 1) < 0) С = 0 else С = 1 | 0000 Olid ffff ffff |
Декременти рова ние содержимого регистра, размещение результата в соответствии со значением указателя d и пропуск следующей команды, если результат равен нулю, при пропуске требуются два командных 11икла | decfsz Reg d | If (d == 0) wreg = Reg - 1 else Reg = Reg - 1 If ((Reg - 1) == 0x000) PC = PC + 1 | 0001 Olid ffff ffff |
Описание
Команда
Функция
Декрементирование содержимого регистра, размещение результата в соответствии со значением указателя d и пропуск следующей команды, если результат не равен нулю; при пропуске требуются два командных цикла
dcfsnz Reg, d
if (d == 0)
Wreg = Reg - 1 else Reg = Reg - 1 if ((Reg - 1) != 0x000) PC = PC + 1
0010 Olid ffff ffff
Безусловный переход (требуются два командных цикла)
goto Label
PCLATH = PC (15:13)
Label (128)
PCL = Label (7:0)
1101 kkkk kkkk kkkk
Инкрементирование содержимого регистра и размещение результата в соответствии со значением указателя d
mcf Reg, d
If (d == 0)
Wreg = Reg + 1 else Reg = Reg + 1 If ((Reg t 1) == 0x000)
Z = 1 else Z = 0 if (((Reg > 0)
«. ((Reg + 1) > 0x07F)) OV = 1 else OV = 0
If (((Reg 4 OMOF) + 1)
«, 0x010) != 0) DC = 1 else DC = 0
If ((Reg + 1) == 0x0100)
С = 1 else
С = 0
0001 OlOd ffff ffff
Инкрементирование содержимого регистра, размещение результата
соответствии со значением указателя d и пропуск последующей команды, если результат равен нулю; при пропуске требуются два командных цикла
incfsz Reg, d
If (d == 0)
Wreg = Reg + 1 else Reg = Reg + 1 If ((Reg + 1) == 0x000)
PC = PC + 1
0001 Hid ffff ffff
Инкрементирование содержимого регистра, размещение результата в соответствии со значением указателя d и пропуск последующей команды, если результат не равен нулю; при пропуске требуются два командных цикла
infsnz Reg, d
If (d == 0)
Wreg = Reg + 1 else Reg = Reg + 1 If ((Reg * 1) != 0x000)
PC = PC + 1
0010 OlOd ffff ffff
0 ...
891011121314 ...
159