Serwis Edukacyjny
Nauczycieli
w I-LO w Tarnowie

Do strony głównej I LO w Tarnowie

Materiały dla uczniów liceum

  Wyjście       Spis treści       Poprzedni       Następny  

©2019 mgr Jerzy Wałaszek
I LO w Tarnowie

pic

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

 

 

Mikrokontrolery

Instrukcje mikrokontrolerów AVR

BCLR ... BST

Rozdziały artykułu:
Wstęp
Teoria
Warsztat
Elementy
Projekty
Mikrokontrolery
    ATtiny4/5/9/10
    ATtiny11/12
    ATtiny13
    ATtiny15
    INSTRUKCJE AVR
        Informacje wstępne
        A
        B
        C
        D E F I J
        L
        M N O P R
        S T W
Zawartość:
BCLR – Zerowanie bitu w SREG
BLD – Ładowanie bitu T z SREG do bitu w rejestrze
BRBC – Skok warunkowy przy wyzerowanym bicie w SREG
BRBS – Skok warunkowy przy ustawionym bicie w SREG
BRCC – Skok warunkowy przy braku przeniesienia
BRCS – Skok warunkowy przy przeniesieniu
BREAK – Przerwa
BREQ – Skok warunkowy, gdy równe
BRGE – Skok warunkowy, gdy większe lub równe (ze znakiem)
BRHC – Skok warunkowy przy wyzerowanym znaczniku H
BRHS – Skok warunkowy przy ustawionym znaczniku H
BRID – Skok warunkowy przy wyłączonych przerwaniach
BRIE – Skok warunkowy przy włączonych przerwaniach
BRLO – Skok warunkowy, gdy poniżej (bez znaku)
BRLT – Skok warunkowy, gdy mniejsze niż (ze znakiem)
BRMI – Skok warunkowy przy minusie
BRNE – Skok warunkowy, jeśli różne
BRPL – Skok warunkowy przy plusie
BRSH – Skok względny, gdy większe lub równe (bez znaku)
BRTC – Skok warunkowy, jeśli T jest wyzerowane
BRTS – Skok warunkowy, jeśli T ustawione
BRVC – Skok warunkowy przy braku nadmiaru
BRVS – Skok warunkowy przy nadmiarze
BSET – Ustawianie bitu w SREG
BST – Zapisanie bitu z rejestru w znaczniku T

Educational and Non-Profit Use ofCopyrighted 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

BCLR – Bit Clear in SREG – Zerowanie bitu w SREG

Opis

Zeruje pojedynczy znacznik w rejestrze stanu SREG.
 

Działanie

                 
SREG(s) ← 0

Składnia

 

Argumenty

 

Licznik rozkazów

BCLR s   0 ≤ s ≤7   PC ← PC + 1

16-bitowy kod instrukcji

1001
0100
1sss
1000

Zmiany znaczników w rejestrze stanu (SREG)

   I     T     H     S     V     N     Z     C  
X X X X X X X X
I: 0, jeśli s = 7; w przeciwnym wypadku bez zmian
T: 0, jeśli s = 6; w przeciwnym wypadku bez zmian
H: 0, jeśli s = 5; w przeciwnym wypadku bez zmian
S: 0, jeśli s = 4; w przeciwnym wypadku bez zmian
V: 0, jeśli s = 3; w przeciwnym wypadku bez zmian
N: 0, jeśli s = 2; w przeciwnym wypadku bez zmian
Z: 0, jeśli s = 1; w przeciwnym wypadku bez zmian
C: 0, jeśli s = 0; w przeciwnym wypadku bez zmian

Przykładowy kod:

bclr 0 ; Zeruj znacznik przeniesienia
bclr 7 ; Wyłącz przerwania

Liczba słów: 1 (2 bajty)

Cykle: 1

 

BLD – Bit Load from the T Flag in SREG to a Bit in Register – Ładowanie bitu ze znacznika T w SREG do bitu w rejestrze

Opis

Kopiuje znacznik T w SREG (rejestr stanu) do bitu b w rejestrze Rd.
 

Działanie

                 
Rd(b) ← T

Składnia

 

Argumenty

 

Licznik rozkazów

BLD Rd,b   0 ≤ d ≤ 31, 0 ≤ b ≤7   PC ← PC + 1

16-bitowy kod instrukcji

1111
100d
dddd
0bbb

Zmiany znaczników w rejestrze stanu (SREG)

   I     T     H     S     V     N     Z     C  

Przykładowy kod:

         ; Kopiuj bit
bst r1,2 ; Umieść bit 2 z r1 w znaczniku T
bld r0,4 ; Załaduj znacznik T do bitu 4 w r0

Liczba słów: 1 (2 bajty)

Cykle: 1

 

BRBC – Branch if Bit in SREG is Cleared – Skok warunkowy przy wyzerowanym bicie w SREG

Opis

Warunkowy skok względny. Testuje pojedynczy bit w rejestrze stanu SREG i skacze względem licznika rozkazów PC, jeśli testowany bit jest wyzerowany. Instrukcja ta powoduje skok względem licznika rozkazów PC w obu kierunkach (PC - 63 ≤ adres docelowy ≤ PC + 64). Parametr k jest przesunięciem od adresu w PC i kodowany jest w U2.
 

Działanie

                 
Jeśli SREG(s) = 0, to PC ← PC + k + 1, inaczej PC ← PC + 1

Składnia

 

Argumenty

 

Licznik rozkazów

BRBC s,k   0 ≤ s ≤ 7, -64 ≤ k ≤ +63   PC ← PC + k + 1, jeśli warunek prawdziwy
PC ← PC + 1, jeśli warunek fałszywy

16-bitowy kod instrukcji

1111
01kk
kkkk
ksss

Zmiany znaczników w rejestrze stanu (SREG)

   I     T     H     S     V     N     Z     C  

Przykładowy kod:

        cpi r20,5    ; Porównaj r20 z wartością 5
        brbc 1,noteq ; Skocz, jeśli znacznik zera wyzerowany
        ...
noteq:  nop          ; Adres docelowy skoku (nic nie rób)

Liczba słów: 1 (2 bajty)

Cykle: 1, jeśli warunek fałszywy; 2, jeśli warunek prawdziwy

 

BRBS – Branch if Bit in SREG is Set – Skok warunkowy przy ustawionym bicie w SREG

Opis

Warunkowy skok względny. Testuje pojedynczy bit w rejestrze stanu SREG i skacze względem licznika rozkazów PC, jeśli testowany bit jest ustawiony. Instrukcja ta powoduje skok względem licznika rozkazów PC w obu kierunkach (PC - 63 ≤ adres docelowy ≤ PC + 64). Parametr k jest przesunięciem od adresu w PC i kodowany jest w U2.
 

Działanie

                 
Jeśli SREG(s) = 1, to PC ← PC + k + 1, inaczej PC ← PC + 1

Składnia

 

Argumenty

 

Licznik rozkazów

BRBS s,k   0 ≤ s ≤ 7, -64 ≤ k ≤ +63   PC ← PC + k + 1, jeśli warunek prawdziwy
PC ← PC + 1, jeśli warunek fałszywy

16-bitowy kod instrukcji

1111
00kk
kkkk
ksss

Zmiany znaczników w rejestrze stanu (SREG)

   I     T     H     S     V     N     Z     C  

Przykładowy kod:

        bst r0,3      ; Załaduj bit T bitem 3 z r0
        brbs 6,bitset ; Skocz, jeśli bit T był ustawiony
        ...
bitset: nop           ; Miejsce docelowe skoku (nic nie rób)

Liczba słów: 1 (2 bajty)

Cykle: 1, jeśli warunek fałszywy; 2, jeśli warunek prawdziwy

 

BRCC – Branch if Carry Cleared – Skok warunkowy przy braku przeniesienia

Opis

Warunkowy skok względny. Testuje znacznik przeniesienia C w rejestrze stanu SREG i skacze względem licznika rozkazów PC, jeśli znacznik C jest wyzerowany (brak przeniesienia). Instrukcja ta powoduje skok względem licznika rozkazów PC w obu kierunkach (PC - 63 ≤ adres docelowy ≤ PC + 64). Parametr k jest przesunięciem od adresu w PC i kodowany jest w U2. (Ekwiwalent instrukcji BRBC 0,k).
 

Działanie

                 
Jeśli C = 0, to PC ← PC + k + 1, inaczej PC ← PC + 1

Składnia

 

Argumenty

 

Licznik rozkazów

BRCC k   -64 ≤ k ≤ +63   PC ← PC + k + 1, jeśli warunek prawdziwy
PC ← PC + 1, jeśli warunek fałszywy

16-bitowy kod instrukcji

1111
01kk
kkkk
k000

Zmiany znaczników w rejestrze stanu (SREG)

   I     T     H     S     V     N     Z     C  

Przykładowy kod:

         add r22,r23  ; Dodaj r23 do r22
         brcc nocarry ; Skocz przy braku przeniesienia
         ...
nocarry: nop          ; Miejsce docelowe skoku (nic nie rób)

Liczba słów: 1 (2 bajty)

Cykle: 1, jeśli warunek fałszywy; 2, jeśli warunek prawdziwy

 

BRCS – Branch if Carry Set – Skok warunkowy przy przeniesieniu

Opis

Warunkowy skok względny. Testuje znacznik przeniesienia C w rejestrze stanu SREG i skacze względem licznika rozkazów PC, jeśli znacznik C jest ustawiony (obecność przeniesienia). Instrukcja ta powoduje skok względem licznika rozkazów PC w obu kierunkach (PC - 63 ≤ adres docelowy ≤ PC + 64). Parametr k jest przesunięciem od adresu w PC i kodowany jest w U2. (Ekwiwalent instrukcji BRBS 0,k).
 

Działanie

                 
Jeśli C = 1, to PC ← PC + k + 1, inaczej PC ← PC + 1

Składnia

 

Argumenty

 

Licznik rozkazów

BRCS k   -64 ≤ k ≤ +63   PC ← PC + k + 1, jeśli warunek prawdziwy
PC ← PC + 1, jeśli warunek fałszywy

16-bitowy kod instrukcji

1111
00kk
kkkk
k000

Zmiany znaczników w rejestrze stanu (SREG)

   I     T     H     S     V     N     Z     C  

Przykładowy kod:

       cpi r26,$56 ; Porównaj r26 ze stałą $56
       brcs carry  ; Skocz przy przeniesieniu
       ...
carry: nop         ; Miejsce docelowe skoku (nic nie rób)

Liczba słów: 1 (2 bajty)

Cykle: 1, jeśli warunek fałszywy; 2, jeśli warunek prawdziwy

 

BREAK – Break – Przerwa

Opis

Instrukcja BREAK używana jest przez zintegrowany system uruchomieniowy (ang. On-Chip Debugger) i zwykle nie korzysta się z niej w aplikacji końcowej. Gdy zostanie wykonana instrukcja BREAK, mikroprocesor mikrokontrolera przechodzi w tryb zatrzymania (ang. Stopped Mode). Pozwala to zintegrowanemu debuggerowi na dostęp do wewnętrznych zasobów.

Jeśli jest ustawiony jakikolwiek bit blokujący lub nie został zaprogramowany bit bezpiecznikowy JTAGEN ani OCDEN, to mikroprocesor będzie traktował instrukcję BREAK jak instrukcję NOP i nie wejdzie w tryb zatrzymania.

Instrukcja ta nie jest dostępna na wszystkich mikrokontrolerach AVR. Sprawdź w danych technicznych konkretnego mikrokontrolera.

 

Działanie

                 
Przerwa dla zintegrowanego systemu uruchomieniowego

Składnia

 

Argumenty

 

Licznik rozkazów

BREAK   brak   PC ← PC + 1

16-bitowy kod instrukcji

1001
0101
1001
1000

Zmiany znaczników w rejestrze stanu (SREG)

   I     T     H     S     V     N     Z     C  

Liczba słów: 1 (2 bajty)

Cykle: 1

 

BREQ – Branch if Equal – Skok warunkowy, gdy równe

Opis

Warunkowy skok względny. Testuje znacznik zera Z w SREG i skacze względem licznika rozkazów PC, jeśli Z jest ustawiony na 1. Jeśli ta instrukcja zostanie wykonana bezpośrednio po jednej z instrukcji CP, CPI, SUB lub SUBI, to skok będzie wykonany wtedy i tylko wtedy gdy liczba binarna bez znaku lub ze znakiem w rejestrze Rd była równa liczbie binarnej ze lub bez znaku w rejestrze Rr. Instrukcja skacze względem PC w obu kierunkach (PC - 63 ≤ adres docelowy ≤ PC + 64). Parametr k jest przesunięciem od PC i jest liczbą ze znakiem w kodzie U2. (Ekwiwalent instrukcji BRBS 1,k).
 

Działanie

                 
Jeśli Z = 1, to PC ← PC + k + 1, inaczej PC ← PC + 1

Składnia

 

Argumenty

 

Licznik rozkazów

BREQ k   -64 ≤ k ≤ +63   PC ← PC + k + 1, jeśli warunek prawdziwy
PC ← PC + 1, jeśli warunek fałszywy

16-bitowy kod instrukcji

1111
00kk
kkkk
k001

Zmiany znaczników w rejestrze stanu (SREG)

   I     T     H     S     V     N     Z     C  

Przykładowy kod:

       cp r1,r0   ; Porównaj rejestry r1 i r0
       breq equal ; Skocz, jeśli rejestry są równe
       ...
equal: nop        ; Miejsce docelowe skoku (nic nie rób)

Liczba słów: 1 (2 bajty)

Cykle: 1, jeśli warunek fałszywy; 2, jeśli warunek prawdziwy

 

BRGE – Branch if Greater or Equal (Signed) – Skok warunkowy, gdy większe lub równe (liczby ze znakiem)

Opis

Warunkowy skok względny. Testuje znacznik znaku S w SREG i skacze względem licznika rozkazów PC, jeśli S jest wyzerowany. Jeśli ta instrukcja zostanie wykonana bezpośrednio po jednej z instrukcji CP, CPI, SUB lub SUBI, to skok będzie wykonany wtedy i tylko wtedy gdy liczba binarna ze znakiem w rejestrze Rd była większa lub równa liczbie binarnej ze znakiem w rejestrze Rr. Instrukcja skacze względem PC w obu kierunkach (PC - 63 ≤ adres docelowy ≤ PC + 64). Parametr k jest przesunięciem od PC i jest liczbą ze znakiem w kodzie U2. (Ekwiwalent instrukcji BRBC 4,k).
 

Działanie

                 
Jeśli S = 0, to PC ← PC + k + 1, inaczej PC ← PC + 1

Składnia

 

Argumenty

 

Licznik rozkazów

BRGE k   -64 ≤ k ≤ +63   PC ← PC + k + 1, jeśli warunek prawdziwy
PC ← PC + 1, jeśli warunek fałszywy

16-bitowy kod instrukcji

1111
01kk
kkkk
k100

Zmiany znaczników w rejestrze stanu (SREG)

   I     T     H     S     V     N     Z     C  

Przykładowy kod:

         cp r11,r12   ; Porównaj rejestry r11 i r12
         brge greateq ; Skocz, jeśli r11 ≥ r12 (ze znakiem)
         ...
greateq: nop          ; Miejsce docelowe skoku (nic nie rób)

Liczba słów: 1 (2 bajty)

Cykle: 1, jeśli warunek fałszywy; 2, jeśli warunek prawdziwy

 

BRHC – Branch if Half Carry Flag is Cleared – Skok warunkowy przy wyzerowanym znaczniku przeniesienia połówkowego

Opis

Warunkowy skok względny. Testuje znacznik przeniesienia połówkowego H w SREG i skacze względem licznika rozkazów PC, jeśli H jest wyzerowany. Instrukcja skacze względem PC w obu kierunkach (PC - 63 ≤ adres docelowy ≤ PC + 64). Parametr k jest przesunięciem od PC i jest liczbą ze znakiem w kodzie U2. (Ekwiwalent instrukcji BRBC 5,k).
 

Działanie

                 
Jeśli H = 0, to PC ← PC + k + 1, inaczej PC ← PC + 1

Składnia

 

Argumenty

 

Licznik rozkazów

BRHC k   -64 ≤ k ≤ +63   PC ← PC + k + 1, jeśli warunek prawdziwy
PC ← PC + 1, jeśli warunek fałszywy

16-bitowy kod instrukcji

1111
01kk
kkkk
k101

Zmiany znaczników w rejestrze stanu (SREG)

   I     T     H     S     V     N     Z     C  

Przykładowy kod:

        brhc hclear ; Skocz, jeśli przeniesienie połówkowe wyzerowane
        ...
hclear: nop         ; Miejsce docelowe skoku (nic nie rób)

Liczba słów: 1 (2 bajty)

Cykle: 1, jeśli warunek fałszywy; 2, jeśli warunek prawdziwy

 

BRHS – Branch if Half Carry Flag is Set – Skok warunkowy przy ustawionym znaczniku przeniesienia połówkowego

Opis

Warunkowy skok względny. Testuje znacznik przeniesienia połówkowego H w SREG i skacze względem licznika rozkazów PC, jeśli H jest ustawiony na 1.Instrukcja skacze względem PC w obu kierunkach (PC - 63 ≤ adres docelowy ≤ PC + 64). Parametr k jest przesunięciem od PC i jest liczbą ze znakiem w kodzie U2. (Ekwiwalent instrukcji BRBC 5,k).
 

Działanie

                 
Jeśli H = 1, to PC ← PC + k + 1, inaczej PC ← PC + 1

Składnia

 

Argumenty

 

Licznik rozkazów

BRHS k   -64 ≤ k ≤ +63   PC ← PC + k + 1, jeśli warunek prawdziwy
PC ← PC + 1, jeśli warunek fałszywy

16-bitowy kod instrukcji

1111
00kk
kkkk
k101

Zmiany znaczników w rejestrze stanu (SREG)

   I     T     H     S     V     N     Z     C  

Przykładowy kod:

      brhs hset ; Skocz, jeśli przeniesienie połówkowe ustawione
      ...
hset: nop       ; Miejsce docelowe skoku (nic nie rób)

Liczba słów: 1 (2 bajty)

Cykle: 1, jeśli warunek fałszywy; 2, jeśli warunek prawdziwy

 

BRID – Branch if Global Interrupt is Disabled – Skok warunkowy przy wyłączonych przerwaniach

Opis

Warunkowy skok względny. Testuje znacznik globalnego uaktywniania przerwań I w SREG i skacze względem licznika rozkazów PC, jeśli I jest wyzerowane. Instrukcja skacze względem PC w obu kierunkach (PC - 63 ≤ adres docelowy ≤ PC + 64). Parametr k jest przesunięciem od PC i jest liczbą ze znakiem w kodzie U2. (Ekwiwalent instrukcji BRBC 7,k).
 

Działanie

                 
Jeśli I = 0, to PC ← PC + k + 1, inaczej PC ← PC + 1

Składnia

 

Argumenty

 

Licznik rozkazów

BRID k   -64 ≤ k ≤ +63   PC ← PC + k + 1, jeśli warunek prawdziwy
PC ← PC + 1, jeśli warunek fałszywy

16-bitowy kod instrukcji

1111
01kk
kkkk
k111

Zmiany znaczników w rejestrze stanu (SREG)

   I     T     H     S     V     N     Z     C  

Przykładowy kod:

        brid intdis ; Skocz, jeśli przerwania są wyłączone
        ...
intdis: nop         ; Miejsce docelowe skoku (nic nie rób)

Liczba słów: 1 (2 bajty)

Cykle: 1, jeśli warunek fałszywy; 2, jeśli warunek prawdziwy

 

BRIE – Branch if Global Interrupt is Enables – Skok warunkowy przy włączonych przerwaniach

Opis

Warunkowy skok względny. Testuje znacznik globalnego uaktywniania przerwań I w SREG i skacze względem licznika rozkazów PC, jeśli I jest ustawione na 1. Instrukcja skacze względem PC w obu kierunkach (PC - 63 ≤ adres docelowy ≤ PC + 64). Parametr k jest przesunięciem od PC i jest liczbą ze znakiem w kodzie U2. (Ekwiwalent instrukcji BRBS 7,k).
 

Działanie

                 
Jeśli I = 1, to PC ← PC + k + 1, inaczej PC ← PC + 1

Składnia

 

Argumenty

 

Licznik rozkazów

BRIE k   -64 ≤ k ≤ +63   PC ← PC + k + 1, jeśli warunek prawdziwy
PC ← PC + 1, jeśli warunek fałszywy

16-bitowy kod instrukcji

1111
00kk
kkkk
k111

Zmiany znaczników w rejestrze stanu (SREG)

   I     T     H     S     V     N     Z     C  

Przykładowy kod:

      brie inten ; Skocz, jeśli przerwania są włączone
      ...
inten: nop       ; Miejsce docelowe skoku (nic nie rób)

Liczba słów: 1 (2 bajty)

Cykle: 1, jeśli warunek fałszywy; 2, jeśli warunek prawdziwy

 

BRLO – Branch if Lower (Unsigned) – Skok warunkowy, gdy poniżej (bez znaku)

Opis

Warunkowy skok względny. Testuje znacznik przeniesienia C w SREG i skacze względem licznika rozkazów PC, jeśli C jest ustawione na 1. Jeśli ta instrukcja zostanie wykonana bezpośrednio po jednej z instrukcji CP, CPI, SUB lub SUBI, to skok będzie wykonany wtedy i tylko wtedy gdy liczba binarna bez znaku w rejestrze Rd była mniejsza od liczby binarnej bez znaku w rejestrze Rr. Instrukcja skacze względem PC w obu kierunkach (PC - 63 ≤ adres docelowy ≤ PC + 64). Parametr k jest przesunięciem od PC i jest liczbą ze znakiem w kodzie U2. (Ekwiwalent instrukcji BRBS 0,k).
 

Działanie

                 
Jeśli C = 1, to PC ← PC + k + 1, inaczej PC ← PC + 1

Składnia

 

Argumenty

 

Licznik rozkazów

BRLO k   -64 ≤ k ≤ +63   PC ← PC + k + 1, jeśli warunek prawdziwy
PC ← PC + 1, jeśli warunek fałszywy

16-bitowy kod instrukcji

1111
00kk
kkkk
k000

Zmiany znaczników w rejestrze stanu (SREG)

   I     T     H     S     V     N     Z     C  

Przykładowy kod:

      eor r19,r19 ; Zeruj r19
loop: inc r19     ; Zwiększ r19
      ...
      cpi r19,$10 ; Porównaj r19 z $10
      brlo loop   ; Skocz, jeśli r19 < $10 (bez znaku)
      nop         ; Wyjdź z pętli (nic nie rób)

Liczba słów: 1 (2 bajty)

Cykle: 1, jeśli warunek fałszywy; 2, jeśli warunek prawdziwy

 

BRLT – Branch if Less Than (Signed) – Skok warunkowy, gdy mniejsze niż (ze znakiem)

Opis

Warunkowy skok względny. Testuje znacznik znaku S w SREG i skacze względem licznika rozkazów PC, jeśli S jest ustawione na 1. Jeśli ta instrukcja zostanie wykonana bezpośrednio po jednej z instrukcji CP, CPI, SUB lub SUBI, to skok będzie wykonany wtedy i tylko wtedy gdy liczba binarna ze znakiem w rejestrze Rd była mniejsza od liczby binarnej ze znakiem w rejestrze Rr. Instrukcja skacze względem PC w obu kierunkach (PC - 63 ≤ adres docelowy ≤ PC + 64). Parametr k jest przesunięciem od PC i jest liczbą ze znakiem w kodzie U2. (Ekwiwalent instrukcji BRBS 4,k).
 

Działanie

                 
Jeśli S = 1, to PC ← PC + k + 1, inaczej PC ← PC + 1

Składnia

 

Argumenty

 

Licznik rozkazów

BRLT k   -64 ≤ k ≤ +63   PC ← PC + k + 1, jeśli warunek prawdziwy
PC ← PC + 1, jeśli warunek fałszywy

16-bitowy kod instrukcji

1111
00kk
kkkk
k100

Zmiany znaczników w rejestrze stanu (SREG)

   I     T     H     S     V     N     Z     C  

Przykładowy kod:

      cp   r16,r1 ; Porównaj r16 z r1
      brlt less   ; Skocz, jeśli r16 < r1 (ze znakiem)
      ...
less: nop         ; Miejsce docelowe skoku (nic nie rób)

Liczba słów: 1 (2 bajty)

Cykle: 1, jeśli warunek fałszywy; 2, jeśli warunek prawdziwy

 

BRMI – Branch if Minus – Skok warunkowy przy minusie

Opis

Warunkowy skok względny. Testuje znacznik liczby ujemnej N w SREG i skacze względem licznika rozkazów PC, jeśli N jest ustawione na 1. Instrukcja skacze względem PC w obu kierunkach (PC - 63 ≤ adres docelowy ≤ PC + 64). Parametr k jest przesunięciem od PC i jest liczbą ze znakiem w kodzie U2. (Ekwiwalent instrukcji BRBS 2,k).
 

Działanie

                 
Jeśli N = 1, to PC ← PC + k + 1, inaczej PC ← PC + 1

Składnia

 

Argumenty

 

Licznik rozkazów

BRMI k   -64 ≤ k ≤ +63   PC ← PC + k + 1, jeśli warunek prawdziwy
PC ← PC + 1, jeśli warunek fałszywy

16-bitowy kod instrukcji

1111
00kk
kkkk
k010

Zmiany znaczników w rejestrze stanu (SREG)

   I     T     H     S     V     N     Z     C  

Przykładowy kod:

          subi r18,4    ; Odejmij 4 od r18
          brmi negative ; Skocz, jeśli wynik ujemny
          ...
negative: nop           ; Miejsce docelowe skoku (nic nie rób)

Liczba słów: 1 (2 bajty)

Cykle: 1, jeśli warunek fałszywy; 2, jeśli warunek prawdziwy

 

BRNE – Branch if Not Equal – Skok warunkowy, jeśli różne

Opis

Warunkowy skok względny. Testuje znacznik zera Z w SREG i skacze względem licznika rozkazów PC, jeśli Z jest wyzerowane. Jeśli ta instrukcja zostanie wykonana bezpośrednio po jednej z instrukcji CP, CPI, SUB lub SUBI, to skok będzie wykonany wtedy i tylko wtedy gdy liczba binarna ze znakiem lub bez znaku w rejestrze Rd była różna od liczby binarnej ze znakiem lub bez znaku w rejestrze Rr. Instrukcja skacze względem PC w obu kierunkach (PC - 63 ≤ adres docelowy ≤ PC + 64). Parametr k jest przesunięciem od PC i jest liczbą ze znakiem w kodzie U2. (Ekwiwalent instrukcji BRBC 1,k).

Działanie

                 
Jeśli Z = 0, to PC ← PC + k + 1, inaczej PC ← PC + 1

Składnia

 

Argumenty

 

Licznik rozkazów

BRNE k   -64 ≤ k ≤ +63   PC ← PC + k + 1, jeśli warunek prawdziwy
PC ← PC + 1, jeśli warunek fałszywy

16-bitowy kod instrukcji

1111
01kk
kkkk
k001

Zmiany znaczników w rejestrze stanu (SREG)

   I     T     H     S     V     N     Z     C  

Przykładowy kod:

      eor r27,r27 ; Zeruj r27
loop: inc r27     ; Zwiększaj r27 o 1
      ...
      cpi r27,5   ; Porównaj r27 z 5
      brne loop   ; Skocz, jeśli r27 <> 5
      nop         ; Wyjście z pętli (nic nie rób)

Liczba słów: 1 (2 bajty)

Cykle: 1, jeśli warunek fałszywy; 2, jeśli warunek prawdziwy

 

BRPL – Branch if Plus – Skok warunkowy przy plusie

Opis

Warunkowy skok względny. Testuje znacznik liczby ujemnej N w SREG i skacze względem licznika rozkazów PC, jeśli N jest wyzerowane. Instrukcja skacze względem PC w obu kierunkach (PC - 63 ≤ adres docelowy ≤ PC + 64). Parametr k jest przesunięciem od PC i jest liczbą ze znakiem w kodzie U2. (Ekwiwalent instrukcji BRBC 2,k).

Działanie

                 
Jeśli N = 0, to PC ← PC + k + 1, inaczej PC ← PC + 1

Składnia

 

Argumenty

 

Licznik rozkazów

BRPL k   -64 ≤ k ≤ +63   PC ← PC + k + 1, jeśli warunek prawdziwy
PC ← PC + 1, jeśli warunek fałszywy

16-bitowy kod instrukcji

1111
01kk
kkkk
k010

Zmiany znaczników w rejestrze stanu (SREG)

   I     T     H     S     V     N     Z     C  

Przykładowy kod:

          subi r26,$50  ; Odejmij $50 od r26
          brpl positive ; skocz, jeśli r26 jest dodatni
          ...
positive: nop           ; Miejsce docelowe skoku (nic nie rób)

Liczba słów: 1 (2 bajty)

Cykle: 1, jeśli warunek fałszywy; 2, jeśli warunek prawdziwy

 

BRSH – Branch if Same or Higher (Unsigned) – Skok względny, gdy większe lub równe (bez znaku)

Opis

Warunkowy skok względny. Testuje znacznik przeniesienia C w SREG i skacze względem licznika rozkazów PC, jeśli C jest wyzerowane. Jeśli ta instrukcja zostanie wykonana bezpośrednio po jednej z instrukcji CP, CPI, SUB lub SUBI, to skok będzie wykonany wtedy i tylko wtedy gdy liczba binarna bez znaku w rejestrze Rd była większa lub równa liczbie binarnej bez znaku w rejestrze Rr. Instrukcja skacze względem PC w obu kierunkach (PC - 63 ≤ adres docelowy ≤ PC + 64). Parametr k jest przesunięciem od PC i jest liczbą ze znakiem w kodzie U2. (Ekwiwalent instrukcji BRBC 0,k).

Działanie

                 
Jeśli C = 0, to PC ← PC + k + 1, inaczej PC ← PC + 1

Składnia

 

Argumenty

 

Licznik rozkazów

BRSH k   -64 ≤ k ≤ +63   PC ← PC + k + 1, jeśli warunek prawdziwy
PC ← PC + 1, jeśli warunek fałszywy

16-bitowy kod instrukcji

1111
01kk
kkkk
k000

Zmiany znaczników w rejestrze stanu (SREG)

   I     T     H     S     V     N     Z     C  

Przykładowy kod:

        subi r19,4  ; Odejmij 4 od r19
        brsh highsm ; Skocz, jeśli r19 >= 4 (bez znaku)
        ...
highsm: nop         ; Miejsce docelowe skoku (nic nie rób)

Liczba słów: 1 (2 bajty)

Cykle: 1, jeśli warunek fałszywy; 2, jeśli warunek prawdziwy

 

BRTC – Branch if the T Flag is Cleared – Skok warunkowy, jeśli T jest wyzerowane

Opis

Warunkowy skok względny. Testuje znacznik T w SREG i skacze względem licznika rozkazów PC, jeśli T jest wyzerowane. Instrukcja skacze względem PC w obu kierunkach (PC - 63 ≤ adres docelowy ≤ PC + 64). Parametr k jest przesunięciem od PC i jest liczbą ze znakiem w kodzie U2. (Ekwiwalent instrukcji BRBC 6,k).

Działanie

                 
Jeśli T = 0, to PC ← PC + k + 1, inaczej PC ← PC + 1

Składnia

 

Argumenty

 

Licznik rozkazów

BRTC k   -64 ≤ k ≤ +63   PC ← PC + k + 1, jeśli warunek prawdziwy
PC ← PC + 1, jeśli warunek fałszywy

16-bitowy kod instrukcji

1111
01kk
kkkk
k110

Zmiany znaczników w rejestrze stanu (SREG)

   I     T     H     S     V     N     Z     C  

Przykładowy kod:

        bst r3,5    ; Zapisz bit 5 z r3 w znaczniku T
        brtc tclear ; Skocz, jeśli bit ten był wyzerowany
        ...
tclear: nop         ; Miejsce docelowe skoku (nic nie rób)

Liczba słów: 1 (2 bajty)

Cykle: 1, jeśli warunek fałszywy; 2, jeśli warunek prawdziwy

 

BRTS – Branch if the T Flag is Set – Skok warunkowy, jeśli T ustawione

Opis

Warunkowy skok względny. Testuje znacznik T w SREG i skacze względem licznika rozkazów PC, jeśli T jest ustawione. Instrukcja skacze względem PC w obu kierunkach (PC - 63 ≤ adres docelowy ≤ PC + 64). Parametr k jest przesunięciem od PC i jest liczbą ze znakiem w kodzie U2. (Ekwiwalent instrukcji BRBS 6,k).

Działanie

                 
Jeśli T = 1, to PC ← PC + k + 1, inaczej PC ← PC + 1

Składnia

 

Argumenty

 

Licznik rozkazów

BRTS k   -64 ≤ k ≤ +63   PC ← PC + k + 1, jeśli warunek prawdziwy
PC ← PC + 1, jeśli warunek fałszywy

16-bitowy kod instrukcji

1111
00kk
kkkk
k110

Zmiany znaczników w rejestrze stanu (SREG)

   I     T     H     S     V     N     Z     C  

Przykładowy kod:

      bst r3,5    ; Zapisz bit 5 z r3 w znaczniku T
      brts tclear ; Skocz, jeśli bit ten był ustawiony
      ...
tset: nop         ; Miejsce docelowe skoku (nic nie rób)

Liczba słów: 1 (2 bajty)

Cykle: 1, jeśli warunek fałszywy; 2, jeśli warunek prawdziwy

 

BRVC – Branch if Overflow Cleared – Skok warunkowy przy braku nadmiaru

Opis

Warunkowy skok względny. Testuje znacznik  nadmiaru V w SREG i skacze względem licznika rozkazów PC, jeśli V jest wyzerowane. Instrukcja skacze względem PC w obu kierunkach (PC - 63 ≤ adres docelowy ≤ PC + 64). Parametr k jest przesunięciem od PC i jest liczbą ze znakiem w kodzie U2. (Ekwiwalent instrukcji BRBC 3,k).

Działanie

                 
Jeśli V = 0, to PC ← PC + k + 1, inaczej PC ← PC + 1

Składnia

 

Argumenty

 

Licznik rozkazów

BRVC k   -64 ≤ k ≤ +63   PC ← PC + k + 1, jeśli warunek prawdziwy
PC ← PC + 1, jeśli warunek fałszywy

16-bitowy kod instrukcji

1111
01kk
kkkk
k011

Zmiany znaczników w rejestrze stanu (SREG)

   I     T     H     S     V     N     Z     C  

Przykładowy kod:

        add r3,r4   ; Dodaj r4 do r3
        brvc noover ; Skocz przy braku nadmiaru
        ...
noover: nop         ; Miejsce docelowe skoku (nic nie rób)

Liczba słów: 1 (2 bajty)

Cykle: 1, jeśli warunek fałszywy; 2, jeśli warunek prawdziwy

 

BRVS – Branch if Overflow Set – Skok warunkowy przy nadmiarze

Opis

Warunkowy skok względny. Testuje znacznik  nadmiaru V w SREG i skacze względem licznika rozkazów PC, jeśli V jest ustawione. Instrukcja skacze względem PC w obu kierunkach (PC - 63 ≤ adres docelowy ≤ PC + 64). Parametr k jest przesunięciem od PC i jest liczbą ze znakiem w kodzie U2. (Ekwiwalent instrukcji BRBS 3,k).

Działanie

                 
Jeśli V = 1, to PC ← PC + k + 1, inaczej PC ← PC + 1

Składnia

 

Argumenty

 

Licznik rozkazów

BRVC k   -64 ≤ k ≤ +63   PC ← PC + k + 1, jeśli warunek prawdziwy
PC ← PC + 1, jeśli warunek fałszywy

16-bitowy kod instrukcji

1111
00kk
kkkk
k011

Zmiany znaczników w rejestrze stanu (SREG)

   I     T     H     S     V     N     Z     C  

Przykładowy kod:

        add r3,r4   ; Dodaj r4 do r3
        brvs overfl ; Skocz przy nadmiarze
        ...
overfl: nop         ; Miejsce docelowe skoku (nic nie rób)

Liczba słów: 1 (2 bajty)

Cykle: 1, jeśli warunek fałszywy; 2, jeśli warunek prawdziwy

 

BSET – Bit Set in SREG – Ustawianie bitu w SREG

Opis

Ustawia pojedynczy znacznik w SREG.

Działanie

                 
SREG(s) ← 1

Składnia

 

Argumenty

 

Licznik rozkazów

BSET s   0 ≤ s ≤7   PC ← PC + k + 1, jeśli warunek prawdziwy
PC ← PC + 1, jeśli warunek fałszywy

16-bitowy kod instrukcji

1001
0100
0sss
1000

Zmiany znaczników w rejestrze stanu (SREG)

   I     T     H     S     V     N     Z     C  
X X X X X X X X
I: 1, jeśli s = 7; w przeciwnym wypadku bez zmian
T: 1, jeśli s = 6; w przeciwnym wypadku bez zmian
H: 1, jeśli s = 5; w przeciwnym wypadku bez zmian
S: 1, jeśli s = 4; w przeciwnym wypadku bez zmian
V: 1, jeśli s = 3; w przeciwnym wypadku bez zmian
N: 1, jeśli s = 2; w przeciwnym wypadku bez zmian
Z: 1, jeśli s = 1; w przeciwnym wypadku bez zmian
C: 1, jeśli s = 0; w przeciwnym wypadku bez zmian

Przykładowy kod:

bset 6 ; Ustaw znacznik T
bset 7 ; Włącz przerwania

Liczba słów: 1 (2 bajty)

Cykle: 1, jeśli warunek fałszywy; 2, jeśli warunek prawdziwy

 

BST – Bit Store from Bit in Register to T Flag in SREG – Zapisanie bitu z rejestru w znaczniku T

Opis

Umieszcza bit b z rejestru Rd w znaczniku T rejestru stanu SREG.

Działanie

                 
T ← Rd(b)

Składnia

 

Argumenty

 

Licznik rozkazów

BST Rd,b   0 ≤ d ≤ 31, 0 ≤ b ≤7   PC ← PC + k + 1, jeśli warunek prawdziwy
PC ← PC + 1, jeśli warunek fałszywy

16-bitowy kod instrukcji

1111
101d
dddd
0bbb

Zmiany znaczników w rejestrze stanu (SREG)

   I     T     H     S     V     N     Z     C  
X
T: 0, jeśli bit b w Rd jest wyzerowany; w przeciwnym wypadku ustawiany na 1.

Przykładowy kod:

         ; Kopiuj bit
bst r1,2 ; Zapisz bit 2 z r1 w znaczniku T
bld r0,4 ; Załaduj znacznik T do bitu 4 w r0

Liczba słów: 1 (2 bajty)

Cykle: 1, jeśli warunek fałszywy; 2, jeśli warunek prawdziwy

Zespół Przedmiotowy
Chemii-Fizyki-Informatyki

w I Liceum Ogólnokształcącym
im. Kazimierza Brodzińskiego
w Tarnowie
ul. Piłsudskiego 4
©2019 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.