|
Wyjście Spis treści Wstecz Dalej
Autor artykułu |
©2026 mgr Jerzy Wałaszek
|

If you use Microchip copyrighted material solely for educational (non-profit) purposes falling under the “fair use” exception of the U.S. Copyright Act of 1976 then you do not need Microchip’s written permission. For example, Microchip’s
permission is not required when using copyrighted material in:
https://www.microchip.com/about-us/legal-information/copyright-usage-guidelines
| SPIS TREŚCI KONSERWACJA |
| Podrozdziały |
Biorąc najlepsze elementy istniejącej rodziny średniej mikrokontrolerów PIC, rodzina rozszerzona udostępnia zwiększoną wydajność oraz ulepszone adresowanie pamięci programu FLASH do 56 KB i pamięci danych RAM do 4 KB. Pozwala to tworzyć bardziej różnorodny kod o zwiększonej funkcjonalności w bardziej złożonych aplikacjach – co jest szczególnie przydatne przy tworzeniu programów w języku C. W klasie rozszerzonej liczba dostępnych instrukcji została zwiększona do 49, co zoptymalizowało kod programu oraz przetwarzanie danych. W efekcie program zajmuje do 40% mniej miejsca w pamięci, a wzrost wydajności wyniósł do 50% w różnych algorytmach i funkcjach.
Poniższy rysunek przedstawia schemat blokowy mikrokontrolera PIC rodziny rozszerzonej:

Poniższa tabelka przedstawia porównanie rodziny rozszerzonej mikrokontrolerów PIC z rodziną średnią:
| Parametr | Rodzina średnia | Rodzina rozszerzona |
| Długość instrukcji | 14 bitów | 14 bitów |
| Adresowalna pamięć programu | 8 K instrukcji | 32 K instrukcji |
| Pamięć RAM | 446 bajtów | ponad 3 KB |
| Liczba banków RAM | 4 | 32 |
| Liczba instrukcji | 35 | 49 |
| Stos sprzętowy | 8 poziomów | 16 poziomów z resetem |
| Obsługa przerwań | programowa | sprzętowa |
| Rejestry adresowania pośredniego | 1 x 9 bitów | 2 x 16 bitów |
Kategoria stałych i sterowania zawiera najbardziej zróżnicowane formaty słowa instrukcji. Na końcu tego podrozdziału znajduje się tabelka z instrukcjami rozpoznawanymi przez asembler MPASMTM.
Wszystkie instrukcje są wykonywane w czasie pojedynczego cyklu rozkazowego z następującymi wyjątkami, które mogą zająć dwa lub trzy cykle:
Każdy cykl rozkazowy (Tcy) złożony jest z czterech taktów Q (Q1-Q4). Takt Q jest taki sam jak takt oscylatora mikrokontrolera (TOSC). Takty Q wyznaczają w każdym cyklu rozkazowym okresy dekodowania, odczytu, przetwarzania danych, zapisu, itp. Poniższy wykres pokazuje związek taktów Q z cyklami rozkazowymi. Ogólnie cztery takty Q w cyklu rozkazowym można ogólnie podzielić na:
Q1: Takt dekodowania instrukcji lub wymuszona instrukcja pusta
Q2: Takt odczytu danych lub instrukcja pusta
Q3: Przetwarzanie danych
Q4: Takt zapisu danych lub instrukcja pusta

Każda instrukcja odwołująca się w kodzie do rejestru RAM wykonuje operację R-M-W. Dany rejestr jest odczytywany, odczytane dane są modyfikowane, a wynik zostaje zapisany albo zgodnie z instrukcją, albo z desygnatorem przeznaczenia d. Operacja odczytu jest wykonywana, nawet gdy instrukcja jedynie zapisuje do danego rejestru.
| Pole | Opis |
| opcode | Kod operacyjny określający rodzaj operacji, którą wykonuje instrukcja |
| f | Adres rejestru w RAM (0x00 ... 0x7F) |
| W | Rejestr roboczy (akumulator) |
| b | Numer bitu wewnątrz 8-bitowego rejestru |
| k | Pole stałej, dane stałe lub etykieta |
| d | Wybór rejestru docelowego: d = 0, wynik trafi do akumulatora W d = 1, wynik trafi do rejestru f w RAM Wartość standardowa d = 1. |
| n | Numer FSR lub INDF (0 ... 1) |
| mm | Wybór trybu pre-/post- inkrementacji/dekrementacji. |
| Skrót | Opis |
| PC | Licznik programu (ang. Program Counter) |
| TO | Bit przekroczenia czasu (ang. Time-out bit) |
| C | Bit przeniesienia (ang. Carry bit) |
| DC | Przeniesienie z cyfry (ang. Digit carry bit) |
| Z | Bit zera (ang. Zero bit) |
| PD | Bit wyłączenia zasilania (ang. Power-down bit) |
| b13 | b12 | b11 | b10 | b09 | b08 | b07 | b06 | b05 | b04 | b03 | b02 | b01 | b00 |
| opcode | d | f | |||||||||||
| d = 0, wynik do W d = 1, wynik do f f = 7-bitowy numer rejestru |
| b13 | b12 | b11 | b10 | b09 | b08 | b07 | b06 | b05 | b04 | b03 | b02 | b01 | b00 |
| opcode | b | f | |||||||||||
| b = 3-bitowy numer bitu f = 7-bitowy numer rejestru |
Ogólnie:
| b13 | b12 | b11 | b10 | b09 | b08 | b07 | b06 | b05 | b04 | b03 | b02 | b01 | b00 |
| opcode | k | ||||||||||||
| b13 | b12 | b11 | b10 | b09 | b08 | b07 | b06 | b05 | b04 | b03 | b02 | b01 | b00 |
| opcode | k | ||||||||||||
| k = 11-bitowa stała |
Tylko instrukcja MOVLP
| b13 | b12 | b11 | b10 | b09 | b08 | b07 | b06 | b05 | b04 | b03 | b02 | b01 | b00 |
| opcode | k | ||||||||||||
| k = 7-bitowa stała |
Tylko instrukcja MOVLB
| b13 | b12 | b11 | b10 | b09 | b08 | b07 | b06 | b05 | b04 | b03 | b02 | b01 | b00 |
| opcode | k | ||||||||||||
| k = 5-bitowa stała |
Tylko instrukcja BRA
| b13 | b12 | b11 | b10 | b09 | b08 | b07 | b06 | b05 | b04 | b03 | b02 | b01 | b00 |
| opcode | k | ||||||||||||
| k = 9-bitowa stała |
Instrukcje z przesunięciem FSR
| b13 | b12 | b11 | b10 | b09 | b08 | b07 | b06 | b05 | b04 | b03 | b02 | b01 | b00 |
| opcode | n | k | |||||||||||
| n = odpowiedni FSR k = 6-bitowa stała |
Instrukcje inkrementacji FSR
| b13 | b12 | b11 | b10 | b09 | b08 | b07 | b06 | b05 | b04 | b03 | b02 | b01 | b00 |
| opcode | n | m | |||||||||||
| n = odpowiedni FSR m = 2-bitowa wartość trybu |
Tylko kod operacyjny
| b13 | b12 | b11 | b10 | b09 | b08 | b07 | b06 | b05 | b04 | b03 | b02 | b01 | b00 |
| opcode | |||||||||||||
| Mnemonik, argumenty |
Opis | Cykle roz. |
14-bitowe słowo instrukcji | Zmieniane znaczniki |
Uwagi | |
| MSB... ...LSB | ||||||
| Operacje bajtowe na rejestrach | ||||||
| ADDWF | f, d | Dodanie W i f | 1 | 00 0111 dfff ffff |
C, DC, Z | 2 |
| ADDWFC | f, d | Dodanie z przeniesieniem W if | 1 | 11 1101 dfff ffff |
C, DC, Z | 2 |
| ANDWF | f, d | Koniunkcja W z f | 1 | 00 0101 dfff ffff |
Z | 2 |
| ASFR | f, d | Przesunięcie arytmetyczne w prawo | 1 | 11 0111 dfff ffff |
C,Z | 2 |
| LSLF | f, d | Przesunięcie logiczne w lewo | 1 | 11 0101 dfff ffff |
C, Z | 2 |
| LSRF | f, d | Przesunięcie logiczne w prawo | 1 | 11 0110 dfff ffff |
C, Z | 2 |
| CLRF | f | Zerowanie f | 1 | 00 0001 1fff ffff |
Z | 2 |
| CLRW | – | Zerowanie W | 1 | 00 0001 0000 00xx |
Z | |
| COMF | f, d | Zanegowanie f | 1 | 00 1001 dfff ffff |
Z | 2 |
| DECF | f, d | Zmniejszenie o 1 f | 1 | 00 0011 dfff ffff |
Z | 2 |
| INCF | f, d | Zwiększenie o 1 f | 1 | 00 1010 dfff ffff |
Z | 2 |
| IORWF | f, d | Alternatywa W z f | 1 | 00 0100 dfff ffff |
Z | 2 |
| MOVF | f, d | Przesłanie f | 1 | 00 1000 dfff ffff |
Z | 2 |
| MOVWF | f | Przesłanie W do f | 1 | 00 0000 1fff ffff |
2 | |
| RLF | f, d | Obrót w lewo poprzez przeniesienie | 1 | 00 1101 dfff ffff |
C | 2 |
| RRF | f, d | Obrót w prawo poprzez przeniesienie | 1 | 00 1100 dfff ffff |
C | 2 |
| SUBWF | f, d | Odjęcie W od f | 1 | 00 0010 dfff ffff |
C, DC, Z | 2 |
| SUBWFB | f, d | Odjęcie z pożyczką W od f | 1 | 11 1011 dfff ffff |
C, DC, Z | 2 |
| SWAPF | f, d | Zamiana połówek f | 1 | 00 1110 dfff ffff |
2 | |
| XORWF | f, d | Różnica symetryczna W z f | 1 | 00 0110 dfff ffff |
Z | 2 |
| Operacje bajtowe pomijania | ||||||
| DECFSZ | f, d | Zmniejszenie o 1 f, pominięcie przy zerze | 1/2 | 00 1011 dfff ffff |
1, 2 | |
| INCFSZ | f, d | Zwiększenie o 1 f, pominięcie przy zerze | 1/2 | 00 1111 dfff ffff |
1, 2 | |
| Operacje bitowe na rejestrach | ||||||
| BCF | f, b | Zerowanie bitu w f | 1 | 01 00bb bfff ffff |
2 | |
| BSF | f, b | Ustawianie bitu w f | 1 | 01 01bb bfff ffff |
2 | |
| Operacje bitowe pomijania | ||||||
| BTFSC | f, b | Testowanie bitu w f, pominięcie przy wyzerowanym | 1/2 | 01 10bb bfff ffff |
1, 2 | |
| BTFSS | f, b | Testowanie bitu w f, pominięcie przy ustawionym | 1/2 | 01 11bb bfff ffff |
1, 2 | |
| Operacje ze stałą | ||||||
| ADDLW | k | Dodanie stałej i W | 1 | 11 1110 kkkk kkkk |
C, DC, Z | |
| ANDLW | k | Koniunkcja stałej z W | 1 | 11 1001 kkkk kkkk |
Z | |
| IORLW | k | Alternatywa stałej z W | 1 | 11 1000 kkkk kkkk |
Z | |
| MOVLB | k | Umieszczenie stałej w BSR | 1 | 00 0000 001k kkkk |
||
| MOVLP | k | Umieszczenie stałej w PCLATH | 1 | 11 0001 1kkk kkkk |
||
| MOVLW | k | Umieszczenie stałej w W | 1 | 11 0000 kkkk kkkk |
||
| SUBLW | k | Odjęcie W od stałej | 1 | 11 1100 kkkk kkkk |
C, DC, Z | |
| XORLW | k | Różnica symetryczna stałej z W | 1 | 11 1010 kkkk kkkk |
Z | |
| Operacje sterujące | ||||||
| BRA | k | Bezwarunkowy skok względny | 2 | 11 001k kkkk kkkk |
||
| BRW | – | Bezwarunkowy skok względny o W | 2 | 00 0000 0000 1011 |
||
| CALL | k | Wywołanie podprogramu | 2 | 01 0kkk kkkk kkkk |
||
| CALLW | – | Wywołanie podprogramu przy pomocy W | 2 | 00 0000 0000 1010 |
||
| GOTO | k | Skok pod adres k | 2 | 01 1kkk kkkk kkkk |
||
| RETFIE | – | Powrót z przerwania | 2 | 00 0000 0000 1010 |
||
| RETLW | k | Powrót z podprogramu ze stałą w W | 2 | 11 0100 kkkk kkkk |
||
| RETURN | – | Powrót z podprogramu | 2 | 00 0000 0000 1000 |
||
| Operacje podstawowe | ||||||
| CLRWDT | – | Zerowanie timera licznika zegarowego | 1 | 00 0000 0110 0100 |
TO, PD | |
| NOP | – | Operacja pusta | 1 | 00 0000 0000 0000 |
||
| OPTION | – | Załadowanie rejestru OPTION_REG zawartością W | 1 | 00 0000 0110 0010 |
||
| RESET | – | Programowy reset mikrokontrolera | 1 | 00 0000 0000 0001 |
||
| SLEEP | – | Przejście w tryb oczekiwania (uśpienie) | 1 | 00 0000 0110 0011 |
TO, PD | |
| TRIS | f | Załadowanie rejestru TRIS zawartością W | 1 | 00 0000 0110 0fff |
||
| Operacje zoptymalizowane dla kompilatora C | ||||||
| ADDFSR | n, k | Dodanie stałej k do rejestru FSRn | 1 | 11 0001 0nkk kkkk |
||
| MOVIW | n, mm | Przesłanie pośrednie FSRn do W z modyfikacją określoną przez mm | 1 | 00 0000 0001 0nmm |
Z | 2, 3 |
| MOVIW | k[n] | Załadowanie INDFn do W, pośrednio z indeksowaniem | 1 | 11 1111 0nkk kkkk |
Z | 2 |
| MOVWI | n, mm | Przesłanie pośrednie W do FSRn z modyfikacją określoną przez mm | 1 | 00 0000 0001 1nmm |
2, 3 | |
| MOVWI | k[n] | Załadowanie W do INDFn, pośrednio z indeksowaniem | 1 | 11 1111 1nkk kkkk |
2 | |
| Uwagi: | 1. | Jeśli jest modyfikowany licznik programu (PC) lub test warunkowy jest prawdziwy, to dana instrukcja wymaga 2 cykli rozkazowych. W drugim cyklu jest wykonywana instrukcja pusta NOP. |
| 2. | Jeśli instrukcja ta adresuje rejestr INDF, a najstarszy bit odpowiadającego mu rejestru FSR jest ustawiony na 1, to instrukcja wymaga dodatkowego cyklu rozkazowego. | |
| 3. | Zobacz na opis instrukcji MOVIW oraz MOVWI. |
| Pole | Opis |
| f | Adres rejestru w RAM (0x00 ... 0x7F) |
| W | Rejestr roboczy (akumulator) |
| b | Numer bitu wewnątrz 8-bitowego rejestru |
| x | Wartość bitu bez znaczenia |
| k | Pole stałej, dane stałe lub etykieta |
| d | Wybór rejestru docelowego: d = 0, wynik trafi do akumulatora W d = 1, wynik trafi do rejestru f w RAM Wartość standardowa d = 1. |
| n | Numer FSR lub INDF (0 ... 1) |
| mm | Wybór trybu pre-/post- inkrementacji/dekrementacji. |
| {} | Argument może być pominięty, wtedy asembler przyjmie wartość standardową. |
Składnia: ADDFSR FSRn, k
Argumenty: k = -32...31; n = 0...1
Operacja: FSR(n) ← FSR(n) + k
Modyfikowane znaczniki stanu: żaden
Kod: 11 0001 0nkk kkkk
Liczba cykli rozkazowych: 1
Opis: 6-bitowa stała ze znakiem (kod U2) zostaje dodana do
zawartości wybranej pary rejestrów adresowania pośredniego FSRnH:FSRnL. Zakres
FSRn jest ograniczony do
Na przykład:
; FSR0 = 0000h
ADDFSR FSR0,-1
; FSR = FFFFh
Składnia: ADDLW k
Argumenty: k = 0...255
Operacja: W ← W + k
Modyfikowane znaczniki stanu: C, DC, Z
Kod: 11 1110 kkkk kkkk
Opis: Zawartość akumulatora W zostaje dodana do 8-bitowej stałej k. Wynik jest umieszczany w akumulatorze W.
Liczba cykli rozkazowych: 1
Składnia: ADDWF f,d
Argumenty: f = 0...127, d = 0...1
Operacja: dest ← W + f
Modyfikowane znaczniki stanu: C, DC, Z
Kod: 00 0111 dfff ffff
Opis: Dodanie zawartości rejestru roboczego W (akumulatora) i rejestru f. Jeśli d jest równe 0, to wynik zostanie umieszczony w akumulatorze W. Jeśli d jest równe 1, to wynik zostanie z powrotem umieszczony w rejestrze f.
Liczba cykli rozkazowych: 1
Składnia: ADDWFC f{,d}
Argumenty: f = 0...127, d = 0...1
Operacja: dest ← W + f + C
Modyfikowane znaczniki stanu: C, DC, Z
Kod: 11 1101 dfff ffff
Opis: Dodanie zawartości rejestru roboczego W (akumulatora), bitu przeniesienia i rejestru f. Jeśli d jest równe 0, to wynik zostanie umieszczony w akumulatorze W. Jeśli d jest równe 1, to wynik zostanie z powrotem umieszczony w rejestrze f.
Liczba cykli rozkazowych: 1
Składnia: ANDLW k
Argumenty: k = 0...255
Operacja: W ← W & k
Modyfikowane znaczniki stanu: Z
Kod: 11 1001 kkkk kkkk
Opis: Zawartość akumulatora W zostaje poddana operacji koniunkcji bitowej z 8-bitową stałą k. Wynik jest umieszczany w akumulatorze W.
Liczba cykli rozkazowych: 1
Składnia: ANDWF f,d
Argumenty: f = 0...127, d = 0...1
Operacja: dest ← W & f
Modyfikowane znaczniki stanu: Z
Kod: 00 0101 dfff ffff
Opis: Zawartość akumulatora W zostaje poddana operacji koniunkcji bitowej z rejestrem f. Jeśli d jest równe 0, to wynik zostanie umieszczony w akumulatorze W. Jeśli d jest równe 1, to wynik zostanie z powrotem umieszczony w rejestrze f.
Liczba cykli rozkazowych: 1
Składnia: ANDWF f{,d}
Argumenty: f = 0...127, d = 0...1
Operacja:
dest[7] ← f[7]
dest[6:0] ← f[7:1]
C ← f[0]
Modyfikowane znaczniki stanu: C, Z
Kod: 11 0111 dfff ffff
Opis: Zawartość rejestru f zostaje bitowo przesunięta w prawo o jeden bit poprzez znacznik przeniesienia C. Najstarszy bit f nie zostaje zmieniony. Najmłodszy bit trafia do przeniesienia C. Jeśli d jest równe 0, to wynik zostanie umieszczony w akumulatorze W. Jeśli d jest równe 1, to wynik zostanie z powrotem umieszczony w rejestrze f.

Liczba cykli rozkazowych: 1
Składnia: BCF f,b
Argumenty: f = 0...127, b = 0...7
Operacja: f[b] ← 0
Modyfikowane znaczniki stanu: żaden
Kod: 01 00bb bfff ffff
Opis: Bit b rejestru f zostaje wyzerowany.
Liczba cykli rozkazowych: 1
Składnia:
BRA etykieta
BRA $ + k
Argumenty:
-256 ≤ etykieta - PC + 1
≤ 255
-256 ≤ k ≤ 255
Operacja: PC ← PC + 1 + k
Modyfikowane znaczniki stanu: żaden
Kod: 11 001k kkkk kkkk
Opis: Do zawartości licznika programu dodawana jest 9-bitowa stała ze znakiem w kodzie U2. Ponieważ licznik programu został wcześniej zwiększony o 1 do pobrania kolejnej instrukcji z pamięci programu, to nowym adresem będzie PC + 1 + k. Mikroprocesor wykona skok pod ten adres. Instrukcja wymaga dwóch cykli. Zakres skoku jest ograniczony.
Liczba cykli rozkazowych: 2
Składnia: BRW
Argumenty: brak
Operacja: PC ← PC + 1 + W
Modyfikowane znaczniki stanu: żaden
Kod: 00 0000 0000 1011
Opis: Do zawartości licznika programu dodawana jest zawartość akumulatora W (jako liczba bez znaku). Ponieważ licznik programu został wcześniej zwiększony o 1 do pobrania kolejnej instrukcji z pamięci programu, to nowym adresem będzie PC + 1 + W. Mikroprocesor wykona skok pod ten adres. Instrukcja wymaga dwóch cykli. Zakres skoku jest ograniczony.
Liczba cykli rozkazowych: 2
Składnia: BSF f,b
Argumenty: f = 0...127, b = 0...7
Operacja: f[b] ← 1
Modyfikowane znaczniki stanu: żaden
Kod: 01 01bb bfff ffff
Opis: Bit b rejestru f zostaje ustawiony na 1.
Liczba cykli rozkazowych: 1
Składnia: BTFSC f,b
Argumenty: f = 0...127, b = 0...7
Operacja: Pominięcie następnej instrukcji, jeśli f[b] = 0
Modyfikowane znaczniki stanu: żaden
Kod: 01 10bb bfff ffff
Opis: Jeśli bit b w rejestrze f ma stan 0, to zostaje pominięta następna instrukcja. Jeśli bit ten ma stan 0, to następna instrukcja pobrana w czasie wykonywania instrukcji bieżącej (nakładkowanie) zostaje usunięta z kolejki i zamiast niej mikroprocesor wykonuje instrukcję pustą NOP, co powoduje, iż instrukcja BTFSC wykonuje sie w tym przypadku przez 2 cykle rozkazowe.
Liczba cykli rozkazowych: 1/2
Składnia: BTFSS f,b
Argumenty: f = 0...127, b = 0...7
Operacja: Pominięcie następnej instrukcji, jeśli f[b] = 1
Modyfikowane znaczniki stanu: żaden
Kod: 01 11bb bfff ffff
Opis: Jeśli bit b w rejestrze f ma stan 1, to zostaje pominięta następna instrukcja. Jeśli bit ten ma stan 1, to następna instrukcja pobrana w czasie wykonywania instrukcji bieżącej (nakładkowanie) zostaje usunięta z kolejki i zamiast niej mikroprocesor wykonuje instrukcję pustą NOP, co powoduje, iż instrukcja BTFSS wykonuje się w tym przypadku przez 2 cykle rozkazowe.
Liczba cykli rozkazowych: 1/2
Składnia: CALL k
Argumenty: k = 0...2047
Operacja:
TOS ← PC + 1
PC[10:0] ← k
PC[12:11] ← PCLATH[4:3]
Modyfikowane znaczniki stanu: żaden
Kod: 01 0kkk kkkk kkkk
Opis: Wywołanie podprogramu. Najpierw na szczycie stosu umieszczany jest adres powrotny (PC + 1). 11-bitowy adres bezpośredni k zostaje załadowany do bitów PC[10:0]. Górne bity licznika programu PC są ładowane z rejestru PCLATH. Instrukcja CALL wykonywana jest w dwóch cyklach.
Liczba cykli rozkazowych: 2
Składnia: CALLW
Argumenty: brak
Operacja:
TOS ← PC + 1
PC[7:0] ← W
PC[14:8] ← PCLATH[6:0]
Modyfikowane znaczniki stanu: żaden
Kod: 00 0000 0000 1010
Opis: Wywołanie podprogramu przy pomocy W. Najpierw na stos powrotny zostaje przesłany adres powrotu (PC + 1). Następnie zawartość akumulatora W jest ładowana do bitów PC[7:0], a zawartość rejestru PCLATH do PC[14:8]. Instrukcja CALLW wykonywana jest w dwóch cyklach.
Liczba cykli rozkazowych: 2
Składnia: CLRF f
Argumenty: f = 0...127
Operacja:
f ← 00h
Z ← 1
Modyfikowane znaczniki stanu: Z
Kod: 00 0001 1fff ffff
Opis: Zawartość rejestru f zostaje wyzerowana, a znacznik Z ustawiony na 1.
Liczba cykli rozkazowych: 1
Składnia: CLRW
Argumenty: brak
Operacja:
W ← 00h
Z ← 1
Modyfikowane znaczniki stanu: Z
Kod: 00 0001 0000 00xx
Opis: Zawartość rejestru fW zostaje wyzerowana, a znacznik Z ustawiony na 1.
Liczba cykli rozkazowych: 1
Składnia: CLRWDT
Argumenty: brak
Operacja:
WDT ← 00h
preskaler WDT ← 0
TO ← 1
PD ← 1
Modyfikowane znaczniki stanu: TO, PD
Kod: 00 0000 0110 0100
Opis: Instrukcja CLRWDT zeruje timer licznika zegarowego oraz licznik jego preskalera. Ustawiane są bity stanu TO i PD.
Liczba cykli rozkazowych: 1
Składnia: COMF f,d
Argumenty: f = 0...127, d = 0...1
Operacja: dest ← f
Modyfikowane znaczniki stanu: Z
Kod: 00 1001 dfff ffff
Opis: Wszystkie bity rejestru f zostają zanegowane i wynik jest umieszczany w rejestrze docelowym dest. Jeśli d jest równe 0, to wynik negacji zostanie umieszczony w akumulatorze W. Jeśli d jest równe 1, to wynik zostanie z powrotem umieszczony w rejestrze f.
Liczba cykli rozkazowych: 1
Składnia: DECF f,d
Argumenty: f = 0...127, d = 0...1
Operacja: dest ← f - 1
Modyfikowane znaczniki stanu: Z
Kod: 00 0011 dfff ffff
Opis: Zawartość rejestru f zostaje zmniejszona o 1 i wynik jest umieszczany w rejestrze docelowym dest. Jeśli d jest równe 0, to wynik zostanie umieszczony w akumulatorze W. Jeśli d jest równe 1, to wynik zostanie z powrotem umieszczony w rejestrze f.
Liczba cykli rozkazowych: 1
Składnia: DECFSZ f,d
Argumenty: f = 0...127, d = 0...1
Operacja:
dest ← f -1, pominięcie następnej instrukcji, jeśli wynik = 0
Modyfikowane znaczniki stanu: żaden
Kod: 00 1011 dfff ffff
Opis: Zawartość rejestru f zostaje zmniejszona o 1 i wynik jest umieszczany w rejestrze docelowym dest. Jeśli d jest równe 0, to wynik zostanie umieszczony w akumulatorze W. Jeśli d jest równe 1, to wynik zostanie z powrotem umieszczony w rejestrze f. Jeśli wynik jest równy zero, to następna instrukcja pobrana w czasie wykonywania instrukcji bieżącej (nakładkowanie) zostaje usunięta z kolejki i zamiast niej mikroprocesor wykonuje instrukcję pustą NOP, co powoduje, iż instrukcja DECFSZ wykonuje się w tym przypadku przez 2 cykle rozkazowe.
Liczba cykli rozkazowych: 1/2
Składnia: CALL k
Argumenty: k = 0...2047
Operacja:
PC[10:0] ← k
PC[12:11] ← PCLATH[4:3]
Modyfikowane znaczniki stanu: żaden
Kod: 01 1kkk kkkk kkkk
Opis: Wykonanie bezwarunkowego skoku w programie. 11-bitowy adres bezpośredni jest ładowany do dolnych jedenastu bitów licznika programu PC[10:0]. Górne bity PC zostają załadowane z zatrzasków PCLATH[4:3]. Instrukcja GOTO jest wykonywana w dwóch cyklach. Jest to konieczne, aby przeładować kolejkę instrukcji. W drugim takcie wykonywana jest instrukcja pusta.
Liczba cykli rozkazowych: 2
Składnia: INCF f,d
Argumenty: f = 0...127, d = 0...1
Operacja: dest ← f + 1
Modyfikowane znaczniki stanu: Z
Kod: 00 1010 dfff ffff
Opis: Zawartość rejestru f zostaje zwiększona o 1 i wynik jest umieszczany w rejestrze docelowym dest. Jeśli d jest równe 0, to wynik zostanie umieszczony w akumulatorze W. Jeśli d jest równe 1, to wynik zostanie z powrotem umieszczony w rejestrze f.
Liczba cykli rozkazowych: 1
Składnia: DECFSZ f,d
Argumenty: f = 0...127, d = 0...1
Operacja:
dest ← f +1, pominięcie następnej instrukcji, jeśli wynik = 0
Modyfikowane znaczniki stanu: żaden
Kod: 00 1111 dfff ffff
Opis: Zawartość rejestru f zostaje zwiększona o 1 i wynik jest umieszczany w rejestrze docelowym dest. Jeśli d jest równe 0, to wynik zostanie umieszczony w akumulatorze W. Jeśli d jest równe 1, to wynik zostanie z powrotem umieszczony w rejestrze f. Jeśli wynik jest równy zero, to następna instrukcja pobrana w czasie wykonywania instrukcji bieżącej (nakładkowanie) zostaje usunięta z kolejki i zamiast niej mikroprocesor wykonuje instrukcję pustą NOP, co powoduje, iż instrukcja DECFSZ wykonuje się w tym przypadku przez 2 cykle rozkazowe.
Liczba cykli rozkazowych: 1/2
Składnia: IORLW k
Argumenty: k = 0...255
Operacja: W ← W | k
Modyfikowane znaczniki stanu: Z
Kod: 11 1000 kkkk kkkk
Opis: Zawartość akumulatora W zostaje poddana operacji alternatywy bitowej z 8-bitową stałą k. Wynik jest umieszczany w akumulatorze W.
Liczba cykli rozkazowych: 1
Składnia: IORWF f,d
Argumenty: f = 0...127, d = 0...1
Operacja: dest ← W | f
Modyfikowane znaczniki stanu: Z
Kod: 00 0100 dfff ffff
Opis: Zawartość akumulatora W zostaje poddana operacji alternatywy bitowej z rejestrem f. Jeśli d jest równe 0, to wynik zostanie umieszczony w akumulatorze W. Jeśli d jest równe 1, to wynik zostanie z powrotem umieszczony w rejestrze f.
Liczba cykli rozkazowych: 1
Składnia: LSLF f{,d}
Argumenty: f = 0...127, d = 0...1
Operacja:
C ← f[7]
dest[7:1] ← f[6:0]
dest[0] ← 0
Modyfikowane znaczniki stanu: C, Z
Kod: 11 0101 dfff ffff
Opis: Zawartość rejestru f zostaje bitowo przesunięta w lewo o jeden bit poprzez znacznik przeniesienia C. Do znacznika przeniesienia trafia najstarszy bit rejestru f, następnie bity są przesuwane o jedną pozycję w lewo. Do najmłodszego bitu wsuwane jest zero. Jeśli d jest równe 0, to wynik zostanie umieszczony w akumulatorze W. Jeśli d jest równe 1, to wynik zostanie z powrotem umieszczony w rejestrze f.

Liczba cykli rozkazowych: 1
Składnia: LSRF f{,d}
Argumenty: f = 0...127, d = 0...1
Operacja:
dest[7] ← 0
dest[6:0] ← f[7:1]
C ← f[0]
Modyfikowane znaczniki stanu: C, Z
Kod: 11 0110 dfff ffff
Opis: Zawartość rejestru f zostaje bitowo przesunięta w prawo o jeden bit poprzez znacznik przeniesienia C. Do najstarszego bitu wyniku trafia zero, następnie bity są przesuwane o jedną pozycję w prawo i umieszczane w młodszych 7 bitach wyniku. Do znacznika przeniesienia trafia najmłodszy bit rejestru f. Jeśli d jest równe 0, to wynik zostanie umieszczony w akumulatorze W. Jeśli d jest równe 1, to wynik zostanie z powrotem umieszczony w rejestrze f.

Liczba cykli rozkazowych: 1
Składnia: MOVF f,d
Argumenty: f = 0...127, d = 0...1
Operacja: dest ← f
Modyfikowane znaczniki stanu: Z
Kod: 00 1000 dfff ffff
Opis: Zostaje pobrany rejestr f. Jeśli d jest równe 0, to rejestr f zostanie umieszczony w akumulatorze W. Jeśli d jest równe 1, to wynik zostanie z powrotem umieszczony w rejestrze f. Jest to przydatne przy testowaniu stanu rejestru f, ponieważ w tej operacji ustawiany jest znacznik zera Z.
Liczba cykli rozkazowych: 1
Składnia (MPASM):
MOVIW
++FSRn
MOVIW --FSRn
MOVIW FSRn++
MOVIW FSRn--
MOVIW k[FSRn]
Składnia (XC8):
MOVIW ++FSRn
MOVIW --FSRn
MOVIW FSRn++
MOVIW FSRn--
MOVIW [k]FSRn
Argumenty:
n = 0...1
m = (00,01,10,11)
k = -32...31
Operacja:
W ← (INDFn)
Adres efektywny jest wyliczany jako
FSR + 1
(preinkrementacja)
FSR - 1 (predekrementacja)
FSR + k (przesunięcie względne o stałą k)
Po wykonaniu przesłania wartość użytego rejestru adresowania pośredniego FSR będzie równa:
FSR + 1 (wszystkie inkrementacje)
FSR - 1 (wszystkie dekrementacje)
niezmieniona (indeksowanie)
Modyfikowane znaczniki stanu: Z
| Kod (MOVIW n,mm): | 00 0000 0001 0nmm |
| Kod (MOVIW k[n]): | 11 1111 0nkk kkkk |
| Tryb | Składnia | mm |
| Preinkrementacja | ++FSRn | 00 |
| Predekrementacja | --FSRn | 01 |
| Postinkrementacja | FSRn++ | 10 |
| Postdekrementacja | FSRn-- | 11 |
Opis: Instrukcja ta powoduje załadowanie do akumulatora komórki pamięci wskazywanej przez wybrany rejestr wskaźnika FSR0 lub FSR1 (ang. File Select Register). Rejestry te są 16 bitowe i pozwalają adresować liniowo całą przestrzeń pamięci danych oraz pamięci programu (zobacz do danych producenta danego mikrokontrolera PIC) . Z rejestrami FSR skojarzone są dwa rejestry wirtualne INDF0 i INDF1. Nie są to rejestry fizyczne. Każda instrukcja adresująca rejestr INDFn w rzeczywistości uzyska dostęp do komórki pamięci o adresie w powiązanym z nim rejestrze FSRn.
Instrukcja MOVIW posiada dwie odmiany, które posiadają różną składnię:
MOVIW n,mm – wybiera rejestr
FSRn oraz tryb dostępu do pamięci mm, pokazany w tabelce powyżej. W asemblerze
MPASM instrukcje te zapisujemy jako:
MOVIW ++FSRn |
Zawartość rejestru FSRn zostaje zwiększona o 1, a następnie spod nowego adresu wskazywanego przez FSRn będzie pobrana dana i umieszczona w akumulatorze W. Jest to tzw. tryb preinkrementacji. | |
MOVIW --FSRn |
Zawartość rejestru FSRn zostaje zmniejszona o 1, a następnie spod nowego adresu wskazywanego przez FSRn będzie pobrana dana i umieszczona w akumulatorze W. Jest to tzw. tryb predekrementacji. | |
MOVIW FSRn++ |
Spod adresu wskazywanego przez rejestr FSRn zostaje pobrana dana i umieszczona w akumulatorze W. Następnie zawartość rejestru FSRn jest zwiększana o 1. Jest to tzw. tryb postinkrementacji. | |
MOVIW FSRn-- |
Spod adresu wskazywanego przez rejestr FSRn zostaje pobrana dana i umieszczona w akumulatorze W. Następnie zawartość rejestru FSRn jest zmniejszona o 1. Jest to tzw. tryb postdekrementacji. |
MOVIW k[FSRn] - wybiera rejestr FSRn,
następnie dodaje do jego zawartości stałą k i tak otrzymany adres zostaje użyty
do pobrania danej z pamięci. Dana jest umieszczana w akumulatorze W. Sam rejestr
FSRn nie jest zmieniany.
Zamiast FSRn można użyć INDFn, np: MOVIW --INDFn,
MOVIW k[INDFn] lub po prostu numeru n: MOVIW ++n,
MOVIW k[n].
Uwaga: w asemblerze wbudowanym w kompilator XC8 obowiązuje
składnia MOVIW [k]FSRn (tutaj Microchip
namieszał).
Zakres adresów przechowywanych w rejestrach FSRn wynosi 0000h...FFFFh. Jeśli operacja spowoduje wyjście poza ten zakres, to adres zostanie odpowiednio przewinięty:
0000h-- → FFFFh
FFFFh++ → 0000h
Zwiększanie/zmniejszanie adresu w FSRn nie wpływa na znaczniki stanu procesora.
Liczba cykli rozkazowych: 1/2
Jeśli najstarszy bit rejestru FSRn jest ustawiony na 1, to instrukcja wymaga dodatkowego cyklu.
Składnia: MOVLB k
Argumenty: k = 0...31
Operacja: BSR ← k
Modyfikowane znaczniki stanu: żaden
Kod: 00 0000 001k kkkk
Opis: 5-bitowa stała k jest umieszczana w rejestrze wyboru banku pamięci (ang. Bank Select Register BSR).
Liczba cykli rozkazowych: 1
Składnia: MOVLP k
Argumenty: k = 0...127
Operacja: PCLATH ← k
Modyfikowane znaczniki stanu: żaden
Kod: 11 0001 1kkk kkkk
Opis: 7-bitowa stała k jest umieszczana w rejestrze zatrzaskowym górnych bitów licznika programu PCLATH.
Liczba cykli rozkazowych: 1
Składnia: MOVLW k
Argumenty: k = 0...255
Operacja: W ← k
Modyfikowane znaczniki stanu: żaden
Kod: 11 0000 kkkk kkkk
Opis: 8-bitowa stała k jest umieszczana w rejestrze akumulatora W.
Liczba cykli rozkazowych: 1
Składnia: MOVWF f
Argumenty: f = 0...127
Operacja: f ← W
Modyfikowane znaczniki stanu: żaden
Kod: 00 0000 1fff ffff
Opis: Przesłanie danych z akumulatora W do rejestru f.
Liczba cykli rozkazowych: 1
Składnia (MPASM):
MOVWI
++FSRn
MOVWI --FSRn
MOVWI FSRn++
MOVWI FSRn--
MOVWI k[FSRn]
Składnia (XC8):
MOVWI ++FSRn
MOVWI --FSRn
MOVWI FSRn++
MOVWI FSRn--
MOVWI [k]FSRn
Argumenty:
n = 0...1
m = (00,01,10,11)
k = -32...31
Operacja:
(INDFn) ← W
Adres efektywny jest wyliczany jako
FSR + 1
(preinkrementacja)
FSR - 1 (predekrementacja)
FSR + k (przesunięcie względne o stałą k)
Po wykonaniu przesłania wartość użytego rejestru adresowania pośredniego FSR będzie równa:
FSR + 1 (wszystkie inkrementacje)
FSR - 1 (wszystkie dekrementacje)
niezmieniona (indeksowanie)
Modyfikowane znaczniki stanu: żaden
| Kod (MOVWI n,mm): | 00 0000 0001 1nmm |
| Kod (MOVWI k[n]): | 11 1111 1nkk kkkk |
| Tryb | Składnia | mm |
| Preinkrementacja | ++FSRn | 00 |
| Predekrementacja | --FSRn | 01 |
| Postinkrementacja | FSRn++ | 10 |
| Postdekrementacja | FSRn-- | 11 |
Opis: Instrukcja ta powoduje przesłanie zawartości akumulatora W do komórki pamięci wskazywanej przez wybrany rejestr wskaźnika FSR0 lub FSR1 (ang. File Select Register). Rejestry te są 16 bitowe i pozwalają adresować liniowo całą przestrzeń pamięci danych oraz pamięci programu (zobacz do danych producenta danego mikrokontrolera PIC) . Z rejestrami FSR skojarzone są dwa rejestry wirtualne INDF0 i INDF1. Nie są to rejestry fizyczne. Każda instrukcja adresująca rejestr INDFn w rzeczywistości uzyska dostęp do komórki pamięci o adresie w powiązanym z nim rejestrze FSRn.
Instrukcja MOVWI posiada dwie odmiany, które posiadają różną składnię:
MOVWI n,mm – wybiera rejestr
FSRn oraz tryb dostępu do pamięci mm, pokazany w tabelce powyżej. W asemblerze
MPASM instrukcje te zapisujemy jako:
MOVWI ++FSRn |
Zawartość rejestru FSRn zostaje zwiększona o 1, a następnie zawartość akumulatora W jest przesyłana do komórki o nowym adresie w FSRn. Jest to tzw. tryb preinkrementacji. | |
MOVWI --FSRn |
Zawartość rejestru FSRn zostaje zmniejszona o 1, a następnie zawartość akumulatora W jest przesyłana do komórki o nowym adresie w FSRn. Jest to tzw. tryb predekrementacji. | |
MOVWI FSRn++ |
Zawartość akumulatora jest umieszczana w komórce wskazywanej przez rejestr FSRn. Następnie zawartość rejestru FSRn jest zwiększana o 1. Jest to tzw. tryb postinkrementacji. | |
MOVWI FSRn-- |
Zawartość akumulatora jest umieszczana w komórce wskazywanej przez rejestr FSRn. Następnie zawartość rejestru FSRn jest zmniejszona o 1. Jest to tzw. tryb postdekrementacji. |
MOVWI k[FSRn] - wybiera rejestr FSRn,
następnie dodaje do jego zawartości stałą k i tak otrzymany adres zostaje użyty
do umieszczenia zawartości akumulatora W w komórce pamięci. Sam rejestr FSRn nie jest zmieniany.
Zamiast FSRn można użyć INDFn, np: MOVWI --INDFn,
MOVWI k[INDFn] lub po prostu numeru n: MOVWI ++n,
MOVWI k[n].
Uwaga: w asemblerze wbudowanym w kompilator XC8 obowiązuje
składnia MOVWI [k]FSRn (tutaj Microchip
namieszał).
Zakres adresów przechowywanych w rejestrach FSRn wynosi 0000h...FFFFh. Jeśli operacja spowoduje wyjście poza ten zakres, to adres zostanie odpowiednio przewinięty:
0000h-- → FFFFh
FFFFh++ → 0000h
Zwiększanie/zmniejszanie adresu w FSRn nie wpływa na znaczniki stanu procesora.
Liczba cykli rozkazowych: 1/2
Jeśli najstarszy bit rejestru FSRn jest ustawiony na 1, to instrukcja wymaga dodatkowego cyklu.
Składnia: NOP
Argumenty: brak
Operacja: brak działania
Modyfikowane znaczniki stanu: żaden
Kod: 00 0000 0000 0000
Opis: Instrukcja pusta, brak operacji.
Liczba cykli rozkazowych: 1
Składnia: OPTION
Argumenty: brak
Operacja: OPTION_REG ← W
Modyfikowane znaczniki stanu: żaden
Kod: 00 0000 0110 0010
Opis: Przesłanie danych z akumulatora W do rejestru OPTION_REG.
Liczba cykli rozkazowych: 1
Składnia: RESET
Argumenty: brak
Operacja: Wykonanie resetu mikrokontrolera. Resetuje znacznik nRI rejestru PCON.
Modyfikowane znaczniki stanu: żaden
Kod: 00 0000 0000 0001
Opis: Instrukcja umożliwia dokonanie resetu mikrokontrolera z poziomu programu.
Liczba cykli rozkazowych: 1
Składnia: RETFIE
Argumenty: brak
Operacja:
PC ← TOS
GIE ← 1
Modyfikowane znaczniki stanu: żaden
Kod: 00 0000 0000 1010
Opis: Powrót z przerwania. Adres powrotny jest pobierany ze szczytu stosu (TOS) i ładowany do rejestru licznika programu PC. Przerwania zostają włączone przez ustawienie bitu GIE (ang. Global Interrupt Enable) w INTCON[7]. Instrukcja wykonywana jest w ciągu 2 cykli rozkazowych.
Liczba cykli rozkazowych: 2
Składnia: RETLW k
Argumenty: k = 0...255
Operacja:
W ← k
PC ← TOS
Modyfikowane znaczniki stanu: żaden
Kod: 11 0100 kkkk kkkk
Opis: Powrót z podprogramu. 8-bitowa stała k zostaje umieszczona w akumulatorze W. Licznik programu PC zostaje załadowany adresem ze szczytu stosu TOS. Instrukcja wykonuje się przez 2 cykle.
Liczba cykli rozkazowych: 2
Składnia: RETURN
Argumenty: brak
Operacja: PC ← TOS
Modyfikowane znaczniki stanu: żaden
Kod: 00 0000 0000 1000
Opis: Powrót z podprogramu. Licznik programu PC zostaje załadowany adresem ze szczytu stosu TOS. Instrukcja zajmuje 2 cykle.
Liczba cykli rozkazowych: 2
Składnia: RLF f,d
Argumenty: f = 0...127, d = 0...1
Operacja: Zobacz na opis poniżej.
Modyfikowane znaczniki stanu: C
Kod: 00 1101 dfff ffff
Opis: Bity rejestru f są obracane w lewo poprzez znacznik przeniesienia. Jeśli d = 0, to wynik trafi do rejestru roboczego W, jeśli d = 1, to wynik trafi z powrotem do rejestru f.
Liczba cykli rozkazowych: 1
Składnia: RRF f,d
Argumenty: f = 0...127, d = 0...1
Operacja: Zobacz na opis poniżej.
Modyfikowane znaczniki stanu: C
Kod: 00 1100 dfff ffff
Opis: Bity rejestru f są obracane w prawo poprzez znacznik przeniesienia. Jeśli d = 0, to wynik trafi do rejestru roboczego W, jeśli d = 1, to wynik trafi z powrotem do rejestru f.
Liczba cykli rozkazowych: 1
Składnia: SLEEP
Argumenty: brak
Operacja:
WDT ← 00h
Preskaler WDT ← 0
TO ← 1
PD ← 0
Modyfikowane znaczniki stanu: żaden
Kod: 00 0000 0110 0011
Opis: Opis: Zostaje ustawiony znacznik zakończenia zliczania TO (ang. Time-out Status bit). Znacznik wyłączenia zasilania PD (ang. Power-down Status bit) jest zerowany. Licznik zegarowy i jego preskaler są zerowane. Procesor zostaje wprowadzony w tryb uśpienia z zatrzymanym oscylatorem. Szczegóły trybu uśpienia znajdziesz w dokumentacji danego mikrokontrolera.
Liczba cykli rozkazowych: 1
Składnia: SUBLW k
Argumenty: k = 0...255
Operacja: W ← k - W
Modyfikowane znaczniki stanu: C, DC, Z
Kod: 11 1100 kkkk kkkk
Opis: Zawartość akumulatora W zostaje odjęta od 8-bitowej stałej k (metodą uzupełnień do 2). Wynik jest umieszczany w akumulatorze W.
| C = 0 | W > k |
| C = 1 | W ≤ k |
| DC = 0 | W[3:0] > k[3:0] |
| DC = 1 | W[3:0] ≤ k[3:0] |
Liczba cykli rozkazowych: 1
Składnia: SUBWF f,d
Argumenty: f = 0...127, d = 0...1
Operacja: dest ← f - W
Modyfikowane znaczniki stanu: C, DC, Z
Kod: 00 0010 dfff ffff
Opis: Zawartość akumulatora W zostaje odjęta od rejestru f (metodą uzupełnień do 2). Jeśli d jest równe 0, to wynik zostanie umieszczony w akumulatorze W. Jeśli d jest równe 1, to wynik zostanie z powrotem umieszczony w rejestrze f.
| C = 0 | W > f |
| C = 1 | W ≤ f |
| DC = 0 | W[3:0] > f[3:0] |
| DC = 1 | W[3:0] ≤ f[3:0] |
Liczba cykli rozkazowych: 1
Składnia: SUBWFB f,d
Argumenty: f = 0...127, d = 0...1
Operacja: dest ← f - W - C
Modyfikowane znaczniki stanu: C, DC, Z
Kod: 11 1011 dfff ffff
Opis: Zawartość akumulatora W oraz pożyczka (zaprzeczony znacznik przeniesienia) zostają odjęte od rejestru f (metodą uzupełnień do 2). Jeśli d jest równe 0, to wynik zostanie umieszczony w akumulatorze W. Jeśli d jest równe 1, to wynik zostanie z powrotem umieszczony w rejestrze f.
Liczba cykli rozkazowych: 1
Składnia: SWAPF f,d
Argumenty: f = 0...127, d = 0...1
Operacja:
dest[7:4] ← f[3:0]
dest[3:0] ← f[7:4]
Modyfikowane znaczniki stanu: żaden
Kod: 00 1110 dfff ffff
Opis: Górna i dolna połówka (4 bity) rejestru f zostają zamienione miejscami. Jeśli d jest równe 0, to wynik zostanie umieszczony w akumulatorze W. Jeśli d jest równe 1, to wynik zostanie z powrotem umieszczony w rejestrze f.
Liczba cykli rozkazowych: 1
Składnia: TRIS f
Argumenty: f = 5...7
Operacja: rejestr TRIS f ← W
Modyfikowane znaczniki stanu: żaden
Kod: 00 0000 0110 0fff
Opis: Zawartość akumulatora W zostaje załadowana do rejestru TRIS f.
| f = 5 | Ładowany jest rejestr TRISA |
| f = 6 | Ładowany jest rejestr TRISB |
| f = 7 | Ładowany jest rejestr TRISC |
Liczba cykli rozkazowych: 1
Składnia: XORLW k
Argumenty: k = 0...255
Operacja: W ← W ^ k
Modyfikowane znaczniki stanu: Z
Kod: 11 1010 kkkk kkkk
Opis: Zawartość akumulatora W zostaje poddana operacji sumy modulo 2 z 8-bitową stałą k. Wynik jest umieszczany w akumulatorze W.
Liczba cykli rozkazowych: 1
Składnia: XORWF f,d
Argumenty: f = 0...127, d = 0...1
Operacja: dest ← W ^ f
Modyfikowane znaczniki stanu: Z
Kod: 00 0110 dfff ffff
Opis: Zawartość akumulatora W zostaje poddana operacji sumy modulo 2 z rejestrem f. Jeśli d jest równe 0, to wynik zostanie umieszczony w akumulatorze W. Jeśli d jest równe 1, to wynik zostanie z powrotem umieszczony w rejestrze f.
Liczba cykli rozkazowych: 1
![]() |
Zespół Przedmiotowy Chemii-Fizyki-Informatyki w I Liceum Ogólnokształcącym im. Kazimierza Brodzińskiego w Tarnowie ul. Piłsudskiego 4 ©2026 mgr Jerzy Wałaszek |
Materiały tylko do użytku dydaktycznego. Ich kopiowanie i powielanie jest dozwolone pod warunkiem podania źródła oraz niepobierania za to pieniędzy.
Pytania proszę przesyłać na adres email:
Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.
Informacje dodatkowe.