...
...
Описание | Команда | Функция | |
jiOPecKoe ИЛИ (побитовое) конаанты с содержимым регистра wreg | lOrlw Constant | wreg = wreg I Constant if ((wreg 1 Constant) == 0x000) Z = 1 else Z = 0 If ((wreg 1 Constant) «. OxOBO) 1= 0) N = 1 else N = 0 | 0000 1001 kkkk kkkk |
71огическое ИЛИ содержимого региара с содержимым регистра wreg, размещение результата в соответствии со значением указателя а Доступ -в соответствии с указателем а | lorwf Reg 6 a | If (d == 1) wreg = wreg Reg else Reg = wreg Reg If ((wreg 1 Reg == 0x000) Z = 1 else Z = 0 If ((wreg 1 Reg) «. 0x080) 1 = 0) N = 1 else N = 0 | 1110 1110 OOff kkkk 0001 OOda ffff ffff |
Загрузка константы в регистр, определенный регистром косвенного адреса (требуются два цикла) | Ifsr f Const | FSR(f) = Const | 1110 1110 OOff kkkk 1111 0000 kkkk kkkk |
Пересылка содержимого регистра в регистр из первичной области Доступ -в соответствии с указателем а | movf Reg d a | If (d == 0) wreg = Reg (Reg == 0) Z = 1 else Z = 0 If ((Reg «. 0x080) = 0) N = 1 else N = 0 | 0101 OOda ffff ffff |
Пересылка содержимого регистра источника в регистр приемник Адресация регистров 12-разрядными адвесами | movff Regs Regd | Regd = Regs | 1100 fffs fffs fffs 1111 fffd fffd fffd |
Загрузка константы в младший полубайт Pervicrpa выбора банка (BSR) | movlb Constant | BSR(3 0) = Constant | 0000 0001 kkkk kkkk |
Зафузка константы в регистр wreg | movlw Constant | wreg = Constant | 0000 1110 kkkk kkkk |
Описание | Команда | Функция | |
Пересылка в регистр содержимого регистра wreg Доступ - в соответствии с указателем а | movwf Reg a | Reg = wreg | 0110 111a ffff ffff |
Умножение содержимого регистра wreg на константу | mullw Constant | PRODH PROGL = Constant • wreg | 0000 1101 kkkk kkkk |
Умножение содержимого регистра на содержимое регистра wreg | mulwf Reg a | PRODH PROGL = Reg • wreg | 0000 001a ffff fff |
Изменение знака содержимого регистра wreg и размещение результата в соответствии со значением указателя s Доступ - в соответствии с указателем а | negw Reg a | Reg = -Reg If (-Reg < OxOBO) OV = 1 else OV = 0 If ((-Reg & 0x080) i= 0) N = 1 else N = 0 If (-Reg > OxOFF) С = 1 else С = 0 If ((-Reg «. OxOF) > OxOF) DC = 1 else DC = 0 If (-Reg =- 0x000) Z = 1 else Z = 0 | 0110 110a ffff fff |
«Пустая» операция (два кода) | | | 0000 0000 0000 0000 1111 1111 1111 in |
Выбор из стека | | POP ( ) | 0000 0000 0000 0110 |
Занесение в стек | push | PUSH (PC + 2) | 0000 0000 0000 0101 |
Вызов подпрограммы 11 разрядным адресом | rcall Label | PUSH ( PC ) PC = PC + 2 + Label | 1101 Ikkk kkkk kkkk |
Перезапуск микроконтроллера | reset | MCLR = 0 MCLR = 1 | 0000 0000 1111 1111 |
Возврат из прерывания (требуются два цикла) Если S = 1, восстанавливается контекст (содержимое регистров wreg, STATUS, BSR) | retfie s | PC = POP ( ) GIE = 0 If (s == 1) wreg = POP ( ) STATUS = POP ( ) BSR = POP ( ) | 0000 0000 0001 000s |
Возврат из подпрограммы с загрузкой константы в регистр wreg (требуются два цикла) | retlw Constant | wreg = Constant PC = POP ( ) | 0000 1100 kkkk kkkk |
Возврат из подпрограммы (требуются два цикла) Если S = 1, восстанавливается контекст (содержимое регистров wreg, STATUS, BSR) | return s | PC = POP ( ) If (s == 1) wreg = POP ( ) STATUS = POP ( ) BSR = POP ( ) | 0000 0000 0001 001s |
г Описание | Команда | Функция | |
ц;;;;;;йческий сдвиг (через бит переноса) содержимого региара влево и сохранение результата в соответствии со значением указателя 0 Доступ - в сйответавии с указателем а | rlcf Reg d а | If (d == 0) wreg (7 1) = Reg (6 0) wreg (0) = С С = Rog (7) else Reg (7 1) = Reg (6 0) Reg (0) = С С = Reg (7) If (Reg (6) = 0) N = 1 else N = 0 | 0011 Olda ffff ffff |
"циклический сдвиг содержимого региара влево и сохранение результата в соответавии со значением указателя 0 Доступ - в соответствии с указателем а | rlncf Reg d a | If (d == 0) wreg (7 1) = Reg (6 0) wreg (0) = Reg (7) else Reg (7 1) = Reg (6 0) Reg (0) = Reg (7) If (Reg (6) 1= 0) N = 1 else N = 0 | 0100 Olda ffff ffff |
Циклический сдвиг(через бит переноса) содержимого регистра вправо и сохранение результата в соответавии со значением указателя d Доауп - в соответавии с указателем а | rrcf Reg d a | If (d == 0) wreg (6 0) = Reg (7 1) wreg (7) = С С = Reg (0) else Reg (6 0) = Reg (7 1) Reg (7) - С С - Reg (0) If (Reg (0) = 0) N = 1 else N - 0 | 0011 OOda ffff ffff |
Циклический сдвиг содержимого региара вправо и сохранение результата в соответствии со значением указателя d Доступ - в соответавии с указателем а | rrcnf Reg d a | If (d == 0) wreg (6 0) = Reg (7 1) wreg (7) = Reg (0) else Reg (6 0) = Reg (7 1) Reg (7) = Reg (0) If (Reg (0) = 0) N = 1 else N = 0 | 0100 OOda ffff ffff |
Уаановка всех разрядов Реплара в 1 Сохранение в зависимости от значения указателя s Доступ - в соответствии £Шза1елем а | setf Reg s a | Reg = OxOFF If (s == 0) wreg = OxOFF | 0110 100a ffff ffff |
1ереход в режим пониженной мощности SLEEP (на неопределенное ВЕемя) | sleep | WOT = 0 WOT Postscaler = 0 T0 = 1 P0 = 0 | 0000 0000 0000 ООН |
...
...