Serwis Edukacyjny
w I-LO w Tarnowie
obrazek

Materiały dla uczniów liceum

  Wyjście       Spis treści       Wstecz       Dalej  

obrazek

Autor artykułu: mgr Jerzy Wałaszek
Konsultacje: Wojciech Grodowski, mgr inż. Janusz Wałaszek

©2024 mgr Jerzy Wałaszek
I LO w Tarnowie

obrazek

Mikrokontrolery

Rodzina podstawowa PIC

PIC10F200/202/204/206

Podsumowanie listy rozkazów maszynowych

obrazek

Educational and Non-Profit Use of Copyrighted Material:

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: (1) an academic report, thesis, or dissertation; (2) classroom handouts or textbook; or (3) a presentation or article that is solely educational in nature (e.g., technical article published in a magazine).

https://www.microchip.com/about-us/legal-information/copyright-usage-guidelines

SPIS TREŚCI
Podrozdziały

obrazek

Formaty instrukcji

Lista rozkazów mikrokontrolerów PIC10F20x jest wysoce ortogonalna i składa się z trzech głównych kategorii.

Każda instrukcja mikrokontrolerów PIC10F20x jest 12-bitowym słowem podzielonym na kod operacji (ang. opcode = operation code), który określa typ instrukcji oraz jeden lub więcej argumentów, które dalej z kolei określają operację wykonywaną przez daną instrukcję. Formaty każdej z tych kategorii przedstawia poniższy rysunek, natomiast opis pól znajduje się w tabelce:

Ogólne formaty instrukcji

Operacje bajtowe na zestawie rejestrów

d = 0, przeznaczeniem jest rejestr W
d = 1, przeznaczeniem jest rejestr f
f = 5-bitowy adres rejestru (0...31)

Operacje bitowe na rejestrach

b = 3-bitowy numer bitu (0...7)
f = 5-bitowy adres rejestru (0...31)

Operacje sterujące i operacje ze stałą
(z wyjątkiem GOTO)

k = 8-bitowa stała (0...255)

instrukcja GOTO

k = 9-bitowa stała (0...511)
Pole Opis
f Adres rejestru plikowego (0x00 ... 0x7F).
W Rejestr roboczy (akumulator).
b Adres bitu wewnątrz 8-bitowego rejestru.
k Pole literału, stałe dane lub etykieta.
x Pole o nieistotnej zawartości (0 lub 1).
Asembler wstawi w takie pole zero. Jest to zalecane dla kompatybilności z przyszłymi narzędziami Microchip'a.
d Wybór miejsca docelowego:
d = 0 (wynik trafi do W).
d = 1 (wynik trafi do rejestru plikowego f).
Standardem jest d = 1.
label Nazwa etykiety.
TOS Szczyt stosu (ang. Top-of-Stack).
PC Licznik programu (ang. Program Counter).
WDT Timer licznika zegarowego (ang. Watchdog Timer counter).
TO Bit zakończenia zliczania w WDT (ang. Time-out bit).
PD Bit wyłączenia zasilania (ang. Power-down bit).
dest Miejsce docelowe, albo rejestr W, albo określony rejestr plikowy.
{ } Opcje.
( ) Zawartość.
Przypisanie.
[ ] Pole bitowe rejestru.
kursywa termin zdefiniowany przez użytkownika

Dla instrukcji zorientowanych na bajty 'f' oznacza deskryptor rejestru plikowego, a 'd' oznacza desygnator rejestru docelowego. Desygnator rejestru plikowego określa rejestr plikowy używany przez daną instrukcję. Desygnator rejestru docelowego określa miejsce, do którego trafi wynik operacji. Jeśli 'd' ma wartość zero, to wynik jest umieszczany w rejestrze akumulatora W. Jeśli 'd' ma wartość 1, to wynik jest umieszczany w rejestrze plikowym określonym w instrukcji.

Dla instrukcji zorientowanych na bity 'b' oznacza desygnator pola bitowego, który wybiera bit przetwarzany w operacji, natomiast 'f' oznacza numer rejestru plikowego, w którym dany bit się znajduje.

Dla operacji na literałach oraz operacji sterujących 'k' oznacza 8- lub 9-bitową stałą lub wartość literału.

Wszystkie instrukcje wykonywane są w czasie pojedynczego cyklu rozkazowego, o ile test warunkowy w instrukcji jest prawdziwy lub zmieniany jest licznik programu (ang. Program Counter, PC) w wyniku działania instrukcji. W tym przypadku wykonanie zabiera dwa cykle rozkazowe. Jeden cykl rozkazowy składa się z czterech okresów oscylatora systemu. W ten sposób przy oscylatorze pracującym z częstotliwością 4MHz normalny czas wykonania instrukcji wynosi 1µs. Jeśli test warunkowy jest spełniony lub licznik rozkazu zostaje zmieniony w wyniku działania instrukcji, to czas wykonania wydłuża się do 2µs.

Liczby szesnastkowe przedstawiane są tutaj w formacie używanym w języku C/C++:

0xhhh

gdzie 'h' oznacza cyfrę szesnastkową (0...9, a...h/A...H).


Na początek:  podrozdziału   strony 

Podsumowanie zestawu instrukcji

Mnemonik, argumenty Opis Cykle 12-bitowy kod Znaczniki Uwagi
ADDWF
ANDWF
CLRF
CLRW
COMF
DECF
DECFSZ
INCF
INCFSZ
IORWF
MOVF
MOVWF
NOP
RLF
RRF
SUBWF
SWAPF
XORWF
f, d
f, d
f

f, d
f, d
f, d
f, d
f, d
f, d
f, d
f

f, d
f, d
f, d
f, d
f, d
Dodaj W i f
Logiczne AND W z f
Zeruj f
Zeruj W
Neguj f
Zmniejsz f o 1
Zmniejsz f o 1, pomiń przy 0
Zwiększ f o 1
Zwiększ f, pomiń przy 0
Logiczne OR W z f
Kopiuj f
Kopiuj W do f
Operacja pusta
Obróć f w lewo przez C
Obróć f w prawo przez C
Odejmij W od f
Zamień f
Logiczne OR W z f
1
1
1
1
1
1
1(2)
1
1(2)
1
1
1
1
1
1
1
1
1
0001
0001
0000
0000
0010
0000
0010
0010
0011
0001
0010
0000
0000
0011
0011
0000
0011
0001
11df
01df
011f
0100
01df
11df
11df
10df
11df
00df
00df
001f
0000
01df
00df
10df
10df
10df
ffff
ffff
ffff
0000
ffff
ffff
ffff
ffff
ffff
ffff
ffff
ffff
0000
ffff
ffff
ffff
ffff
ffff
C, DC, Z
Z
Z
Z
Z
Z
Żaden
Z
Żaden
Z
Z
Żaden
Żaden
C
C
C, DC, Z
Żaden
Z
1, 2, 4
2, 4
4


2, 4
2, 4
2, 4
2, 4
2, 4
2, 4
1, 4

2, 4
2, 4
1, 2, 4
2, 4
2, 4
OPERACJE BITOWE NA REJESTRACH PLIKOWYCH
BCF
BSF
BTFSC
BTFSS
f, b
f, b
f, b
f, b
Zeruj bit w f
Ustaw bit f
Testuj bit w f, pomiń przy wyzerowanym
Testuj bit w f, pomiń przy ustawionym
1
1
1(2)
1(2)
0100
0101
0110
0111
bbbf
bbbf
bbbf
bbbf
ffff
ffff
ffff
ffff
Żaden
Żaden
Żaden
Żaden
2, 4
2, 4
OPERACJE STERUJĄCE I LITERAŁOWE
ANDLW
CALL
CLRWDT
GOTO
IORLW
MOVLW
OPTION
RETLW
SLEEP
TRIS
XORLW
k
k

k
k
k

k

f
k
Logiczne AND stałej z W
Wywołaj podprogram
Zeruj timer licznika zegarowego
Skocz bezwarunkowo
Logiczne OR stałej z W
Wpisz stałą do W
Ładuj do rejestru OPTION
Wróć z podprogramu ze stałą w W
Przejdź w tryb uśpienia
Ładuj do rejestru TRIS
Logiczne OR stałej z W
1
2
1
2
1
1
1
2
1
1
1
1110
1001
0000
101k
1101
1100
0000
1000
0000
0000
1111
kkkk
kkkk
0000
kkkk
kkkk
kkkk
0000
kkkk
0000
0000
kkkk
kkkk
kkkk
0100
kkkk
kkkk
kkkk
0010
kkkk
0011
0fff
kkkk
Z
Żaden
TO, PD
Żaden
Z
Żaden
Żaden
Żaden
TO, PD
Żaden
Z

1







3
Uwagi: 1. 9-ty bit licznika programu jest zerowany przy każdej instrukcji zapisującej do niego z wyjątkiem GOTO. Zobacz do podrozdziału "Licznik programu PCL".
  2. Gdy rejestr we/wy zostaje zmodyfikowany jako funkcja samego siebie (np. MOVF PORTB, 1), to użytą wartością będzie aktualny stan końcówek portu. Na przykład, jeśli rejestr zatrzaskowy danych ma stan '1' dla końcówki skonfigurowanej jako wejście, a końcówka ta jest wysterowana stanem niskim przez zewnętrzne źródło, to wpisane z powrotem dane będą miały stan '0'.
  3. 3: Instrukcja TRIS f, gdzie f = 6, powoduje zapis zawartości rejestru roboczego W w rejestrach zatrzaskowych stanu wysokiej impedancji portu B. Bit '1' wymusza wysoką impedancję na odpowiadającej mu końcówce portu oraz wyłącza bufor wyjściowy.
  4. Jeśli ta instrukcja zostanie wykonana na rejestrze TMR0 (tam, gdzie dozwolone jest d = 1), to preskaler zostanie wyzerowany (jeśli jest przypisany do TMR0).

Na początek:  podrozdziału   strony 

Instrukcje

ADDWF (ang. Add W and f – Dodawanie W i f)

Składnia: ADDWF f,d

Argumenty: f = 0...31, d = 0...1

Kod: 0001 11df ffff

Operacja: dest ← W + f

Modyfikowane znaczniki stanu: C, DC, Z

Opis: Dodanie zawartości rejestru roboczego W (akumulatora) i rejestru f. Jeśli d jest równe 0, to wynik dodawania zostanie umieszczony w akumulatorze W. Jeśli d jest równe 1, to wynik zostanie z powrotem umieszczony w rejestrze f.


ANDLW (ang. AND Literal with W – Koniunkcja bitowa stałej z W)

Składnia: ANDLW k

Argumenty: k = 0...255

Kod: 1110 kkkk kkkk

Operacja: W ← W & k

Modyfikowane znaczniki stanu: Z

Opis: Zawartość akumulatora W zostaje poddana bitowej operacji koniunkcji logicznej z 8-bitową stałą k. Wynik jest umieszczany w akumulatorze W.


ANDWF (ang. AND W with f – Koniunkcja bitowa W z f)

Składnia: ANDWF f,d

Argumenty: f = 0...31, d = 0...1

Kod: 0001 01df ffff

Operacja: dest ← W & f

Modyfikowane znaczniki stanu: Z

Opis: Zawartość akumulatora W zostaje poddana bitowej operacji koniunkcji logicznej 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.


BCF (ang. Bit Clear f – Zerowanie bitu w f)

Składnia: BCF f,b

Argumenty: f = 0...31, b = 0...7

Kod: 0100 bbbf ffff

Operacja: f[b] ← 0

Modyfikowane znaczniki stanu: żaden

Opis: Bit b w rejestrze f jest zerowany.


BSF (ang. Bit Set f – Ustawianie bitu w f)

Składnia: BSF f,b

Argumenty: f = 0...31, b = 0...7

Kod: 0101 bbbf ffff

Operacja: f[b] ← 1

Modyfikowane znaczniki stanu: żaden

Opis: Bit b w rejestrze f jest ustawiany na 1.


BTFSC (ang. Bit Test f, Skip if Clear – Test bitu w f, pominięcie następnej instrukcji, jeśli jest wyzerowany)

Składnia: BTFSC f,b

Argumenty: f = 0...31, b = 0...7

Kod: 0110 bbbf ffff

Operacja: pominięcie następnej instrukcji, jeśli f[b] = 0

Modyfikowane znaczniki stanu: żaden

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 zajmuje w tym przypadku 2 cykle rozkazowe.


BTFSS (ang. Bit Test f, Skip if Set – Test bitu w f, pominięcie następnej instrukcji, jeśli jest ustawiony)

Składnia: BTFSS f,b

Argumenty: f = 0...31, b = 0...7

Kod: 0111 bbbf ffff

Operacja: pominięcie następnej instrukcji, jeśli f[b] = 1

Modyfikowane znaczniki stanu: żaden

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 zajmuje w tym przypadku 2 cykle rozkazowe.


CALL (ang. Subroutine Call – Wywołanie podprogramu)

Składnia: CALL k

Argumenty: k = 0...255

Kod: 1001 kkkk kkkk

Operacja:

TOS ← PC + 1
PC[7:0]  ← k
PC[10:9] ← STATUS[6:5]
PC[8] ← 0

Modyfikowane znaczniki stanu: żaden

Opis: Wywołanie podprogramu. Najpierw na stosie zostaje umieszczony adres powrotny (PC + 1). 8-bitowy adres bezpośredni zostaje załadowany do ośmiu najmłodszych bitów licznika programu (P[7:0]). Górne bity PC[10:9] są ładowane z bitów rejestru stanu STATUS[6:5], bit PC[8] jest zerowany. Wynika z tego, iż podprogram może znajdować się tylko w pierwszej połówce 512-słowowej strony pamięci programu. Instrukcja CALL zajmuje 2 cykle rozkazowe.


CLR (ang. Clear destination – Zerowanie rejestru docelowego)

Składnia: CLR f,d

Argumenty: f = 0...31, d = 0...1

Kod: 0000 01df ffff

Operacja:

dest ← 00h
Z  ← 1

Modyfikowane znaczniki stanu: Z

Opis: Bity rejestru docelowego zostają wyzerowane i jest ustawiany znacznik zera Z. Jeśli d = 0, to zerowany jest rejestr akumulatora W. Jeśli d = 1, to zerowany jest rejestr f.


CLRF (ang. Clear f – Zerowanie f)

Składnia: CLRF f

Argumenty: f = 0...31

Kod: 0000 011f ffff

Operacja:

f ← 00h
Z  ← 1

Modyfikowane znaczniki stanu: Z

Opis: Bity rejestru f zostają wyzerowane i jest ustawiany znacznik zera Z.


CLRW (ang. Clear W – Zerowanie W)

Składnia: CLRW

Argumenty: brak

Kod: 0000 0100 0000

Operacja:

W ← 00h
Z  ← 1

Modyfikowane znaczniki stanu: Z

Opis: Bity akumulatora W zostają wyzerowane i jest ustawiany znacznik zera Z.

Instrukcje CLRF i CLRW są tą samą instrukcją CLR f,d. Gdy d = 0, zerowany jest akumulator W. Gdy d = 1, zerowany jest rejestr f.


CLRWDT (ang. Clear Watchdog Timer – Zerowanie timera licznika zegarowego)

Składnia: CLRWDT

Argumenty: brak

Kod: 0000 0000 0100

Operacja:

WDT ← 00h
TO ← 1
PD ← 1

Modyfikowane znaczniki stanu: TO, PD

Opis: Instrukcja CLRWDT resetuje licznik zegarowy. Jeśli preskaler został przydzielony do licznika zegarowego, a nie do timera 0, to jest on również resetowany. Ustawiane są znaczniki stanu TO i PD (TO – Time-Out  – znacznik sygnalizujący zakończenie czasu zliczania; PD – Power-Down – znacznik sygnalizujący wyłączenie zasilania).


COMF (ang. Compliment f – Negacja f)

Składnia: COMF f,d

Argumenty:  f = 0...31, d = 0...1

Kod: 0010 01df ffff

Operacja: dest ←  f 

Modyfikowane znaczniki stanu: Z

Opis: Wartość bitowa rejestru f zostaje zanegowana. 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.


DECF (ang. Decrement f – Zmniejszenie f o 1)

Składnia: DECF f,d

Argumenty:  f = 0...31, d = 0...1

Kod: 0000 11df ffff

Operacja: dest ← f - 1

Modyfikowane znaczniki stanu: Z

Opis: Wartość rejestru f jest zmniejszana o 1. 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.


DECFSZ (ang. Decrement f, Skip if 0 – Zmniejszenie f o 1, pominięcie następnej instrukcji, jeśli zero)

Składnia: DECFSZ f,d

Argumenty:  f = 0...31, d = 0...1

Kod: 0010 11df ffff

Operacja: dest ← f - 1, pominięcie następnej instrukcji przy wyniku zero

Modyfikowane znaczniki stanu: żaden

Opis: Wartość rejestru f jest zmniejszana o 1. 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 zerowy, to zostaje pominięta następna instrukcja, czyli następna instrukcja pobrana w czasie wykonywania instrukcji bieżącej (nakładkowanie) jest usuwana z kolejki i zamiast niej mikroprocesor wykonuje instrukcję pustą NOP, co powoduje, iż instrukcja DECFSZ zajmuje w tym przypadku 2 cykle rozkazowe.


GOTO (ang. Unconditional Branch – Skok bezwarunkowy)

Składnia: GOTO k

Argumenty:  k = 0...511

Kod: 101k kkkk kkkk

Operacja:

PC[8:0] ← k
PC[10:9] ← STATUS[6:5]

Modyfikowane znaczniki stanu: żaden

Opis: Instrukcja GOTO jest skokiem bezwarunkowym do nowego miejsca w programie. 9-bitowy adres natychmiastowy zostaje załadowany do dziewięciu najmłodszych bitów rejestru licznika programu PC[8:0]. Górne bity PC są ładowane z bitów rejestru stanu STATUS[6:5]. Instrukcja GOTO zajmuje dwa cykle rozkazowe.


INCF (ang. Increment f – Zwiększenie f o 1)

Składnia: DINCF f,d

Argumenty:  f = 0...31, d = 0...1

Kod: 0010 10df ffff

Operacja: dest ← f + 1

Modyfikowane znaczniki stanu: Z

Opis: Wartość rejestru f jest zwiększana o 1. 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.


INCFSZ (ang. Increment f, Skip if 0 – Zwiększenie f o 1, pominięcie następnej instrukcji, jeśli zero)

Składnia: INCFSZ f,d

Argumenty:  f = 0...31, d = 0...1

Kod: 0011 11df ffff

Operacja: dest ← f + 1, pominięcie następnej instrukcji przy wyniku zero

Modyfikowane znaczniki stanu: żaden

Opis: Wartość rejestru f jest zwiększana o 1. 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 zerowy, to zostaje pominięta następna instrukcja, czyli następna instrukcja pobrana w czasie wykonywania instrukcji bieżącej (nakładkowanie) jest usuwana z kolejki i zamiast niej mikroprocesor wykonuje instrukcję pustą NOP, co powoduje, iż instrukcja INCFSZ zajmuje w tym przypadku 2 takty zegara.


IORLW (ang. Inclusive OR Literal with W – Alternatywa bitowa stałej z W)

Składnia: IORLW k

Argumenty: k = 0...255

Kod: 1101 kkkk kkkk

Operacja: W ← W | k

Modyfikowane znaczniki stanu: Z

Opis: Zawartość akumulatora W zostaje poddana bitowej operacji alternatywy logicznej z 8-bitową stałą k. Wynik jest umieszczany w akumulatorze W.


IORWF (ang. Inclusive OR W with f – Alternatywa bitowa W z f)

Składnia: IORWF f,d

Argumenty: f = 0...31, d = 0...1

Kod: 0001 00df ffff

Operacja: dest ← W | f

Modyfikowane znaczniki stanu: Z

Opis: Wartość akumulatora W zostaje poddana bitowej alternatywie logicznej 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.


MOVF (ang. Move f – Przesłanie f)

Składnia: MOVF f,d

Argumenty: f = 0...31, d = 0...1

Kod: 0010 00df ffff

Operacja: dest ← f

Modyfikowane znaczniki stanu: Z

Opis: Zawartość rejestru f jest kopiowana do rejestru przeznaczenia. Jeśli d jest równe 0, to rejestrem przeznaczenia jest akumulator W. Jeśli d jest równe 1, to rejestrem przeznaczenia jest rejestr f. Opcja d = 1 jest wykorzystywana do sprawdzania stanu rejestru f, ponieważ jest ustawiany znacznik zera Z.


MOVLW (ang. Move Literal to W – Załadowanie stałej do W)

Składnia: MOVLW k

Argumenty: k = 0...255

Kod: 1100 kkkk kkkk

Operacja: W ← k

Modyfikowane znaczniki stanu: żaden

Opis: 8-bitowa stała jest ładowana do rejestru akumulatora W.


MOVWF (ang. Move W to f – Przesłanie akumulatora W do f)

Składnia: MOVLW k

Argumenty: k = 0...255

Kod: 0000 001f ffff

Operacja: f ← W

Modyfikowane znaczniki stanu: żaden

Opis: Umieszczenie danych W w rejestrze f.


NOP (ang. No Operation – Instrukcja pusta)

Składnia: NOP

Argumenty: brak

Kod: 0000 0000 0000

Operacja: brak

Modyfikowane znaczniki stanu: żaden

Opis: Instrukcja nie wykonuje żadnej operacji. Zajmuje jeden takt zegara. W rzeczywistości jest to instrukcja MOVWF 0,0, która umieszcza W w W.


OPTION (ang. Load OPTION Register – Załadowanie rejestru OPTION)

Składnia: OPTION

Argumenty: brak

Kod: 0000 0000 0010

Operacja: Option ← W

Modyfikowane znaczniki stanu: żaden

Opis: Zawartość rejestru W jest ładowana do rejestru OPTION.


RETLW (ang. Return with Literal in W – Powrót z podprogramu ze stałą w W)

Składnia: RETLW k

Argumenty: k = 0...255

Kod: 1000 kkkk kkkk

Operacja:

W ← k
PC ← TOS

Modyfikowane znaczniki stanu: żaden

Opis: Do rejestru akumulatora W zostaje załadowana 8-bitowa stała k. Do rejestru licznika programu zostaje załadowany adres powrotny ze szczytu stosu. Instrukcja zajmuje 2 cykle rozkazowe.


RLF (ang. Rotate Left f through Carry – Obrót w lewo bitów f poprzez przeniesienie)

Składnia: RLF f,d

Argumenty: f = 0...31, d = 0...1

Kod: 0011 01df ffff

Operacja:

Modyfikowane znaczniki stanu: C

Opis: Zawartość rejestru f jest obracana bitowo w lewo poprzez znacznik przeniesienia. 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.


RRF (ang. Rotate Right f through Carry – Obrót w prawo bitów f poprzez przeniesienie)

Składnia: RRF f,d

Argumenty: f = 0...31, d = 0...1

Kod: 0011 00df ffff

Operacja:

Modyfikowane znaczniki stanu: C

Opis: Zawartość rejestru f jest obracana bitowo w prawo poprzez znacznik przeniesienia. 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.


SLEEP (ang. Enter SLEEP Mode – Wejście w tryb uśpienia)

Składnia: SLEEP

Argumenty: brak

Kod: 0000 0000 0011

Operacja:

WDT ← 00h
Preskaler WDT ← 0
TO ← 1
PD ← 0

Modyfikowane znaczniki stanu: TO, PD, RBWUF

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 znajdziesz w podrozdziale "Tryb wyłączenia zasilania".


SUBWF (ang. Subtract W from f – Odejmowanie W od f)

Składnia: SUBWF f,d

Argumenty: f = 0...31, d = 0...1

Kod: 0000 10df ffff

Operacja: dest ← f - W

Modyfikowane znaczniki stanu: C, DC, Z

Opis: Odejmowanie (metodą uzupełnień do 2) rejestru akumulatora W od rejestru f. Jeśli d jest równe 0, to wynik odejmowania zostanie umieszczony w akumulatorze W. Jeśli d jest równe 1, to wynik zostanie z powrotem umieszczony w rejestrze f.


SWAPF (ang. Swap Nibbles in f – Zamiana ze sobą połówek f)

Składnia: SWAPF f,d

Argumenty: f = 0...31, d = 0...1

Kod: 0011 10df ffff

Operacja:

dest[7:4] ← f[3:0]
dest[3:0] ← f[7:4]

Modyfikowane znaczniki stanu: żadne

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.


TRIS (ang. Load TRIS Register – Załadowanie rejestru TRIS)

Składnia: TRIS f

Argumenty: f = 6...7

Kod: 0000 0000 0fff

Operacja: rejestr TRIS f ← W

Modyfikowane znaczniki stanu: żadne

Opis: Wybrany rejestr TRIS f zostaje załadowany zawartością akumulatora W.


XORLW (ang. Exclusive OR Literal with W – Suma modulo 2 stałej z W)

Składnia: XORLW k

Argumenty: k = 0...255

Kod: 1111 kkkk kkkk

Operacja: W ← k ^ W

Modyfikowane znaczniki stanu: Z

Opis: Zawartość rejestru akumulatora W zostaje poddana operacji sumy modulo 2 ze stałą k. Wynik jest umieszczany w rejestrze W.


XORWF (ang. Exclusive OR W with f – Suma modulo 2 W z f)

Składnia: XORWF f,d

Argumenty: f = 0...31, d = 0...1

Kod: 0001 10df ffff

Operacja: dest ← W ^ f

Modyfikowane znaczniki stanu: Z

Opis: Zawartość rejestru 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.


Na początek:  podrozdziału   strony 

Zespół Przedmiotowy
Chemii-Fizyki-Informatyki

w I Liceum Ogólnokształcącym
im. Kazimierza Brodzińskiego
w Tarnowie
ul. Piłsudskiego 4
©2024 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: i-lo@eduinf.waw.pl

Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.

Informacje dodatkowe.