51
Lista rozkazów mikrokontrolera 8051 część pierwsza: instrukcje przesyłania danych, arytmetyczne i logiczne Ryszard J. Barczyński, 2018 Politechnika Gdańska, Wydział FTiMS, Katedra Fizyki Ciała Stałego Materiały dydaktyczne do użytku wewnętrznego

Lista rozkazów mikrokontrolera 8051...Mikrokontroler 8051 potrzebuje na wykonanie instrukcji minimum 12 cykli zegara (tak zwany cykl maszynowy). Są instrukcje wolniejsze, wymagające

  • Upload
    others

  • View
    8

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Lista rozkazów mikrokontrolera 8051...Mikrokontroler 8051 potrzebuje na wykonanie instrukcji minimum 12 cykli zegara (tak zwany cykl maszynowy). Są instrukcje wolniejsze, wymagające

Lista rozkazówmikrokontrolera 8051część pierwsza: instrukcje przesyłania danych, arytmetyczne i logiczne

Ryszard J. Barczyński, 2018Politechnika Gdańska, Wydział FTiMS, Katedra Fizyki Ciała StałegoMateriały dydaktyczne do użytku wewnętrznego

Page 2: Lista rozkazów mikrokontrolera 8051...Mikrokontroler 8051 potrzebuje na wykonanie instrukcji minimum 12 cykli zegara (tak zwany cykl maszynowy). Są instrukcje wolniejsze, wymagające

8051 Pamięć programu8051 Pamięć programu

Po uruchomieniu procesora wykonywanie programu rozpoczyna się od adresu 0000h

Adres ma długość 16 bitów. Zatem 8051 może zaadresować 216 = 64k słów

programu. Każde słowo ma długość jednego bajtu. CPU może wykonywać instrukcje jedynie z pamięci

programu.

Page 3: Lista rozkazów mikrokontrolera 8051...Mikrokontroler 8051 potrzebuje na wykonanie instrukcji minimum 12 cykli zegara (tak zwany cykl maszynowy). Są instrukcje wolniejsze, wymagające

Programowanie 8051Programowanie 8051

Podstawowe znaczenie dla programowania mikrokontrolera 8051 mają rejestry.

8051 zawiera CPU oparte na akumulatorze

Większość operacji wykonywana jest na zawartości A i rezultat jest umieszczony w A

np Add A,#23

PC

A

B

R7R6R5R4R3R2R1R0

8-bits

16-bits

Page 4: Lista rozkazów mikrokontrolera 8051...Mikrokontroler 8051 potrzebuje na wykonanie instrukcji minimum 12 cykli zegara (tak zwany cykl maszynowy). Są instrukcje wolniejsze, wymagające

Lista rozkazówLista rozkazów

Lista rozkazów (instrukcji) to zestaw wszystkich rozkazów, które jest w stanie wykonać dany procesor..

Każdy procesor ma własną listę rozkazów.Rozkazy możemy podzielić na zasadnicze grupy:

Arytmetyczno - logicznePrzesłania danychPrzeniesienia sterowania Testowania i porównania (w zasadzie nieobecne w 8051)Wejścia - wyjścia (tylko niektóre procesory; 8051 ich nie ma) Inne

Niektóre procesory (szczególnie RISC) mają rozkazy o ujednoliconej długości, inne (w tym 8051) nie.

Page 5: Lista rozkazów mikrokontrolera 8051...Mikrokontroler 8051 potrzebuje na wykonanie instrukcji minimum 12 cykli zegara (tak zwany cykl maszynowy). Są instrukcje wolniejsze, wymagające

Kodowanie rozkazówKodowanie rozkazów

Rozkaz zawierainformację jaką operację wykonać, operandy (jeżeli są). przeznaczenie wyniku (jeżeli jest)

Część rozkazu zawierająca informację o operacji nazywa się często kodem instrukcji (rozkazu) albo opcode

Operand może byćwartością natychmiastową, adresem pamięci lub rejestrem.

Przeznaczeniem może być adres pamięci lub rejestr. Rozkaz procesora 8051 może mieć długość 1, 2 lub 3 bajtów

Page 6: Lista rozkazów mikrokontrolera 8051...Mikrokontroler 8051 potrzebuje na wykonanie instrukcji minimum 12 cykli zegara (tak zwany cykl maszynowy). Są instrukcje wolniejsze, wymagające

Kodowanie rozkazówKodowanie rozkazów

8 bitowy kod operacji daje 28=256 możliwościUżywa się 255

139 rozkazów 1 bajtowych92 rozkazy 2 bajtowe24 rozkazy 3 bajtowe

Przykład instrukcji 1 bajtowej

CLR C jest ona reprezentowana przez kod 0C3h (bitowo 11000011)

Page 7: Lista rozkazów mikrokontrolera 8051...Mikrokontroler 8051 potrzebuje na wykonanie instrukcji minimum 12 cykli zegara (tak zwany cykl maszynowy). Są instrukcje wolniejsze, wymagające

Kodowanie rozkazówKodowanie rozkazów

Inny przykład to ADDC A,R1

Instrukcja dodaje zawartość A i zawartość R1 używając wskaźnika przeniesienia i umieszcza rezultat w A

Kod maszynowy to 039h. W ogólności kodowanie ADDC wygląda tak:

0011 1

5 bitów 3 bity

Rn

Page 8: Lista rozkazów mikrokontrolera 8051...Mikrokontroler 8051 potrzebuje na wykonanie instrukcji minimum 12 cykli zegara (tak zwany cykl maszynowy). Są instrukcje wolniejsze, wymagające

Timing rozkazówTiming rozkazów

Mikrokontroler 8051 potrzebuje na wykonanie instrukcji minimum 12 cykli zegara (tak zwany cykl maszynowy).

Są instrukcje wolniejsze, wymagające 48 cykli zegara

Nie ma instrukcji potrzebujących 36 cykli zegara, ale są 2 potrzebujące 48 cykli (4 cykle maszynowe)

instrukcje MUL oraz DIV

Zauważ, że długość (liczba bajtów) rozkazu nie ma jednoznacznego przełożenia na czas trwania!

Page 9: Lista rozkazów mikrokontrolera 8051...Mikrokontroler 8051 potrzebuje na wykonanie instrukcji minimum 12 cykli zegara (tak zwany cykl maszynowy). Są instrukcje wolniejsze, wymagające

Lista rozkazów 8051 Lista rozkazów 8051

ACALL addr11 DIV AB LJMP addr16 RETIADD A,<src> DJNZ <byte>,<rel8> MOV <dest>,<src> RL AADDC A,<src> INC <byte> MOV DPTR,#data16 RLC AAJMP addr11 INC DPTR MOV bit,bit RR AANL <dest>,<src> JB bit,rel8 MOVC A,@A+<base> RRC AANL C,<bit> JBC bit,rel8 MOVX <dest>,<src> SETB bitCJNE <dest>,<src>,rel8 JC rel8 MUL AB SJMP rel8CLR A JMP @A+DPTR NOP SUBB A,<src>CLR bit JNB bit,rel8 ORL <dest>,<src> SWAP ACPL A JNC rel8 ORL C,bit XCH A,<byte>CPL bit JNZ rel8 POP direct XCHD A,@RiDA A JZ rel8 PUSH direct XRL <dest>,<src>

DEC <byte> LCALL addr16 RET

Page 10: Lista rozkazów mikrokontrolera 8051...Mikrokontroler 8051 potrzebuje na wykonanie instrukcji minimum 12 cykli zegara (tak zwany cykl maszynowy). Są instrukcje wolniejsze, wymagające

Rozkaz MOV

Rozkaz MOV

Musimy mieć możliwość przesyłania danych

Pomiędzy rejestrami

Pomiędzy pamięcią a rejestrami

W pamięci :-)

Służy do tego rozkaz MOV

Możliwe są różne tryby adresowania

Lower 128 bytes

8 bits 32 bytesused

Upper 128 bytes

00h

20h

80h

FFh

PC

A

B

R7R6R5R4R3R2R1R0

8-bits

16-bits

Page 11: Lista rozkazów mikrokontrolera 8051...Mikrokontroler 8051 potrzebuje na wykonanie instrukcji minimum 12 cykli zegara (tak zwany cykl maszynowy). Są instrukcje wolniejsze, wymagające

Rozkaz MOV Rozkaz MOV ma formę

MOV <dest>,<src>

Rezultatem jest przeniesienie bajtu z <src> do <dest>

Istnieje 15 wersji tego rozkazu

Przykład

MOV A,#12

Lower 128 bytes

8 bits 32 bytesused

Upper 128 bytes

00h

20h

80h

FFh

PC

A

B

R7R6R5R4R3R2R1R0

8-bits

16-bits

12

Page 12: Lista rozkazów mikrokontrolera 8051...Mikrokontroler 8051 potrzebuje na wykonanie instrukcji minimum 12 cykli zegara (tak zwany cykl maszynowy). Są instrukcje wolniejsze, wymagające

Rozkaz MOV i wartości

natychmiastoweW naszym przykładzie

MOV A,#12

Przeznaczeniem jest rejestr A natomiast źródłem jest wartość natychmiastowa

Wszystkie warości natychmiastowe są poprzedzane znakiem #

Źródło jest tu wartością stałą

PC

A

B

R7R6R5R4R3R2R1R0

8-bits

16-bits

12

Page 13: Lista rozkazów mikrokontrolera 8051...Mikrokontroler 8051 potrzebuje na wykonanie instrukcji minimum 12 cykli zegara (tak zwany cykl maszynowy). Są instrukcje wolniejsze, wymagające

Rozkaz MOV i adresowanie

rejestrów

Adresowanie rejestrów (implikowane)

Przykład

MOV R3,#32

MOV A,R3

Pierwsza instrukcja umieszcza 32 w rejestrze R3, a druga kopiuje zawartość R3 do rejestru A.

Można używać dowolnego z 8 rejestrów R0-R7

Operandy będące rejestrami R0-R7 będziemy oznaczać przez Rn

PC

A

B

R7R6R5R4R3R2R1R0

8-bits

16-bits

32

32

Page 14: Lista rozkazów mikrokontrolera 8051...Mikrokontroler 8051 potrzebuje na wykonanie instrukcji minimum 12 cykli zegara (tak zwany cykl maszynowy). Są instrukcje wolniejsze, wymagające

Rozkaz MOV i adresowanie bezpośrednie

Dla dostępu do RAM używa się, adresowania bezpośredniego

Przykład

MOV 20h,A

Przeznaczeniem jest adres 20h, a źródło, zawartość A, jest kopiowane do RAM

Adresowanie bezpośrednie może być używane tylko dla niższych 128 adresów.

Lower 128 bytes

8 bits 32 bytesused

Upper 128 bytes

00h

20h

80h

FFh

PC

A

B

R7R6R5R4R3R2R1R0

8-bits

16-bits

15

Page 15: Lista rozkazów mikrokontrolera 8051...Mikrokontroler 8051 potrzebuje na wykonanie instrukcji minimum 12 cykli zegara (tak zwany cykl maszynowy). Są instrukcje wolniejsze, wymagające

Zauważ różnicę pomiędzy adresowaniem natychmiastowym i

bezpośrednim!!!

Zauważ różnicę pomiędzy adresowaniem natychmiastowym i

bezpośrednim!!!

MOV A,#64h MOV A,64h

Tutaj, wartość 64h jest umieszczona w A

Tutaj, wartość spod adresu 64h jest umieszczona w A.

Page 16: Lista rozkazów mikrokontrolera 8051...Mikrokontroler 8051 potrzebuje na wykonanie instrukcji minimum 12 cykli zegara (tak zwany cykl maszynowy). Są instrukcje wolniejsze, wymagające

PC

A

B

R7R6R5R4R3R2R1R0

8-bits

16-bits

Instrukcja MOV i adresowanie

pośrednie

By uzyskać dostęp do 256 adresów RAM musimy użyć adresowania pośredniego

Przykład

MOV @R0,A

Możemy użyć @R0 lub @R1

mówiąc o adresowaniu pośrednim zwykle używamy oznaczenia @Ri, gdzie i może oznaczać 1 lub 0.

Lower 128 bytes

8 bits 32 bytesused

Upper 128 bytes

00h

20h

80h

FFh

20h

13

Page 17: Lista rozkazów mikrokontrolera 8051...Mikrokontroler 8051 potrzebuje na wykonanie instrukcji minimum 12 cykli zegara (tak zwany cykl maszynowy). Są instrukcje wolniejsze, wymagające

Podsumowanie trybów

adresowania

Podsumowanie trybów

adresowaniaWartość bezpośrednia

#data8np. MOV A,#56h

Adresowanie rejestrówRnnp. MOV R6,R3

Adresowanie bezpośredniedirectnp. MOV R6,4Eh

Adresowanie pośrednie@Rinp. MOV @R1,R6

Page 18: Lista rozkazów mikrokontrolera 8051...Mikrokontroler 8051 potrzebuje na wykonanie instrukcji minimum 12 cykli zegara (tak zwany cykl maszynowy). Są instrukcje wolniejsze, wymagające

Rozkazy MOV Rozkazy MOV

MOV A,source MOV dest,A

MOV A,#data

MOV dest,source

MOV dest,#dataGdzie dest i source może być każdym z Rn, direct lub @Ri

Page 19: Lista rozkazów mikrokontrolera 8051...Mikrokontroler 8051 potrzebuje na wykonanie instrukcji minimum 12 cykli zegara (tak zwany cykl maszynowy). Są instrukcje wolniejsze, wymagające

Rozkaz XCHRozkaz XCH

Instrukcja zamienia zawartość akumulatora z zawartością adresowaną przez operand

XCH A,source

Gdzie source może być każdym z Rn, direct lub @Ri

Page 20: Lista rozkazów mikrokontrolera 8051...Mikrokontroler 8051 potrzebuje na wykonanie instrukcji minimum 12 cykli zegara (tak zwany cykl maszynowy). Są instrukcje wolniejsze, wymagające

Rozkaz XCHDRozkaz XCHD

Instrukcja zamienia zawartość czterech najniższych bitów akumulatora z zawartością czterech najniższych bitów adresowaną przez operand

XCHD A,@Ri

Page 21: Lista rozkazów mikrokontrolera 8051...Mikrokontroler 8051 potrzebuje na wykonanie instrukcji minimum 12 cykli zegara (tak zwany cykl maszynowy). Są instrukcje wolniejsze, wymagające

Rozkaz MOV (DPTR) Rozkaz MOV (DPTR)

MOV DPTR,#data16 Ta specjalna wersja rozkazu MOV umieszcza

w rejestrze DPTR stałą 16-bitową. Rejestr DPTR służy głównie jako wskaźnik przy

dostępie do pamięci programu i zewnętrznej pamięci RAM.

Page 22: Lista rozkazów mikrokontrolera 8051...Mikrokontroler 8051 potrzebuje na wykonanie instrukcji minimum 12 cykli zegara (tak zwany cykl maszynowy). Są instrukcje wolniejsze, wymagające

Rozkaz MOVX Rozkaz MOVX

MOVX A,@DPTR MOVX @DPTR,A

Rozkaz MOVX służy do dostępu do

zewnętrznej pamięci RAM. Jednym z operandów musi być akumulator.

Page 23: Lista rozkazów mikrokontrolera 8051...Mikrokontroler 8051 potrzebuje na wykonanie instrukcji minimum 12 cykli zegara (tak zwany cykl maszynowy). Są instrukcje wolniejsze, wymagające

Rozkaz MOVX Rozkaz MOVX

MOVX A,@Ri MOVX @Ri,A

Wersja rozkazu MOVX służąca do dostępu do

zewnętrznej pamięci RAM o pojemności 256B. Przy użyciu tej instrukcji nie są

używane wyższe bity adresowe (używany jest tylko port P0).

Page 24: Lista rozkazów mikrokontrolera 8051...Mikrokontroler 8051 potrzebuje na wykonanie instrukcji minimum 12 cykli zegara (tak zwany cykl maszynowy). Są instrukcje wolniejsze, wymagające

Rozkaz MOVC Rozkaz MOVC

MOVC A,@A+DPTR MOVC A,@A+PC

Instrukcja służy do przepisywania danych z pamięci programu do akumulatora. Adres

wyliczany jest poprzez sumę akumulatora i rejestru DPTR lub PC.

Page 25: Lista rozkazów mikrokontrolera 8051...Mikrokontroler 8051 potrzebuje na wykonanie instrukcji minimum 12 cykli zegara (tak zwany cykl maszynowy). Są instrukcje wolniejsze, wymagające

Instrukcje arytmetyczneInstrukcje arytmetyczne

Instrukcje arytmetyczne umożliwiają dodawanie, odejmowanie, mnożenie i dzielenia operandów całkowitych

W większości przypadków akumulator pełni rolę zarówno jednego z operandów jak i przeznaczeniea wyniku

np. ADD A,#23

można używać wszystkich

omówionych trybów adresowania

A 23

ALU

Page 26: Lista rozkazów mikrokontrolera 8051...Mikrokontroler 8051 potrzebuje na wykonanie instrukcji minimum 12 cykli zegara (tak zwany cykl maszynowy). Są instrukcje wolniejsze, wymagające

Dodawanie: ADDDodawanie: ADD

Instrukcja umożliwia dodawanie dwóch liczb 8-bitowych. Na przykład

ADD A,#23 załóżmy, że A zawierał

początkowo liczbę 31.

(23) 00010111(31) 00011111(54) 000110110

Rezultat ma 9 bitów... Dodatkowy bit przeniesienia

carry jest umieszczany na pozycji C w słowie stanu procesora (PSW)

Page 27: Lista rozkazów mikrokontrolera 8051...Mikrokontroler 8051 potrzebuje na wykonanie instrukcji minimum 12 cykli zegara (tak zwany cykl maszynowy). Są instrukcje wolniejsze, wymagające

Gdy niezbędne są liczby ze znakiem posługojemy się kodem uzupełnień do 2.

Zakres liczb wynosi wtedy od –128 do +127

Dodajmy 43 i –68(43) 00101011

(-68) 11000001

(-25) 011100111

Używamy tej samej instrukcji dodawania

Ważne... Ważne... do do programistyprogramisty należy należy właściwa interpretacja właściwa interpretacja formatów danychformatów danych

Dodawanie: ADDDodawanie: ADD

Page 28: Lista rozkazów mikrokontrolera 8051...Mikrokontroler 8051 potrzebuje na wykonanie instrukcji minimum 12 cykli zegara (tak zwany cykl maszynowy). Są instrukcje wolniejsze, wymagające

Dodawanie: ADDDodawanie: ADD

PrzykładDodaj zawartość R1 do

A i umieść wynik w R2

ADD A,R1

MOV R2,A

Flagi przeniesienia carry (C) i przepełnienia overflow (OV) są modyfikowane przez instrukcję ADD

R1 C

R2

A

OV

0

38

15

23

0

Page 29: Lista rozkazów mikrokontrolera 8051...Mikrokontroler 8051 potrzebuje na wykonanie instrukcji minimum 12 cykli zegara (tak zwany cykl maszynowy). Są instrukcje wolniejsze, wymagające

Interpretacja bez znaku

Rezultatem dodawania 238 i 23 jest 5. Bit przeniesienia (C) został jednak ustawiony, co oznacza, że prawdidłowym wynikiem jest 256+5=261.

R1 C

R2

A

OV

1

5

238

23

0

Przykład ilustruje dodawanie bez znaku

bit OV nie ma w tym wypadku znaczenia

R1 C

R2

A

OV

0

169

98

71

1

Page 30: Lista rozkazów mikrokontrolera 8051...Mikrokontroler 8051 potrzebuje na wykonanie instrukcji minimum 12 cykli zegara (tak zwany cykl maszynowy). Są instrukcje wolniejsze, wymagające

Interpretacja ze znakiem

Resultatem dodawania –18 oraz 23 jest 5. Bit OV jest równy 0, co oznacza, że wynik mieści się w zakresie i jest prawidłowy.

R1 C

R2

A

OV

1

5

-18

23

0

Bit OV oznacza, że rezultat dodawania ze znakiem znalazł się poza zakresem.

R1 C

R2

A

OV

0

-87

98

71

1

Page 31: Lista rozkazów mikrokontrolera 8051...Mikrokontroler 8051 potrzebuje na wykonanie instrukcji minimum 12 cykli zegara (tak zwany cykl maszynowy). Są instrukcje wolniejsze, wymagające

Dodawanie: ADDDodawanie: ADD

Możliwe formaty instrukcji

ADD A,source

ADD A,#data

Gdzie source jest dowolnym z

Rn, direct lub @Ri

Podobne formaty dopuszcza większość instrukcji arytmetycznych i logicznych

Page 32: Lista rozkazów mikrokontrolera 8051...Mikrokontroler 8051 potrzebuje na wykonanie instrukcji minimum 12 cykli zegara (tak zwany cykl maszynowy). Są instrukcje wolniejsze, wymagające

Dodawanie: ADDCDodawanie: ADDC

Wariantem instrukcji dodawania jest ADDCDo wyniku dodawania jest dodawany jeszcze wskaźnik

przeniesienia CPrzykład

ADDC A,#34

Instrukcja służy do wykonywania dodawania 16, 24 lub 32 bitowego za pomocą instrukcji 8 bitowych

Page 33: Lista rozkazów mikrokontrolera 8051...Mikrokontroler 8051 potrzebuje na wykonanie instrukcji minimum 12 cykli zegara (tak zwany cykl maszynowy). Są instrukcje wolniejsze, wymagające

Dodawanie: ADDCDodawanie: ADDC

Przykład:Rejestry R1 i R0 zawierają jedną 16 bitową liczbę

całkowitą za znakiem, a R3 i R2 drugą. Dodaj te dwie liczby, umieść wynik w rejestrach R5 i R4.MOV A,R0ADD A,R2MOV R4,AMOV A,R1ADDC A,R3MOV R5,A

R1

R5 R4

R3 R2

R0

Page 34: Lista rozkazów mikrokontrolera 8051...Mikrokontroler 8051 potrzebuje na wykonanie instrukcji minimum 12 cykli zegara (tak zwany cykl maszynowy). Są instrukcje wolniejsze, wymagające

Odejmowanie: SUBBOdejmowanie: SUBB

Odejmuje od akumulatora liczbę wraz z pożyczką od najmniej znaczącego bitu (LSB)

Rolę pożyczki pełni bit C (carry) z PSWBy nie uwzględniać pożyczki trzeba ją wyzerować

Można to zrobić na przykład takCLR C

Bity OV oraz C są przez tą instrukcję odpowiednio ustawiane.

Page 35: Lista rozkazów mikrokontrolera 8051...Mikrokontroler 8051 potrzebuje na wykonanie instrukcji minimum 12 cykli zegara (tak zwany cykl maszynowy). Są instrukcje wolniejsze, wymagające

Odejmowanie: SUBBOdejmowanie: SUBB

PrzykładOdejmij zawartość R1 od R0 i umieść rezultat w R2,

czyli (R2) <- (R0) - (R1)

CLR C

MOV A,R0

SUBB A,R1

MOV R2,A

R1 C

R2

R0

A

OV

0

8

15

23

23

0

Page 36: Lista rozkazów mikrokontrolera 8051...Mikrokontroler 8051 potrzebuje na wykonanie instrukcji minimum 12 cykli zegara (tak zwany cykl maszynowy). Są instrukcje wolniejsze, wymagające

Mnożenie: MULMnożenie: MUL

Instrukcja mnożenia mnoży dwie ośmiobitowe liczby bez znaku - zawartość rejestrów A i B.

Mniej znacząca część wyniku pozostaje w A, bardziej znacząca trafia do B. Bit C jest ustawiany gdy wynik nie mieści się w 8 bitach. Bit OV jest zerowany.

MUL AB

(B)(A) <- (A)*(B)

Page 37: Lista rozkazów mikrokontrolera 8051...Mikrokontroler 8051 potrzebuje na wykonanie instrukcji minimum 12 cykli zegara (tak zwany cykl maszynowy). Są instrukcje wolniejsze, wymagające

Dzielenie: DIVDzielenie: DIV

Instrukcja dzieli dwie ośmiobitowe liczby bez znaku - zawartość A przez zawartość B.

Wyniku pozostaje w A, reszta z dzielenia trafia do B. Bit C jest zawsze zerowany. Bit OV sygnalizuje dzielenie przez zero.

DIV AB

(A) <- (A) DIV (B)

(B) <- (A) MOD (B)

Page 38: Lista rozkazów mikrokontrolera 8051...Mikrokontroler 8051 potrzebuje na wykonanie instrukcji minimum 12 cykli zegara (tak zwany cykl maszynowy). Są instrukcje wolniejsze, wymagające

Wyrównanie dziesiętne: DA

Wyrównanie dziesiętne: DA

Dziwna instrukcja :-) poprawiająca wynik w akumulatorze gdy poprzednio dodawane liczby były zapisane w kodzie BCD. Wynik będzie również zapisany w kodzie BCD.

Wbrew temu, co się powszechnie sądzi instrukcja ta nie zamienia zawartości akumulatora na kod BCD...

DA A

Page 39: Lista rozkazów mikrokontrolera 8051...Mikrokontroler 8051 potrzebuje na wykonanie instrukcji minimum 12 cykli zegara (tak zwany cykl maszynowy). Są instrukcje wolniejsze, wymagające

Zmniejsz: DECZmniejsz: DEC

Instrukcja zmniejsza o 1 bajt adresowany przez operand.

Flagi nie są modyfikowane.

Gdy operandem jest port, argument pobierany jest z zatrzasków, a nie z linii wejsciowych.

DEC byte

Page 40: Lista rozkazów mikrokontrolera 8051...Mikrokontroler 8051 potrzebuje na wykonanie instrukcji minimum 12 cykli zegara (tak zwany cykl maszynowy). Są instrukcje wolniejsze, wymagające

Zwiększ: INCZwiększ: INC

Instrukcja zwiększa o 1 bajt adresowany przez operand lub zawartość DPTR.

Flagi nie są modyfikowane.

Gdy operandem jest port, argument pobierany jest z zatrzasków, a nie z linii wejsciowych.

INC byte

INC DPTR

Page 41: Lista rozkazów mikrokontrolera 8051...Mikrokontroler 8051 potrzebuje na wykonanie instrukcji minimum 12 cykli zegara (tak zwany cykl maszynowy). Są instrukcje wolniejsze, wymagające

Obroty: RRObroty: RR

Instrukcja przesuwa akumulator w prawo, najmniej znaczący bit trafia do najbardziej znaczącego bitu akumulatora

Flagi nie są modyfikowane.

RR A

(A6..A0) <- (A7..A1)

(A7) <- (A0)

Page 42: Lista rozkazów mikrokontrolera 8051...Mikrokontroler 8051 potrzebuje na wykonanie instrukcji minimum 12 cykli zegara (tak zwany cykl maszynowy). Są instrukcje wolniejsze, wymagające

Obroty: RRCObroty: RRC

Instrukcja przesuwa akumulator w prawo, najmniej znaczący bit trafia do bitu C, a zawartość bitu C do najbardziej znaczącego bitu akumulatora

Flagi nie są modyfikowane.

RRC A

(A6..A0) <- (A7..A1)

(A7) <- (C)

(C) <- (A0)

Page 43: Lista rozkazów mikrokontrolera 8051...Mikrokontroler 8051 potrzebuje na wykonanie instrukcji minimum 12 cykli zegara (tak zwany cykl maszynowy). Są instrukcje wolniejsze, wymagające

Obroty: RLObroty: RL

Instrukcja przesuwa akumulator w lewo, najbardziej znaczący bit trafia do najmniej znaczącego bitu akumulatora

Flagi nie są modyfikowane.

RL A

(A7..A1) <- (A6..A0)

(A0) <- (A7)

Page 44: Lista rozkazów mikrokontrolera 8051...Mikrokontroler 8051 potrzebuje na wykonanie instrukcji minimum 12 cykli zegara (tak zwany cykl maszynowy). Są instrukcje wolniejsze, wymagające

Obroty: RLCObroty: RLC

Instrukcja przesuwa akumulator w lewo, najbardziej znaczący bit trafia do bitu C, a zawartość bitu C do najmniej znaczącego bitu akumulatora

Flagi nie są modyfikowane.

RLC A

(A7..A1) <- (A6..A0)

(A0) <- (C)

(C) <- (A7)

Page 45: Lista rozkazów mikrokontrolera 8051...Mikrokontroler 8051 potrzebuje na wykonanie instrukcji minimum 12 cykli zegara (tak zwany cykl maszynowy). Są instrukcje wolniejsze, wymagające

Zamień nibble: SWAPZamień nibble: SWAP

Instrukcja zamienia cztery najmniej i cztery najbardziej znaczące bity akumulatora

Flagi nie są modyfikowane.

SWAP A

(A3..A0) <- (A7..A4)

(A7..A4) <- (A3..A0)

Page 46: Lista rozkazów mikrokontrolera 8051...Mikrokontroler 8051 potrzebuje na wykonanie instrukcji minimum 12 cykli zegara (tak zwany cykl maszynowy). Są instrukcje wolniejsze, wymagające

Instrukcje arytmetycznepodsumowanie

Instrukcje arytmetycznepodsumowanie

W większości instrukcji arytmetycznych akumulator jest zarówno operandem, jak i rejestrem przeznaczenia.

Flagi w PSW są modyfikowane przez niektóre instrukcjeBit przeniesienia (C)Bit przepełnienia (OV)

Ma znaczenie tylko przy działaniach na liczbach ze znakiem i dzieleniu

By prawidłowo interpretować wyniki musimy określić format danychBez znakuZe znakiem (kod uzupełnień do 2)Inne (na przykład BCD)

Page 47: Lista rozkazów mikrokontrolera 8051...Mikrokontroler 8051 potrzebuje na wykonanie instrukcji minimum 12 cykli zegara (tak zwany cykl maszynowy). Są instrukcje wolniejsze, wymagające

Iloczyn logiczny: ANLIloczyn logiczny: ANL

Instrukcja wykonuje bit po bicie iloczyn logiczny na całej długości bajtu.

Flagi nie są modyfikowane.

Gdy operandem jest port używana jest wartość z zatrzasku, a nie linii wejściowych.

ANL A,#data

ANL A,byte

ANL direct,A

ANL direct,#data

Page 48: Lista rozkazów mikrokontrolera 8051...Mikrokontroler 8051 potrzebuje na wykonanie instrukcji minimum 12 cykli zegara (tak zwany cykl maszynowy). Są instrukcje wolniejsze, wymagające

Suma logiczna: ORLSuma logiczna: ORL

Instrukcja wykonuje bit po bicie sumę logiczną na całej długości bajtu.

Flagi nie są modyfikowane.

Gdy operandem jest port używana jest wartość z zatrzasku, a nie linii wejściowych.

ORL A,#data

ORL A,byte

ORL direct,A

ORL direct,#data

Page 49: Lista rozkazów mikrokontrolera 8051...Mikrokontroler 8051 potrzebuje na wykonanie instrukcji minimum 12 cykli zegara (tak zwany cykl maszynowy). Są instrukcje wolniejsze, wymagające

Dysjunkcja logiczna: XRLDysjunkcja logiczna: XRL

Instrukcja wykonuje bit po bicie iloczyn wykluczający (dysjunkcję) na całej długości bajtu.

Flagi nie są modyfikowane.

Gdy operandem jest port używana jest wartość z zatrzasku, a nie linii wejściowych.

XRL A,#data

XRL A,byte

XRL direct,A

XRL direct,#data

Page 50: Lista rozkazów mikrokontrolera 8051...Mikrokontroler 8051 potrzebuje na wykonanie instrukcji minimum 12 cykli zegara (tak zwany cykl maszynowy). Są instrukcje wolniejsze, wymagające

Zerowanie: CLRZerowanie: CLRInstrukcja zeruje wszystkie bity akumulatora.

Flagi nie są modyfikowane.

CLR A

Page 51: Lista rozkazów mikrokontrolera 8051...Mikrokontroler 8051 potrzebuje na wykonanie instrukcji minimum 12 cykli zegara (tak zwany cykl maszynowy). Są instrukcje wolniejsze, wymagające

Negacja: CPLNegacja: CPLInstrukcja zaneguje wszystkie bity akumulatora.

Flagi nie są modyfikowane.

CPL A