Serwis Edukacyjny w I-LO w Tarnowie ![]() Materiały dla uczniów liceum |
Wyjście Spis treści Wstecz Dalej Autor artykułu: mgr Jerzy Wałaszek |
©2025 mgr Jerzy Wałaszek |
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 ©2025 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.