Model programowy i zestaw instrukcji M68HC11
|
|
- Franciszek Marcin Sikora
- 8 lat temu
- Przeglądów:
Transkrypt
1 Model programowy i zestaw instrukcji M68HC11
2 1.Model programowy M68HC11 W tej części zajmiemy się opisem architektury jednostki centralnej, trybów adresowania i zestawem instrukcji. Opisy zawierać będzie również przykłady, pokazujące jak wydajnie wykorzystać te architekturę i zestaw instrukcji. Rysunek przedstawia model programowy jednostki centralnej M68HC11. Rejestry jednostki centralnej są integralną jej częścią a zatem nie są adresowane, w sposób w jaki adresuje się lokacje pamięci. Każdy z tych rejestrów został opisany w oddzielnym paragrafie. 1.1 Akumulatory (A,B i D) Akumulatory A i B są 8-bitowymi akumulatorami ogólnego przeznaczenia i są wykorzystywane do przechowywania operandów i wyników operacji arytmetycznych oraz wyników manipulacji danymi. Niektóre z instrukcji traktują te dwa 8-bitowe akumulatory jak 16-bitowy podwójny akumulator (akumulator D). Większość instrukcji może wykorzystywać akumulatory A i B wymiennie. Jednakże jest kilka znaczących wyjątków. Instrukcje ABX i ABY dodają zawartość 8-bitowego akumulatora B do zawartości 16-bitowego rejestru indeksowego X lub Y. Nie ma natomiast równoważnych instrukcji wykorzystujących do tego celu akumulator A. Instrukcje TAP i TPA są używane do przeniesienia danych z akumulatora A do rejestru flagowego bądź z rejestru flagowego do akumulatora A. Nie ma natomiast równoważnych instrukcji wykorzystujących do tego celu akumulator B. Instrukcja wyrównania dziesiętnego akumulatora A (DAA) jest wykorzystywana po operacjach arytmetycznych w kodzie BCD, nie ma natomiast odpowiedniej instrukcji wyrównującej dziesiętnie akumulator B. W końcu, instrukcje
3 dodawania, odejmowania i porównywania wykorzystujące równocześnie akumulatory A i B (ABA,SBA i CBA) działają tylko w jednym kierunku. Z tego powodu należy uważać, aby odpowiedni operand znalazł się w odpowiednim akumulatorze. 1.2 Rejestry indeksowe (X i Y) 16-bitowe rejestry X i Y są wykorzystywane do adresowania indeksowego. W trybie adresowanie indeksowego zawartość 16-bitowego rejestru indeksowego jest dodawana do 8-bitowego przesunięcia (offset), które stanowi część instrukcji. W wyniku czego otrzymujemy adres efektywny operandu wykorzystywanego przez instrukcję. W większości przypadków kod instrukcji wykorzystującej adresowanie za pomocą rejestru Y jest dłuższy o jeden bajt, a wykonanie takiej instrukcji zajmuje jeden cykl więcej, niż w przypadku instrukcji wykorzystującej adresowanie rejestrem X. Fakt, że M68HC11 posiada dwa rejestry indeksowe jest szczególnie użyteczny dla instrukcji przesłań oraz wtedy, gdy operandy uwikłane w obliczenia pochodzą z dwóch oddzielnych tablic. We wcześniejszych M6800 i M6801 programista musiał przechowywać jeden indeks w jakiejś tymczasowej lokacji, tak aby wartość drugiego indeksu mogła być załadowana do rejestru indeksowego. Instrukcje ABX i ABY wraz z instrukcjami inkrementacji i dekrementacji umożliwiają arytmetyczne operacje na rejestrach indeksowych. Jednak często potrzebne są poważniejsze obliczenia. Wówczas powinno się korzystać z instrukcji wymiany (XGDX i XGDY), aby załadować wartość indeksu do 16- bitowego podwójnego akumulatora, na którym można już wykonywać znacznie bardziej skomplikowane operacje arytmetyczne. Bardzo częstym zwyczajem jest ładowanie do jednego z rejestrów indeksowych adresu początkowego wewnętrznej przestrzeni rejestrowej (zwykle $1000), co pozwala na dostęp w indeksowym trybie adresowania do któregokolwiek z rejestrów kontrolnych. Kod instrukcji, korzystającej z adresowania indeksowego, ma mniej bajtów niż kod odpowiedniej instrukcji, korzystającej z adresowania rozszerzonego. Mocniejszym argumentem, przemawiającym za używaniem adresowania indeksowego zamiast adresowania rozszerzonego przy dostępie do przestrzeni rejestrowej, jest fakt,że instrukcje manipulujące bitami używają adresowania indeksowego, a nie adresowania rozszerzonego. 6.3 Wskaźnik stosu (SP) Jednostka centralna automatycznie obsługuje stos programowy. Stos ten może być umieszczony gdziekolwiek w 64-kilobajtowej przestrzeni adresowej a jego rozmiar nie może przekroczyć wielkości pamięci dostępnej w systemie. Normalnie wskaźnik stosu jest inicjalizowany poprzez jedną z pierwszych instrukcji programu. Za każdym razem gdy bajt kładziony jest na stos, wskaźnik stosu jest automatycznie dekrementowany, a za każdym razem, gdy bajt ściągany jest ze stosu, wskaźnik stosu jest inkrementowany. Wskaźnik stosu przez cały czas przechowuje 16- bitowy adres następnej wolnej lokacji na stosie. Stos wykorzystywany jest przy wywołaniach podprogramów, przerwaniach i przechowywaniu tymczasowych wartości danych. Gdy podprogram jest wywoływany poprzez instrukcje JSR (Jump to Subroutine) bądź BSR (Branch to Subroutine), wówczas na stos jest kładziony adres następnej instrukcji po JSR lub BSR (mniej znaczący bajt najpierw). Gdy podprogram jest zakończony, wykonywany jest powrót z podprogramu (RTS). Instrukcja RTS powoduje ściągnięcie ze stosu adresu powrotnego, i wykonywanie dalszej części programu jest kontynuowane właśnie od tego adresu.
4 Za każdym razem, gdy nastąpi przerwanie (o ile nie jest zamaskowane), trwająca instrukcja jest kończona normalnie. Dopiero wtedy na stos jest kładziony adres następnej instrukcji (bieżąca wartość licznika programu), wszystkie rejestry jednostki centralnej a wykonywanie jest kontynuowane od adresu określonego wektorem przerwania o najwyższym priorytecie. Po zakończeniu obsługi przerwania, wykonywana jest instrukcja powrotu z przerwania (RTI). Instrukcja RTI powoduje, że zapisane rejestry są ściągane ze stosu w odwrotnym porządku, a wykonanie programu jest wznawiane tak jakby nie było przerwania. Innym zwykłym użyciem stosu jest składowanie tymczasowych wartości rejestrów. Prostym przykładem może być sytuacja, kiedy podprogram korzysta z akumulatora A. Użytkownik może położyć na stosie akumulator po wejściu w podprogram i ściągnąć go ze stosu tuż przed powrotem z podprogramu. Dzięki temu możemy mieć pewność, że dane zawarte w rejestrze nie ulegną zmianie w wyniku wykonania podprogramu. Najważniejszym aspektem stosu jest fakt, że jest on całkowicie automatyczny. Programista musi się jedynie martwić o to, aby wskaźnik stosu wskazywał użyteczną pamięć RAM o wystarczająco dużym rozmiarze. 1.4 Licznik programu (PC - Program Counter) Licznik programu jest 16-bitowym rejestrem przechowującym adres następnej instrukcji, która ma być wykonana. 1.5 Rejestr flagowy (CCR - Condition Code Register) Rejestr ten zawiera pięć znaczników statusowych, dwa bity maskowania przerwań, i bit wyłączający STOP. Rejestr zawdzięcza swoją nazwę pięciu bitom statusowym, które stanowią główne wykorzystanie tego rejestru. We wcześniejszych mikroprocesorach M6800 i M6801, nie było bitu X (maskującego przerwanie), ani bitu wyłączającego STOP. Pięć znaczników statusowych odzwierciedla wyniki operacji (arytmetycznych i innych), które wykonuje jednostka centralna. Tymi znacznikami są: przeniesienie połówkowe (H), negacja(n), zero(z), przepełnienie (V) i przeniesienie/pożyczka (C). Znacznik przeniesienia połówkowego jest używany jedynie przy operacjach arytmetycznych wykonywanych w kodzie BCD. Zmieniają go jedynie instrukcje ABA,ADD i ADC (co w sumie daje 21 kodów instrukcji). Bity statusowe N,Z,V,C pozwalają na skoki programowe oparte na wynikach poprzednich instrukcji. Proste skoki uzależnione są po prostu od stanu któregoś z tych czterech bitów. Dla warunków typu <,,=,,,> możliwe są skoki znakowe i bezznakowe. Bit H wskazuje na przeniesienie z 3 bitu podczas operacji dodawania. Ten znacznik statusowy pozwala jednostce centralnej na wyrównanie wyniku 8-bitowego dodawania w kodzie BCD, tak aby wynik ten był również w formacie BCD, pomimo tego że dodawanie było operacją binarną. Bit ten (H), który jest uaktualniany tylko przez instrukcje ABA, ADD, ADC, jest używany przez instrukcję DAA do kompensacji wyniku w akumulatorze A do poprawnego formatu BCD. Bit N odzwierciedla stan najbardziej znaczącego bitu(msb) wyniku. W kodzie U2 (uzupełnienia do dwóch), liczba jest ujemna,gdy najbardziej znaczący bit jest ustawiony, a dodatnia, gdy bit ten jest zerem. Bit N ma również inne zastosowanie oprócz operacji w kodzie U2. Jeśli
5 umieścimy często testowany bit flagowy w MSB rejestru lub lokacji pamięci, będziemy mogli testować ten bit poprzez załadowanie akumulatora (instrukcja LDA). Bit Z jest ustawiany gdy wszystkie bity wyniku są zerami. Instrukcje porównań dokonują wewnętrznego odejmowania, a znaczniki statusowe rejestru flagowego, włącznie ze znacznikiem Z, odzwierciedlają wynik tego odejmowania. Nieliczne instrukcje (INX,DEX,INY i DEY) zmieniają wyłącznie bit Z, bez zmieniania innych znaczników. Dla tych operacji użytkownik może określić jedynie = i. Bit V jest używany do wskazania, że nastąpiło przepełnienie przy operacjach w kodzie U2. Bit C jest zwykle używany do wskazania, że w wyniku dodawania/odejmowania nastąpiło przeniesienie/pożyczka. Bit C jest również znacznikiem błędu przy operacjach mnożenia i dzielenia. Instrukcje przesunięć i obrotów działają z i poprzez bit C, aby ułatwić operacje przesunięć słów wielokrotnych. W jednostce centralnej M68HC11 znaczniki są uaktualniane automatycznie po wykonaniu prawie każdej z instrukcji, a zatem rzadko wykonuje się dodatkowe instrukcje tylko po to, żeby uaktualnić znaczniki.. Na przykład, instrukcje załadowania akumulatora A (LDAA) i położenia na stos akumulatora A (STAA) automatycznie ustawiają bądź zerują znaczniki N,Z i V. (W niektórych innych architekturach, jedynie nieliczne instrukcje zmieniają znaczniki, a zatem należy wykonać dwie instrukcje, aby załadować i przetestować zmienną). W procesorze Motoroli wyzwanie leży w znalezieniu instrukcji, które nie zmieniają znaczników w rzadkich przypadkach, gdzie jest to pożądane. Do najważniejszych instrukcji, które nie zmieniają znaczników są instrukcje położenia na stosie, ściągnięcia ze stosu, dodania B do X (ABX), dodania B do Y (ABY) i 16-bitowe wymiany i transferu. Bit blokady instrukcji STOP (S) jest używany do pozwolenia na wykonanie lub zabronienia wykonania instrukcji STOP. Niektórzy użytkownicy uznają, że instrukcja STOP jest niebezpieczna ponieważ powoduje zatrzymanie oscylatora. Jednakże użytkownik ma zawsze możliwość zablokowania tej instrukcji poprzez ustawienie bitu S w rejestrze flagowym (CCR). Jeśli instrukcja STOP zostanie napotkana podczas wykonywania programu przy ustawiony bicie S, będzie traktowana jako instrukcja NOP i wykonywanie będzie kontynuowane dalej. Maska żądania przerwania (IRQ) - bit I, jest globalną maską, która blokuje wszystkie maskowalne źródła przerwań. Gdy bit I jest ustawiony, przerwania pozostają nie obsłużone i zapamiętane, a jednostka centralna kontynuuje nieprzerwanie swe działanie, aż do chwili wyzerowania bitu I. Po którymkolwiek z resetów, bit I jest ustawiany automatycznie i może być wyzerowany jedynie poprzez software ową instrukcję. Gdy nastąpi jakiekolwiek przerwanie, bit I jest ustawiany automatycznie tuż po położeniu na stos rejestrów, ale przed pobraniem wektora przerwania. Po obsłużeniu przerwania, zwykle wykonywana jest instrukcja RTI, przywracająca rejestrom wartości, które rejestry te zawierały przed wystąpieniem przerwania. Zwykle bit I jest wyzerowany po wykonaniu instrukcji RTI. Chociaż przerwania mogą być odmaskowane wewnątrz programu obsługi przerwania, to postępowanie takie jest nietypowe, gdyż umożliwia zagnieżdżanie przerwań, co wymaga zwiększonej uwagi ze strony programisty niż przy jednopoziomowych przerwaniach i rzadko usprawnia działanie systemu.
6 Maska XIRQ - bit X, jest używana do blokowania przerwań pochodzących z nóżki NOTXIRQ. Po którymkolwiek z resetów, X jest ustawiany automatycznie i może być wyzerowany jedynie poprzez instrukcję software ową. Gdy pojawia się NOTXIRQ, bit X ( i bit I) są automatycznie ustawiane po położeniu na stos rejestrów, ale przed pobraniem wektora przerwania. Po obsłużeniu przerwania, zwykle wykonywana jest instrukcja RTI, przywracająca rejestrom wartości, które rejestry te zawierały przed wystąpieniem przerwania. Logicznym jest założenie, że bit X był wyzerowany przed wystąpieniem przerwania, a zatem bit ten powinien być również wyzerowany po wykonaniu instrukcji RTI. Chociaż przerwania mogą być odmaskowane wewnątrz programu obsługi przerwania, to postępowanie takie jest nietypowe, gdyż umożliwia zag nieżdżanie przerwań, co wymaga zwiększonej uwagi ze strony programisty niż przy jednopoziomowych przerwaniach 2. Tryby adresowan ia W jednostce centralnej M68HC11 przy odwoływaniu się do pamięci możliwe jest użycie sześciu trybów adresowania: 1 natychmiastowego 2 bezpośredniego 3 rozszerzonego 4 indeksowego 5 wbudowanego (inherent) 6 względnego Niektóre z instrukcji wymagają dodatkowego bajtu (tzw. przedrostka -prebyte) przed kodem operacji, aby możliwa było skorzystanie z wielostronicowej mapę kodów operacji. Każdy z trybów adresowania (poza właściwym) daje w wyniku wewnętrznie generowaną, dwubajtową wartość określaną jako adres efektywny. Adres efektywny, wynikający z pola operandu wyrażenia, pojawia się na szynie adresowej podczas tej części instrukcji, która odwołuje się do pamięci. Tryb adresowania jest ukrytą częścią każdej instrukcji M68HC11. Instrukcje związane z manipulacją bitami, gdy są wykonywane, używają w rzeczywistości dwóch lub trzech trybów adresowania. Klasyfikowane są jednak ze względu na tryb adresowania użyty przy dostępie do pierwszego z operandów. Wszystkie instrukcje manipulujące bitami (BCLR, BSET, BRCLR, BRSET),by pobrać bit-maskę używają adresowania natychmiastowego, a kolejne odmiany rozgałęzień(bcc, BCS itd.-za wyjątkiem BRCLR i BRSET, które wykorzystują również inne tryby adresowania) używają względnego trybu adresowania, by określić miejsce od którego ma nastąpić wznowienie wykonywania instrukcji po rozgałęzieniu. Następne paragrafy opisują kolejne tryby adresowania. W tych opisach adres efektywny wskazuje adres pamięci, z którego jest pobierany argument lub w którym jest umieszczany argument lub od którego wykonywanie programu jest kontynuowane.
7 2.1 Adresowanie natychmiastowe (IMM) W trybie adresowania natychmiastowego argument znajduje się w bajcie (bajtach) następującym zaraz po instrukcji. Liczba bajtów takiego argumentu odpowiada rozmiarowi rejestru. Instrukcje korzystające z tego trybu adresowania mogą być dwu, trzy, lub czterobajtowe (jeśli wymagany jest przedrostek) Bajt (bajty) kodu maszynowego następującego po kodzie operacji są wartością wyrażenia a nie adresem wartości. W tym przypadku adres efektywny jest wyszczególniony poprzez znak # i wskazuje na następny bajt po kodzie operacji. Wa rtość natychmiastowa jest ograniczona do jednego lub dwóch bajtów w zależności od rejestru wykorzystywanego przez instrukcję. Pokazano przykłady kilku wyrażeń w języku assemblera wykorzystujących tryb adresowania bezpośredniego. Symbole używane w tych wyrażeniac h są zdefiniowane zaraz po przykładach. Kod Etykieta Operacja Operand maszynowy CAT EQU 7 ORG $1000 REGS EQU * LDAA #22 C8 34 EORB #$ CMPA #% LDAA #CAT CC LDD #$1234 CC LDD # LDAA #@ LDAA # A CE LDX #REGS Pierwsze trzy wyrażenia są dyrektywami assemblerowymi ustawiającymi wartości, które będą użyte przez pozostałe wyrażenia. Pozostałe dziewięć wyrażeń są przykładami natychmiastowego adresowania. Wartość pola operandu każdego wyrażenia pojawia się w bajcie (bajtach) następujących po kodzie operacji. Pole operandu dla adresowania bezpośredniego zaczyna się od znaku #. Znak # jest używany przez assemblera do wykrycia bezpośredniego trybu adresowania. Bardzo częstym błędem programowym jes t pominięcie tego znaku. Po znaku # możliwe jest użycie różnorodnych symboli. Ponieważ nie wszystkie assemblery używają tych samych reguł dotyczących składni i znaków specjalnych, użytkownik powinien odwoływać się do dokumentacji konkretnego assemblera, którego będzie używał. Prefiksy używane w przykładzie mają następujące znaczenie: Prefiks Znaczenie brak dziesiętnie $ ósemkowo % binarnie znak ASCII
8 2.2 Adresowanie rozszerzone (EXT) W przypadku adresowania rozszerzonego, adres efektywny pojawia się w dwóch bajtach następujących po kodzie operacji. Z tego powodu większości instrukcji zawierają bezwzględny adres operandu. Może się zdarzyć, że instrukcja, korzystająca z tego adresowania, ma cztery bajty, dzieje się tak gdy potrzebny jest przedrostek (?Instrukcje mają przedrostek wyboru strony przed kodem operacji, jeśli są instrukcjami z drugiej, trzeciej lub czwartej strony mapy kodów operacji?). Tylko cztery instrukcje, które operują na rejestrze indeksowym Y i wykorzystują adresowanie rozszerzone, wymagają takiego przedrostka. 2.3 Adresowanie bezpośrednie (DIR) W adresowaniu bezpośrednim, najmniej znaczący bajt adresu efektywnego umieszony jest w pierwszym bajcie po kodzie operacji. Bardziej znaczący bajt adresu efektywnego ma domyślną wartość równą $00. Nie jest on włączany do kodu instrukcji co oszczędza pamięć i czas wykonania. Fakt ten ogranicza wykorzystanie adresowania bezpośredniego do wskazywania wyłącznie na operandy, które znajdują się w obszarze pamięci od $0000 do $00FF, nazywanego stroną bezpośrednią. Z tego powodu adresowanie bezpośrednie jest czasem nazywane adresowaniem strony zero. Większości instrukcji wykorzystujących adresowanie bezpośrednie ma długość dwóch bajtów: jeden bajt przypada na kod operacji a drugi na adres efektywny. Instrukcje mają przedrostek wyboru strony przed kodem operacji, jeśli są instrukcjami z drugiej, trzeciej lub czwartej strony mapy kodów operacji (wtedy instrukcja taka ma trzy bajty). Tylko cztery instrukcje, które operują na rejestrze indeksowym Y i wykorzystują adresowanie bezpośrednie, wymagają takiego przedrostka. Adresowanie bezpośrednie pozwala użytkownikowi na dostęp do bajtów $0000-$00FF, przy użyciu instrukcji, które potrzebują jednego bajtu mniej z pamięci programu niż równoważne instrukcje, wykorzystujące adresowanie rozszerzone. Przez wyeliminowanie dodatkowego dostępu do pamięci czas wykonywania jest skracany o jeden cykl. W perspektywie olbrzymich programów oszczędność ta może okazać się nieoceniona. W większości aplikacji domyślna mapa pamięci mikrokontrolera zawiera w obszarze $0000-$00FF pamięć RAM, co jest rozsądnym posunięciem, gdyż projektant może zapełniać ten obszar danymi do których później się często odwołuje. W niektórych aplikacjach mikrokontrolerowych pożądanym jest umieszczenie w tym obszarze rejestrów wewnętrznych. Takie rozwiązanie może być korzystne w aplikacjach kładących nacisk na I/O, w których ważne jest oszczędne gospodarowanie pamięcią programu lub które mają bardzo obostrzone wymagania czasowe i dodatkowy cykl z adresowania rozszerzonego mógłby być niepożądany. W mikrokontrolerze M68HC11 software może tak skonfigurować mapę pamięci, aby przestrzeń $0000-$00FF zajęta była przez wewnętrzny RAM i/ lub wewnętrzne rejestry lub pamięć zewnętrzną. Istnieje pewna grupa instrukcji, która może wykorzystywać adresowanie rozszerzone a nie może wykorzystywać adresowania bezpośredniego. Instrukcje te są członkami grupy zwanej instrukcjami odczytu-modyfikacji-zapisu (kody operacji $40-$7F poza JMP i TST). Przykładami instrukcji z tej grupy są instrukcje INC, DEC, CLR, COM. Każda z nich obsługuje adresowanie rozszerzone a nie obsługuje adresowania bezpośredniego.
9 2.4 Adresowanie indeksowe (INDX, INDY) W adresowaniu indeksowym do obliczenia adresu efektywnego wykorzystywany jest któryś z rejestrów indeksowych. A zatem adres efektywny jest zmienny i zależy od aktualnej zawartości rejestru indeksowego X lub Y oraz ustalonego 8-bitowego przesunięcia bez znaku zawartego w instrukcji. Ten tryb adresowania może być użyty do wskazania na którąkolwiek lokację pamięci w 6kkilobajtowej przestrzeni adresowej. Instrukcje takie składają się zwykle z dwóch lub trzech bajtów (jeśli wymagany jest przedrostek) - kodu operacji i 8-bitowego przesunięcia. W systemach mikroprocesorowych instrukcje umieszczane są w pamięci ROM (tylko do odczytu). Z tego względu przesunięcie znajdujące się w instrukcji należy rozważać jako ustaloną wartość zdeterminowaną w czasie asemblacji a nie w czasie wykonywania programu. Używanie dynamicznych jednobajtowych przesunięć jest możliwe przy użyciu instrukcji dodaj akumulator B do rejestru indeksowego X (ABX). Bardziej złożone obliczenia adresu są wspomagane przez arytmetyczne możliwości 16-bitowego akumulatora D i instrukcje XGDX i XGDY. Jeśli nie określono przesunięcia, kod maszynowy będzie zawierał $00 w bajcie przesunięcia. Przesunięcie jest jednobajtową wartością bez znaku, która po dodaniu do aktualnej zawartości rejestru indeksowego, określa adres efektywny, nie zmieniając przy tym zawartości rejestru indeksowego. Ponieważ przesunięcie jest bez znaku, można określić jedynie dodatnie wartości przesunięcia z przedziału od Aby użyć adresowania indeksowego w celu uzyskania dostępu do rejestrów wewnętrznych M68HC11, najlepiej jest zainicjalizować rejestr indeksowy adresem startowym bloku rejestrów (zwykle $1000) i użyć 8-bitowego przesunięcia (w zakresie $ 00-$3F) w instrukcjach, które używają rejestrów wewnętrznych. Ta metoda jest zdecydowanie bardziej preferowana o d metody p olegającej na załadow aniu do rejestru indeksowego 16- bitowego adresu i użycia zerowego przesunięcia w instrukcji. Ta metoda wymaga modyfikacji zawartości reje stru indeksoweg o przy każdym dostępie do rejestru podczas gdy poprzednia takiej modyfikacji ni wymaga. Przykłady adresowania indeksowego ( EA oznacza adres efektywny). K od maszyn owy Etykieta Operacja Operand Komentarz E3 00 ADDD X EA=(X) E3 00 ADDD,X EA=(X) E3 00 ADDD 0,X EA=(X) E3 04 ADDD 4,X EA=(X)+4 CAT EQU 7 definicja CAT=7 E3 07 ADDD CAT,X EA=(X)+7 E3 22 ADDD $22,X EA=(X)+$22 E3 22 ADDD CAT*8/2+ EA=(X)+(CAT*8/2+6) 6,X
10 Instrukcje manipulujące bitami mogą używać adresowania bezpośredniego i indeksowego natomiast nie mogą używać adresowania rozszerzonego. Z tego powodu adresowanie indeksowe staje się bardzo ważne ponieważ adresowania bezpośrednie pozwala na dostęp jedynie do pierwszych 256 lokacji pamięci. Adresowanie indeksowe tymczasem pozwala na dostęp do 64 kilobajtowej mapy pamięci. Drugi rejestr indeksowy (Y) podnosi wydajność operacji przesłań i operacji dotyczących danych z więcej niż jednej tablicy. Większość instrukcji wykorzystujących rejestr Y wymaga dwubajtowego kodu operacji, a zatem wymaga jednego bajtu pamięci programu i jednego cyklu magistrali więcej niż odpowiednia instrukcja korzystająca z rejestru indeksowego X. 2.5 Adresowanie wbudowane Wszystko informacje potrzebne do wykonania instrukcji korzystającej z adresowania wbudowanego są znane przez jednostkę centralną. Operandami są zwykle rejestry mikroprocesora, a zatem nie trzeba ich pobierać z pamięci. Instrukcje takie składają się z jednego lub dwóch bajtów. Wiele instrukcji mikrokontrolera M68HC11 używa jako operandu jednego lub więcej rejestrów. Na przykład instrukcja ABA wykonuje dodanie zawartości akumulatorów A i B i umieszcza wynik w akumulatorze A. Instrukc ja INCB zwiększa zawartość akumulatora B o jeden. Podobnie, instrukcja INX zwiększa zawartość rejestru indeksowego o jeden. Poniżej podano przykłady trzech wyrażeń assemblerowych korzystających z adresowania wbudowanego. Kod Etykieta Operacja Operand Komentarz maszynowy 1B ABA A+B A 5C INCB B+1 B 08 INX X+1 X 2.6 Adresowanie względne Adresowanie względne jest używane wyłącznie przy instrukcjach skoków programowych. Instrukcje skoków, z wyjątkiem skokowych wersji instrukcji manipulacji bitami (BRCLR, BRSET), złożone są z dwóch bajtów: kodu operacji i względnego przesunięcia. Bajt przesunięcia jest wartością ze znakiem w kodzie U2 z przedziału -128 do 127 ( w odniesieniu do adresu instrukcji następującej zaraz po instrukcji skoku. Jeśli warunek skoku zostanie spełniony, zawartość 8-bitowego bajtu ze znakiem następującego po kodzie operacji jest dodawana do zawartości licznika programu w celu uzyskania adresu efektywnego skoku. W przeciwnym razie wykonanie programu jest kontynuowane od następnej instrukcji po instrukcji skoku. Bajt przesunięcia jest zawsze ostatnim bajtem instrukcji skoku. Jeśli przesunięcie wynosi zero, wykonanie programu jest kontynuowane od następnej instrukcji po instrukcji skoku, niezależnie od wyniku sprawdzenia warunku. Instrukcja skoku bezwarunkowego (BRA) z przesunięciem $ FE (-2 w kodzie U2)spowoduje skok powrotny do niej samej co da w wyniku nieskończoną pętlę. Instrukcje skoku BRCLR i BRSET wykorzystujące adresowanie bezpośrednie lub indeksowe są instrukcjami czterobajtowymi, a zatem przesunięcie $FC (-4 w kodzie U2) spowoduje powtarzanie wykonywania instrukcji do chwili, kiedy warunek nie będzie spełniony.
11 Instrukcje skoku BRCLR i BRSET wykorzystujące adresowanie indeksowe rejestrem indeksowym Y są pięciobajtowe, a zatem przesunięcie $FB (-5 w kodzie U2) spowoduje powtarzanie wykonywania instrukcji do chwili, kiedy warunek nie będzie spełniony. 3. Zestaw instrukcji M68HC11 Rozdział ten poświęcony jest wyjaśnieniu podstawowych możliwości i organizacji zestawu instrukcji. Zestaw instrukcji podzielono na grupy funkcjonalne instrukcji. Na przykład instrukcja transferu akumulatora A do rejestru flagowego CCR (TAP) pojawia się zarówno w grupie instrukcji odnoszących się do rejestru flagowego jak i w podgrupie instrukcji załadowania/położenia na stos/transferu należącej do grupy instrukcji odnoszących się do akumulatora i pamięci. W celu rozszerzenia liczby instrukcji używanych w mikrokontrolerze M68HC11 wprowadzono przedrostek, pojawiający się w instrukcjach, które zostały dodane. Większość z tych instrukcji związanych jest z rejestrem Y. Instrukcje bez przedrostka znajdują się na stronie pierwszej mapy kodów operacji. Instrukcje z przedrostkiem znajdują się na stronie 2,3,4 mapy kodów operacji. Strona 2 mapy kodów operacji posługuje się przedrostkiem $18, strona 3 przedrostkiem $1A a strona 4 przedrostkiem $CD. Przedrostek odnosi się tylko do kodu operacji znajdującego się bezpośrednio za nim. Z tego powodu wszystkie instrukcje z założenia mają jednobajtowy kod operacji, chyba że pierwszym bajtem instrukcji jest jeden z przedrostków odpowiadających którejś ze stron mapy kodów operacji (poza stroną pierwszą). 3.1 Instrukcje dotyczące akumulatora i pamięci Większość z tych instrukcji używa dwóch operandów. Jeden z operandów jest albo akumulatorem albo rejestrem indeksowym, podczas gdy drugi operand jest uzyskiwany z pamięci przy użyciu któregoś z trybów adresowania omawianych wcześniej. Instrukcje dotyczące akumulatora i pamięci można podzielić na sześć podgrup: 1)załadowań, umieszczenia w pamięci, transferów 2)operacji arytmetycznych 3)mnożenia i dzielenia 4)operacji logicznych 5)testowania danych i manipulacji bitami 6)przesunięć i obrotów Podgrupy te zostały omówione w kolejnych paragrafach Załadowania, umieszczenia w pamięci i tra nsfery Praktycznie wszystkie czynności mikrokontrolera ma ją za zadanie transfer danych z pamięci i urządzeń peryferyjnych do jednostki centralnej lub transfer wyników z jednostki centralnej do pamięci lub urządzeń I/O. Załadowania, położenia na stosie i transfery związane z akumulatorami są podsumowane w poniższej tabeli. Załadowania, umieszczenia w pamięci i transfery związane z rejestrami indeksowymi i wskaźnikiem stosu są wyszczególnione w paragrafie 3.2
12 Funkcja Mnemonik IMM DIR EXT INDX INDY INH zerowanie bajtu pamięci CLR x x x zerowanie akumulatora A CLRA x zerowanie akumulatora B CLRB x załadowanie akumulatora A LDAA x x x x x załadowanie akumulatora B LDAB x x x x x załadowanie podwójnego LDD x x x x x akumulatora D ściągnięcie akumulatora A ze stosu PULA x ściągnięcie akumulatora B ze stosu PULB x położenie na stosie akumulatora A PSHA x położenie na stosie akumulatora B PSHB x umieszczenie w pamięci zawartości STAA x x x x x akumulatora A umieszczenie w pamięci zawartości STAB x x x x x akumulatora B umieszczenie w pamięci zawartości STD x x x x x podwójnego akumulatora D transfer akumulatora A do TAB x akumulatora B transfer akumulatora A do rejestru TAP x flagowego transfer akumulatora B do TBA x akumulatora A transfer rejestru flagowego do TPA x akumulatora A wymiana akumulatora D z XGDX x rejestrem indeksowym X wymiana akumulatora D z EGDY x rejestrem indeksowym Y Operacje arytmetyczne Ta grupa instrukcji obsługuje operacje arytmetyczne na różnego typu operandach. Operacje 8- bitowe i 16-bitowe są obsługiwane bezpośrednio i mogą być w łatwy sposób rozszerzone do obsługi wielosłowowych operandów. Operacje w kodzie U2 (ze znakiem) i kodzie binarnym (bez znaku) są obsługiwane bezpośrednio. Arytmetyka BCD jest obsługiwana poprzez normalne sekwencje instrukcji arytmetycznych i użycie instrukcji DAA, która przywraca format BCD. Instrukcje porównań wykonują wewnętrzne odejmowa nie w celu uaktualnienia rejestru flagowego bez zmieniania któregokolwiek z operand ów. Chociaż istnieją instrukcje testujące to są raczej rzadko używane, gdyż większość innych operacji automatycznie uaktualnia bity warunkowe.
13 Funkcja Mnemonik IMM DIR EXT INDX INDY INH dodaj akumulatory ABA X dodaj akumulator B do X ABX X dodaj akumulator B do Y ABY X dodaj z przeniesieniem do A ADCA X X X X X dodaj z przeniesieniem do B ADCB X X X X X dodaj zawartość pamięci do A ADDA X X X X X dodaj zawartość pamięci do B ADDB X X X X X dodaj zawartość pamięci do D (16- ADDD X X X X X bit) porównaj A z B CBA X porównaj A z zawartością pamięci CMPA X X X X X porównaj B z zawartością pamięci CMPB X X X X X porównaj D z zawartością pamięci CPD X X X X X (16 bit) wyrównaj dziesiętnie A (dla BCD) DAA X dekrementuj zawartość pamięci DEC X X X dekrementuj akumulator A DECA X dekrementuj akumulator B DECB X inkrementuj zawartość pamięci INC X X X inkrementuj akumulator A INCA X inkrementuj akumulator B INCB X zmień znak zawartości pamięci NEG X X X zmień znak akumulatora A NEGA X zmień znak akumulatora B NEGB X odejmij z przeniesieniem od SBCA X X X X X akumulatora A odejmij z przeniesieniem od SBCB X X X X X akumulatora B odejmij zawartość pamięci od A SUBA X X X X X odejmij zawartość pamięci od B SUBB X X X X X odejmij zawartość pamięci od D SUBD X X X X X (16 bit) sprawdź czy zero bądź minus TST X X X sprawdź zero lub minus w TSTA X akumulatorze A sprawdź zero lub minus w TSTB X akumulatorze B
14 3.1.3 Mnożenie i dzielenie Mikrokontroler obsługuje jeden rodza j mnożenia i dwa rodzaje dzielenia. Mnożenie 8-bit przez 8-bit daje wynik 16-bitowy. Dzielenie całkowite (IDIV) wykonuje dzielenie 16-bit przez 16-bit dając 16-bitowy wynik i 16-bitową resztę z dzielenia. Dzielenie ułamkowe (FDIV) dzieli 16- bittowy licznik przez większy 16-bitowy mianownik dając 16-bitowy wynik (binarnie ważony ułamek z przedziału 0 do ) i 16-bitową resztę. Funkcja Mnemonik INH mnożenie (A B D) MUL X dzielenie ułam kowe (D X X;r D) FDIV X dzielenie całkowite (D X X;r D) IDIV X Operacje logiczne Ta grupa instrukcji jest wykorzystywana do wykonania boolowskich operacji logicznych AND,inclusive OR, exclusive OR, uzup ełnienia do jednego ( U1). Funkcja Mnemonik IMM DIR EXT INDX INDY INH AND akumulatora A i zawartości ANDA X X X X X pamięci AND akumulatora B i zawartości ANDB X X X X X pamięci test bitów akumulatora A z BITA X X X X X zawartością pamięci test bitów akumulatora B z BITB X X X X X zawartością pamięci uzupełnienie do jednego (U1) COM X X X bajtu pamięci uzupełnienie do jednego (U1) COMA X akumulatora A uzupełnienie do jednego (U1) COMB X akumulatora B OR A z zawartością pamięci EORA X X X X X (Exclusive) OR B z zawartością pamięci EORB X X X X X (Exclusive) OR A z zawartością pamięci ORAA X X X X X (Inclusive) OR B z zawartością pamięci ORAB X X X X X (Inclusive)
15 3.1.5 Testowanie danych i manipulacje bitami Ta grupa instrukcji jest używana do operowania na operandach zarówno jednobitowych jak i jakiejkolwiek kombinacji bitów w obrębie którejkolwiek 8-bitowej lokacji w 64-kilobajtowej przestrzeni pamięci. Testy bitów (BITA i BITB) wyko nują wewnętrzną operację AND w celu uaktualnienia bitów warunkowych bez zmieniania żadnego z operandów. Instrukcji BSET i BCLR czytają operand, manipulują wybranymi bitami w obrębie oper andu, i zapisują wynik z powrotem pod adres operandu. Należy uważać przy użyciu instrukcji odczyt-modyfikacja-zapis takich jak BSET i BCLR, na I/O i rejestrach kontrolnych, ponieważ odczyt fizycznej lokacji nie zawsze odpowiada lokacji zapisywanej. Funkcja Mnemonik IMM DIR EXT INDX INDY test bitów akumulatora A z BITA X X X X X zawartością pamięci test bitów akumulatora B z BITB X X X X X zawartością pamięci zerowanie bitu(bitów) zawartości BCLR X X X pamięci ustawianie bitu(bitów) zawartości BSET X X X pamięci skok gdy bit(bity) równe zero BRCLR X X X skok gdy bit(bity) równe jeden BRSET X X X Przesunięcia i obroty Wszystkie instrukcje przesunięć i obrotów używają bitu przeniesienia w rejestrze flagowym razem z 8 i 16-bitowymi operandami instrukcji, co ułatwia rozszerzenie ic h działania na wielosłowowe operandy. Również przez ust awianie lub zerowanie bitu przeniesienia przed wykonaniem instrukcji przesunięcia lub obrotu, programista może łatwo sterować tym co będzie wprowadzone od otwartego końca o perandu. Arytmetyczne przesunięcie w prawo (ASR) podtrzymuje oryginalną wartość najstarszego bitu operandu, co umożliwia manipulację liczbami ze znakiem (U2) Funkcja Mnemonik IMM DIR EXT INDX INDY INH arytmetyczne przesunięcie w lewo ASL X X X pamięci arytmetyczne przesunięcie w lewo ASLA X akumulatora A arytmetyczne przesunięcie w lewo ASLB X akumulatora B arytmetyczne przesunięcie w lewo ASLD X akumulatora D arytmetyczne przesunięcie w ASR X X X prawo pamięci arytmetyczne przesunięcie w ASRA X prawo akumulatora A arytmetyczne przesunięcie w ASRB X
16 prawo akumulatora B (logiczne przesunięcie w lewo pamięci) (LSL) X X X (logiczne przesunięcie w lewo (LSLA) X akumulatora A) (logiczne przesunięcie w lewo (LSLB) X akumulatora B) (logiczne przesunięcie w lewo akumulatora D) (LSLD) X logiczne przesunięcie w prawo pamięci LSR X X X logiczne przesunięcie w prawo LSRA X akumulatora A logiczne przesunięcie w prawo LSRB X akumulatora B logiczne przesunięcie w prawo LSRD X akumulatora D obrót w lewo pamięci ROL X X X obrót w lewo akumulatora A ROLA X obrót w lewo akumulatora B ROLB X obrót w prawo pamięci ROR X X X obrót w prawo akumulatora A RORA X obrót w prawo akumulatora B RORB X Instrukcje logicznego przesunięcia w lewo są ujęte w nawiasy ponieważ nie ma różnicy pomiędzy nimi a instrukcjami arytmetycznego przesunięcia w lewo. Oba mnemoniki są rozpoznawane przez assemblera jako równoważne, ale rozróżnienie mnemoników tych instrukcji czyni zapis niektórych programów bardziej przejrzystym. 3.2 Instrukcje stosowe i rejestru indeksowego Następująca tabela podsumowuje instrukcje przeznaczone do operacji na 16-bitowych rejestrach indeksowych (X i Y) i 16-bitowym wskaźniku stosu. Funkcja Mnemonik IMM DIR EXT INDX INDY INH dodaj akumulator B do X ABX X dodaj akumulator B do Y ABY X porównaj X z zawartością pamięci CPX X X X X X (16-bit) porównaj Y z zawartością pamięci CPY X X X X X (16-bit) dekrementuj wskaźnik stosu DES X dekrementuj rejestr indeksowy X DEX X
17 dekrementuj rejestr indeksowy Y DEY X inkrementuj wskaźnik stosu INS X inkrementuj rejestr indeksowy X INX X inkrementuj rejestr indeksowy Y INY X załaduj do rejestru indeksowego X LDX X X X X X załaduj do rejestru indeksowego Y LDY X X X X X załaduj do wskaźnika stosu LDS X X X X X ściągnij X ze stosu PULX X ściągnij Y ze stosu PULY X połóż X na stosie PSHX X połóż Y na stosie PSHY X umieść w pamięci rejestr STX X X X X X indeksowy X umieść w pamięci rejestr STY X X X X X indeksowy Y umieść w pamięci wskaźnik stosu STS X X X X X transferuj wskaźnik stosu do X TSX X transferuj wskaźnik stosu do Y TSY X transferuj X do wskaźnika stosu TXS X transferuj Y do wskaźnika stosu TYS X wymień D z X XGDX X wymień D z Y XGDY X Dzięki wymianie D z X (XGDX) i wymianie D z Y (XDGY) możemy w prosty sposób przenieść wartość wskaźnika z 16-bitowego rejestru indeksowego do akumulatora D, który ma znacznie potężniejsze możliwości arytmetyczne niż 16-bitowe rejestry indeksowe. Ponieważ są to wymiany dwukierunkowe, oryginalna wartość akumulatora D jest automatycznie zachowana w rejestrze indeksowym, podczas gdy wskaźnik jest przetwarzany w akumulatorze D. Gdy operacje na wskaźniku zostaną zakończone wówczas następna instrukcja wymiany uaktualnia rejestr indeksowy a akumulatorowi D przywraca poprzednią wartość. Transfery pomiędzy rejestrem indeksowym i wskaźnikiem stosu wymagają dodatkowego komentarza. Wskaźnik stosu zawsze wskazuje następną wolną lokację na stosie. Zwykłym powodem transferowania wskaźnika stosu do rejestru indeksowego jest umożliwienie dostępu do informacji poprzednio położonej na stosie przy pomocy adresowania indeksowego. W takich przypadkach pod adresem wskazywanym przez wskaźnik stosu nie ma żadnej wartości, ponieważ pod tą lokacją jeszcze nic nie zostało zapisane. Fakt ten wyjaśnia dlaczego wartość wskaźnika stosu jest inkrementowana podczas transferów do rejestru indeksowego. Przy transferze z rejestru indeksowego do wskaźnika stosu dokonuje się odpowiednio dekrementacji rejestru indeksowego.
18 3.3 Instrukcje wykonujące operacje na r ejestrze flagowym Instrukcje te umożliwiają programiście manipulowanie bitami w rejestrze flagowym. Funkcja Mnemonik INH wyzeruj bit przeniesienia CLC X wyzeruj bit maskowania przerwań CLI X wyzeruj bit przepełnienia CLV X ustaw bit przeniesienia SEC X ustaw bit maskowania przerwań SEI X ustaw bit przepełnienia SEV X transferuj A do rejestru flagowego TAP X transferuj rehestr flagowy do A TPA X Początkowo może się wydawać, że powinny być instrukcje zerujące i ustawiające każdy z ośmiu bitów rejestru flagowego, jednakże te instrukcje są dostępne jedynie dla trzech z ośmiu bitów (C,I,V). Po bliższym rozważeniu można znaleźć dobre argumenty przemawiające za tym, żeby dla pozostałych pięciu bitów nie było takich instrukcji. Bit wyłączenie STOPu jest szczególnym przypadkiem. Gdyby istniały instrukcje zerujące i ustawiające ten bit, mogłoby nastąpić łatwe uaktywnienie STOPu wtedy kiedy jest to niepożądane i na odwrót mogłoby nastąpić łatwe zablokowanie STOPu wtedy kiedy instrukcja ta jest potrzebna. Tymczasem instrukcja TAP umożliwia zmianę bitu S, ograniczając przy tym możliwość niepożądanej jego zmiany, ponieważ wartość akumulatora A w czasie wykonywania instrukcji TAP określa czy bit S się zmieni. Maska XIRQ (bit X) jest kolejnym szczególnym przypadkiem. Definicja tego bitu ściśle określa, że software nie może zmienić X z zera na jeden (prawdę mówiąc ta zmiana jest nawet zabroniona przez logikę hardware ową. Własność ta automatycznie eliminuje potrzebę istnienia instrukcji ustawiającej bit X. Można użyć podobnych argumentów przemawiających za brakiem instrukcji zerującej bit X jak w przypadku bitu S. Instrukcja TAP jest lepsza od instrukcji zerującej bit X, ponieważ TAP czyni mniej prawdopodobnym wyzerowanie bitu X bez zamierzenia programisty. Bit przeniesienia połówkowego (H) nie musi być zerowany czy ustawiany, ponieważ ten bit rejestru flagowego jest wykorzystywany jedynie przez instrukcję DAA do wyrównania wyniku dodawania lub odejmowania BCD. Ponieważ bit H nie jest używany jako bit warunkowy dla żadnego ze skoków, nie jest potrzebne jego zerowanie czy ustawianie. Pozostają jedynie bity N i Z. W przeciwieństwie do bitów S,X i H, łatwe ustawianie i zerowanie tych flag jest często bardzo użyteczne. Instrukcja zerująca akumulator, taka jak CLRB, wyzeruje N i ustawi Z. Instrukcja załadowania np. LDAA#$80 ustawi N i wyzeruje Z. A więc instrukcje tylko do zerowania i ustawiania tych bitów są niepotrzebne, ponieważ jest wiele prostych instrukcji mogących ustawiać i zerować te bity nie jako przy okazji.
19 3.4 Instrukcje sterujące programem Ta grupa instrukcji, które są używane do sterowania przebiegiem programu a nie do operowania danymi, została podzielona na pięć podgrup: 1)skoki warunkowe 2)skok bezwarunkowy 3)wywołania podprogramów i powroty 4) instrukcje obsługujące przerwania 5)różne Skoki warunkowe Instrukcje te umożliwiają jednostce centralnej podjęcie decyzji w oparciu o stan bitów warunkowych. Wszystkie bloki decyzy jne w programie będ ą odpowiadać jednej z instrukcji skoków warunkowych zgromadzonych w tej tabeli. Funkcja Mnemonik R EL DIR INDX INDY skocz jeśli przeniesienie BCC X wyzerowane skocz jeśli przeniesienie ustawione BCS X skocz jeśli równe 0 BEQ X skocz jeśli większy bądź równy BGE X skocz jeśli większy BGT X skocz jeśli wyższy BHI X skocz jeśli wyższy lub taki sam BHS X skocz jeśli mniejszy bądź równy BLE X skocz jeśli niższy BLO X skocz jeśli niższy lub taki sam BLS X skocz jeśli mniejszy BLT X skocz jeśli ujemny BMI X skocz jeśli różny BNE X skocz jeśli dodatni BPL X skocz jeśli bit(bity) w pamięci BRCLR X X X wyzerowane skocz nigdy BRN X skocz jeśli bit(bity) w pamięci BRSET X X X ustawione skacz jeśli przepełnienie BVC X wyzerowane skacz jeśli przepełnienie ustawione BVS X Skok bezwarunkowy Instrukcja skoku bezwarunkowego pozwala na przeniesienie sterowania programem w dowolne miejsce 64kilobajtowej mapy pamięci. Funkcja Mnemonik DIR EXT INDX INDY skocz JMP X X X X
20 3.4.3 Wywołania podprogramów i pow roty Dzięki tym instrukcjom można łatwo po dzielić zadanie programowe na funkcjonale bloki zwane podprogramami. Jednostka centralna automatycznie wykonuje proces zapamiętania adresu w programie głównym do którego należy powrócić po wykonaniu podprogramu. Adres ten jest automatycznie kładziony na stos przy wywoływaniu podprogramu i ściągany ze stosu po wykonaniu instrukcji RTS kończącej podprogram. Funkcja Mnemonik REL DIR EXT INDX INDY INH skocz do pod programu BSR X skocz do podprogramu JSR X X X X powróć z podprogramu RTS X Instrukcje obsługujące przerwania Ta grupa instrukcji związana jest z przerwaniami. Funkcja Mnemonik INH powróć z obsługi przerwania RTI X przerwanie programowe SWI X czekaj na przerwanie WAI X Przerwanie programowe SWI jest bardzo podobne do instrukcji skoku bezwarunkowego. Jedyną różnicą jest fakt, że na stos kładzione są zawartości wszystkich rejestrów jednostki centralnej a nie tylko adres powrotny. Instrukcji SWI jest niezwykła w tym względzie, że przerwanie jest wymuszane przez program w przeciwieństwie do innych przerwań, które są wymuszane asynchronicznie do wykonywanego programu. Instrukcja WAI ma dwa główne zadania. Jest wykonywana, by wprowadzić mikrokontroler w stan niskiego poboru mocy (tzw. tryb czekania). Wykorzystuje się ją również do ograniczenia opóźnień niektórych ważnych przerwań. Ograniczenie opóźnienia uzyskiwane jest dzięki temu, że operacje zajmujące czas (tj. kładzenie na stos zawartości rejestrów) są przeprowadzane w czasie wykonywania instrukcji WAI. Kiedy wreszcie nastąpi przerwanie, jednostka centralna jest od razu gotowa pobrać odpowie dni wektor, tak więc opóźnienie związane ze stosowaniem rejestrów zostało wyeliminowane Różne Instrukcja NOP wprowadza niewielkie opóźnienia do wykonywanego programu, co może być potrzebne w celu zapewnienia odpowiednich timingów wolnym urządzeniom peryferyjnym. Funkcja Mnemonik INH brak operacji (2 cyklowe opóźnienie) NOP X zatrzymaj zegary STOP X testuj TEST X Instrukcja NOP okazuje się przydatna przy debugowaniu. Instrukcje niepożądane są zastępowane instrukcjami NOP. Dzięki temu nie trzeba przebudowywać struktury całego programu.
21 Programista często musi tak zaprojektować program, aby kolejne jego części wykonywały się ściśle określony czas. W takich przypadkach warto czasem użyć instrukcji BRN jako 3 cyklowego NOPa. Czas wykonywania sekwencji programowej można również ściśle określić poprzez używanie odmiennych trybów adresowania dla instrukcji w obrębie tej sekwencji. Uzyskujemy dzięki temu potrzebny nam czas wykonywania programu bez zmieniania jego funkcji. Instrukcja STOp jest niezwykłą instrukcją ponieważ zatrzymuje oscylator i wszystkie inne zegary mikrokontrolera. Stan zatrzymania zegarów jest nazywany trybem stop. W tym trybie zużycie mocy jest znacząco ograniczone. Działanie tej instrukcji jest również uzależnione od bitu S w rejestrze flagowym, ponieważ dla niektórych aplikacji tryb stop jest niekorzystny. Jeśli bit S jest ustawiony, instrukcja STOP traktowana jest jako instrukcja NOP. Instrukcja TEST jest używana wyłącznie podczas testowania fabrycznego i jest traktowana jak instrukcja nielegalna, gdy mikrokontroler pracuje w normalnych trybach. Instrukcja ta powoduje nietypowe zachowanie się szyny adresowej, co uniemożliwia jej wykorzystanie w jakimkolwiek normalnym systemie.
22 ZESTAW INSTRUKCJI ABA Dodaj akumulator B do akumulatora A ABA Opis: Dodaje zawartość akumulatora B do zawartości akumulatora A i umieszcza wynik w akumulatorze A. Zawartość akumulatora B nie ulega zmianie. Instrukcja ta zmienia bit warunkowy H, a więc jest użyteczna w operacjach arytmetycznych BCD (patrz instrukcja DAA). Bity warunkowe: H- zostaje ustawiony, jeśli nastąpiło przeniesienie z 3 bitu, w przeciwnym razie jest zerowany. N- zostaje ustawiony, jeśli najstarszy bit wyniku został ustawiony, w przeciwnym razie jest zerowany. Z- zostaje ustawiony, jeśli wynik wy niósł $00, w przeciwnym razie jest zerowany. V- zostaje ustawiony, jeśli w wyniku operacji nastąpiło przepełnienie, w przeciwnym razie jest zerowany. C-zostaje ustawiony, jeśli nastąpiło przeniesienie z najstarszego bitu wyniku, w przeciwnym razie jest zerowany INH 1B 1 2
23 ABX Dodaj akumulator B do rejestru indeksowego X ABX Opis: Dodaje 8-bitową zawartość bez znaku akumulatora B do zawartości rejestru indeksowego X, uwzględniając możliwe przeniesienie z najstarszego bitu mniej znaczącego bajtu rejestru indeksowego X. Wynik jest umieszczany w rejestrze indeksowym Y. Zawartość akumulatora B nie ulega zmianie. Nie istnieje równoważna instrukcja dodająca zawartość akumulatora A do rejestru indeksowego X. Bity warunkowe: Żaden nie ulega zmianie INH 3A 1 3
24 ABY Dodaj akumulator B do rejestru indeksowego Y ABY Opis: Dodaje 8-bitową zawartość bez znaku akumulatora B do zawartości rejestru indeksowego Y, uwzględniając możliwe przeniesienie z najstarszego bitu mniej znaczącego baju rejestru indeksowego Y. Wynik jest umieszczany w rejestrze indeksowym Y. Zawartość akumulatora B nie ulega zmianie. Nie istnieje równoważna instrukcja dodająca zawartość akumulatora A do rejestru indeksowego Y. Bity warunkowe: Żaden nie ulega zmianie INH 18 3A 2 4
25 ADC Dodaj z przeniesieniem ADC Opis: Dodaje bit C do sumy zawartości ACCX i zawartości M. Wynik umieszczony zostaje w ACCX. Instrukcja ta zmienia bit warunkowy H, a więc jest użyteczna w operacjach arytmetycznych BCD (patrz instrukcja DAA). Bity warunkowe: H- zostaje ustawiony, jeśli nastąpiło przeniesienie z 3 bitu, w przeciwnym razie jest zerowany. N- zostaje ustawiony, jeśli najstarszy bit wyniku został ustawiony, w przeciwnym razie jest zerowany. Z- zostaje ustawiony, jeśli wynik wyniósł $00, w przeciwnym razie jest zerowany. V- zostaje ustawiony, jeśli w wyniku operacji nastąpiło przepełnienie, w przeciwnym razie jest zerowany. C-zostaje ustawiony, jeśli nastąpiło przeniesienie z najstarszego bitu wyniku, w przeciwnym razie jest zerowany Formy instrukcji: ADCA(opr);ADCB(opr) ADCA IMM DIR EXT B9 3 4 IND,X A9 2 4 IND,Y 18 A9 3 5 ADCB IMM C9 2 2 DIR D9 2 3 EXT F9 3 4 IND,X E9 2 4 IND,Y 18 E9 3 5
26 ADD Dodaj bez przeniesienia ADD Opis: Dodaje zawartość pamięci M do zawartości ACCX. Wynik jest umieszczany w ACCX. Instrukcja ta zmienia bit warunkowy H, a więc jest użyteczna w operacjach arytmetycznych BCD (patrz instrukcja DAA). Bity warunkowe: H- zostaje ustawiony, jeśli nastąpiło przeniesienie z 3 bitu, w przeciwnym razie jest zerowany. N- zostaje ustawiony, jeśli najstarszy bit wyniku został ustawiony, w przeciwnym razie jest zerowany. Z- zostaje ustawiony, jeśli wynik wyniósł $00, w przeciwnym razie jest zerowany. V- zostaje ustawiony, jeśli w wyniku operacji nastąpiło przepełnienie, w przeciwnym razie jest zerowany. C-zostaje ustawiony, jeśli nastąpiło przeniesienie z najstarszego bitu wyniku, w przeciwnym razie jest zerowany Formy instrukcji: ADDA(opr);AD DB(opr) ADDA IMM 8B 2 2 DIR 9B 2 3 EXT BB 3 4 IND,X AB 2 4 IND,Y 18 AB 3 5 ADDB IMM CB 2 2 DIR DB 2 3 EXT FB 3 4 IND,X EB 2 4 IND,Y 18 EB 3 5
27 ADDD Dodaj podwójny akumulator ADDD Opis: Dodaje zawartość pamięci M połączonej z zawartością pamięci M+1 do zawartości akumulatora D. Wynik jest umieszczany w akumulatorze D. W akumulatorze D akumulator A stanowi bardziej znaczący bajt. Bity warunkowe: N- zostaje ustawiony, jeśli najstarszy bit wyniku został ustawiony, w przeciwnym razie jest zerowany. Z- zostaje ustawiony, jeśli wynik wyniósł $00, w przeciwnym razie jest zerowany. V- zostaje ustawiony, jeśli w wyniku operacji nastąpiło przepełnienie, w przeciwnym razie jest zerowany. C-zostaje ustawiony, jeśli nastąpiło przeniesienie z najstarszego bitu wyniku, w przeciwnym razie jest zerowany Formy instrukcji: ADDD(opr) ADDD IMM C3 3 4 DIR D3 2 5 EXT F3 3 6 IND,X E3 2 6 IND,Y 18 E3 3 7
28 AND Iloczyn logiczny AND Opis: Dokonuje logicznego iloczynu pomiędzy zawartością ACCX i zawartością M. Wynik jest umieszczany w akumulatorze ACCX. W wyniku operacji każdy bit ACCX będzie logicznym iloczynem odpowiadających sobie bitów akumulatora ACCX i zawartości pamięci. Bity warunkowe: N- zostaje ustawiony, jeśli najstarszy bit wyniku został ustawiony, w przeciwnym razie jest zerowany. Z- zostaje ustawiony, jeśli wynik wy niósł $00, w przeciwnym razie jest zerowany. V- jest zerowany. Formy instrukcji: ANDA(opr);ANDB(opr) ANDA IMM DIR EXT B4 3 4 IND,X A4 2 4 IND,Y 18 A4 3 5 ANDB IMM C4 2 2 DIR D4 2 3 EXT F4 3 4 IND,X E4 2 4 IND,Y 18 E4 3 5
29 ASL Arytmetyczne przesunięcie w lewo ASL Opis: Instrukcja ta przesuwa wszystkie bity z akumulatora ACCX lub bajtu pamięci jedną pozycję w lewo. Bit numer 0 jest zerowany. Bit przeniesienia w rejestrze flagowym stanowi najstarszy bit akumulatora lub bajtu pamięci. Bity warunkowe: N- zostaje ustawiony, jeśli najstar szy bit wyniku został ustawiony, w przeciwnym razie jest zerowany. Z- zostaje ustawiony, jeśli wynik wyn iósł $00, w przeciwnym razie jest zerowany. V- jest wynikiem N C (gdzie N i C są wartościami bitów warunk owych po operacji przesunięcia) C- jest ustawion y jeśli przed przesunięciem najstarszy bit akumulatora lub bajtu pamięci był ustawiony, w przeciwnym razie jest zerowany. Formy instrukcji: ASLA;ASLB;ASL(opr) ASLA INH ASLB INH ASL EXT IND,X IND,Y
30 ASLD Arytmetyczne przesunięcie w lewo podwójnego akumulatora D ASLD Opis: Instrukcja ta przesuwa wszystkie bity z akumulatora D jedną pozycję w lewo. Bit numer 0 jest zerowany. Bit przeniesienia w rejestrze flagowym stanowi najstarszy bit akumulatora. Bity warunkowe: N- zostaje ustawiony, jeśli najstarszy bit wyniku został ustawiony, w przeciwnym razie jest zerowany. Z- zostaje ustawiony, jeśli wynik wyniósł $00, w przeciwnym razie jest zerowany. V- jest wynikiem N C (gdzie N i C są wartościami bitów warunkowych po operacji przesunięcia) C- jest ustawiony jeśli przed przesunięciem najstarszy bit akumulatora był ustawiony, w przeciwnym razie jest zerowany. Formy instrukcji: ASLD ASLD INH
31 ASR Arytmetyczne przesunięcie w prawo ASR Opis: Instrukcja ta przesuwa wszystkie bity akumulatora ACCX lub bajtu pamięci jedną pozycję w prawo. Bit numer 0 jest załadowywany do bitu przeniesienia w rejestrze flagowym Bit 7 jest zachowuje wartość z przed przesunięcia. Operacja ta dzieli wartość w kodzie U2 przez 2 bez zmieniania jej znaku. Bit przeniesienia może zostać wykorzystany do zaokrąglenia wyniku. Bity warunkowe: N- zostaje ustawiony, jeśli najstar szy bit wyniku został ustawiony, w przeciwnym razie jest zerowany. Z- zostaje ustawiony, jeśli wynik wyn iósł $00, w przeciwnym razie jest zerowany. V- jest wynikiem N C (gdzie N i C są wartościami bitów warunkowych po operacji przesunięcia) C- jest ustawiony jeśli przed przesunięciem najmłodszy bit akumulatora lub bajtu pamięci był ustawiony, w przeciwnym razie jest zerowany. Formy instrukcji: ASRA;ASRB;ASR(opr) ASRA INH ASRB INH ASR EXT IND,X IND,Y
32 BCC Skocz jeśli przeniesienie jest równe zero BCC Opis: Instrukcja dokonuje sprawdzenia stanu bitu przeniesienia w rejestrze flagowym i dokonuje skoku jeśli bit ten jest wyzerowany. Patrz instrukcja BRA dla dalszych informacji na temat wykonywania instrukcji skoku. Bity warunkowe: Żaden nie jest zmieniany Formy instrukcji: BCC(rel) BCC REL
33 BCLR Wyzeruj bit(bity) pamięci BCLR (druga operacja zachodzi przy trybie adresowania indeksowego wykorzystującego rejestr ind eksowy Y) Opis: Instrukcja zeruje bity w pamięci. B ity przeznaczone do wyzerowania wskazywane są poprzez jedynki w masce bajtowej. Wszystkie pozostałe bity w bajcie pamięc i są niezmieniane. Bity warunkowe: N- zostaje ustawiony, jeśli najstarszy bit wyniku został ustawiony, w przeciwnym razie jest zerowany. Z- zostaje ustawiony, jeśli wynik wyniósł $00, w przeciwnym razie jest zerowany. V- jest zerowany. Formy instrukcji: BCLR(opr)(msk) BCLR DIR IND,X 1D 3 7 IND,Y 18 1D 4 8
34 BCS Skocz jeśli przeniesienie jest równe jeden BCS Opis: Instrukcja dokonuje sprawdzenia stanu bitu przeniesienia w rejestrze flagowym i dokonuje skoku, jeśli bit ten jest ustawiony. Patrz instrukcja BRA dla dalszych informacji na temat wykonywania instrukcji skoku. Bity warunkowe: Żaden nie jest zmieniany Formy instrukcji: BCS(rel) BCS REL
35 BEQ Skocz jeśli równy zero BEQ Opis: Instrukcja dokonuje sprawdzenia stanu bitu Z w rejestrze flagowym i dokonuje skoku, jeśli bit ten jest ustawiony. Patrz instrukcja BRA dla dalszych informacji na temat wykonywania instrukcji skoku. Bity warunkowe: Żaden nie jest zmieniany Formy instrukcji: BEQ(rel) BEQ REL
36 BGE Skocz jeśli większy bądź równ y zero BGE Opis: Jeśli instrukcja BGE zostanie wykonana natychmiast po wykonaniu którejś z instrukcji CBA, CMP(A,B lub D),CP(X lub Y),SBA,SUB(A,B lub D), nastąpi skok jeśli wartość w kodzie U2 zawarta w akumulatorze ACCX jest większa lub równa od wartości w kodzie U2 znajdującej się w bajcie pamięci.. Patrz instrukcja BRA dla dalszych informacji na temat wykonywania instrukcji skoku. Bity warunkowe: Żaden nie jest zmieniany Formy instrukcji: BGE(rel) BGE REL 2C 2 3
37 BGT Skocz jeśli większy niż zero BGT Opis: Jeśli instrukcja BGE zostanie wykonana natychmiast po wykonaniu którejś z instrukcji CBA, CMP(A,B lub D),CP(X lub Y),SBA,SUB(A,B lub D), nastąpi skok jeśli wartość w kodzie U2 zawarta w akumulatorze ACCX jest większa od wartości w kodzie U2 znajdującej się w bajcie pamięci.. Patrz instrukcja BRA dla dalszych informacji na temat wykonywania instrukcji skoku. Bity warunkowe: Żaden nie jest zmieniany Formy instrukcji: BGT(rel) BGT REL 2E 2 3
38 BHI Skocz jeśli wyższ y BHI Opis: Jeśli instrukcja BGE zostanie wykonana natychmiast po wykonaniu którejś z instrukcji CBA, CMP(A,B lub D),CP(X lub Y),SBA,SUB(A,B lub D), skok nastąpi wtedy i tylko wtedy jeśli wartość w kodzie binarnym (bez znaku) zawarta w akumulatorze ACCX jest większa od wartości w kodzie binarnym (bez znaku),znajdującej się w bajcie pamięci. Generalnie nie przydatna po instrukcjach INC/DEC, LD/ST,TST/CLR/COM, ponieważ nie zmieniają one bitu przeniesienia rejestrze flagowym. Patrz instrukcja BRA dla dalszych informacji na temat wykonywania instrukcji skoku. Bity warunkowe: Żaden nie jest zmieniany Formy instrukcji: BHI(rel) BHI REL
39 BHS Skocz jeśli wyższy lub taki sam BHS Opis: Jeśli instrukcja BGE zostanie wykonana natychmiast po wykonaniu którejś z instrukcji CBA, CMP(A,B lub D),CP(X lub Y),SBA,SUB(A,B lub D), skok nastąpi wtedy i tylko wtedy jeśli wartość w kodzie binarnym (bez znaku) zawarta w akumulatorze ACCX jest większa lub równa wartości w kodzie binarnym (bez znaku),znajdującej się w bajcie pamięci. Generalnie nie przydatna po instrukcjach INC/DEC, LD/ST,TST/CLR/COM, ponieważ nie zmieniają one bitu przeniesienia rejestrze flagowym. Patrz instrukcja BRA dla dalszych informacji na temat wykonywania instrukcji skoku. Bity warunkowe: Żaden nie jest zmieniany Formy instrukcji: BHS(rel) BHS REL
40 BIT Test bitowy BIT Opis: Instrukcja dokonuje logicznego iloczynu akumulatora ACCX i bajtu pamięci i wg. niego ustawia bity warunkowe rejestru flagowego. Zmianie nie ulega żaden z operandów. Bity warunkowe: N- zostaje ustawiony, jeśli najstarszy bit wyniku został ustawiony, w przeciwnym razie jest zerowany. Z- zostaje ustawiony, jeśli wynik wyniósł $00, w przeciwnym razie jest zerowany. V- jest zerowany. Formy instrukcji: BITA(opr);BITB(opr) BITA IMM DIR EXT B5 3 4 IND,X A5 2 4 IND,Y 18 A5 3 5 BITB IMM C5 2 2 DIR D5 2 3 EXT F5 3 4 IND,X E5 2 4 IND,Y 18 E5 3 5
41 BLE Skocz jeśli mniejszy bądź równy zero BLE Opis: Jeśli instrukcja BGE zostanie wykonana natychmiast po wykonaniu którejś z instrukcji CBA, CMP(A,B lub D),CP(X lub Y),SBA,SUB(A,B lub D), skok nastąpi wtedy i tylko wtedy jeśli wartość w kodzie U2 zawarta w akumulatorze ACCX jest mniejsza lub równa od wartości w kodzie U2 znajdującej się w bajcie pamięci.. Patrz instrukcja BRA dla dalszych informacji na temat wykonywania instrukcji skoku. Bity warunkowe: Żaden nie jest zmieniany Formy instrukcji: BLE(rel) BLE REL 2F 2 3
42 BLO Skocz jeśli niższy BLO Opis: Jeśli instrukcja BGE zostanie wykonana natychmiast po wykonaniu którejś z instrukcji CBA, CMP(A,B lub D),CP(X lub Y),SBA,SUB(A,B lub D), skok nastąpi wtedy i tylko wtedy jeśli wartość w kodzie binarnym (bez znaku) zawarta w akumulatorze ACCX jest mniejsza od wartości w kodzie binarnym (bez znaku),znajdującej się w bajcie pamięci. Generalnie nie przydatna po instrukcjach INC/DEC, LD/ST,TST/CLR/COM, ponieważ nie zmieniają one bitu przeniesienia rejestrze flagowym. Patrz instrukcja BRA dla dalszych informacji na temat wykonywania instrukcji skoku. Bity warunkowe: Żaden nie jest zmieniany Formy instrukcji: BLO(rel) BLO REL
43 BLS Skocz jeśli niższy lub taki sam BLS Opis: Jeśli instrukcja BGE zostanie wykonana natychmiast po wykonaniu którejś z instrukcji CBA, CMP(A,B lub D),CP(X lub Y),SBA,SUB(A,B lub D), skok nastąpi wtedy i tylko wtedy jeśli wartość w kodzie binarnym (bez znaku) zawarta w akumulatorze ACCX jest mniejsza lub równa wartości w kodzie binarnym (bez znaku),znajdującej się w bajcie pamięci. Generalnie nie przydatna po instrukcjach INC/DEC, LD/ST,TST/CLR/COM, ponieważ nie zmieniają one bitu przeniesienia rejestrze flagowym. Patrz instrukcja BRA dla dalszych informacji na temat wykonywania instrukcji skoku. Bity warunkowe: Żaden nie jest zmieniany Formy instrukcji: BLS(rel) BLS REL
44 BLT Skocz jeśli mniejszy niż zero BLT Opis: Jeśli instrukcja BGE zostanie wykonana natychmiast po wykonaniu którejś z instrukcji CBA, CMP(A,B lub D),CP(X lub Y),SBA,SUB(A,B lub D), nastąpi skok jeśli wartość w kodzie U2 zawarta w akumulatorze ACCX jest mniejsza od wartości w kodzie U2 znajdującej się w bajcie pamięci.. Patrz instrukcja BRA dla dalszych informacji na temat wykonywania instrukcji skoku. Bity warunkowe: Żaden nie jest zmieniany Formy instrukcji: BLT(rel) BLT REL 2D 2 3
45 BMI Skocz jeśli ujemny BMI Opis: Instrukcja dokonuje sprawdzenia stanu bitu N w rejestrze flagowym i dokonuje skoku jeśli bit ten jest ustawiony. Patrz instrukcja BRA dla dalszych informacji na temat wykonywania instrukcji skoku. Bity warunkowe: Żaden nie jest zmieniany Formy instrukcji: BMI(rel) BMI REL 2B 2 3
46 BNE Skocz jeśli różny od zera BNE Opis: Instrukcja dokonuje sprawdzenia stanu bitu Zw rejestrze flagowym i dokonuje skoku jeśli bit ten jest wyzerowany. Patrz instrukcja BRA dla dalszych informacji na temat wykonywania instrukcji skoku. Bity warunkowe: Żaden nie jest zmieniany Formy instrukcji: BNE(rel) BNE REL
47 BPL Skocz jeśli dodatni BPL Opis: Instrukcja dokonuje sprawdzenia stanu bitu N w rejestrze flagowym i dokonuje skoku jeśli bit ten jest wyzerowany. Patrz instrukcja BRA dla dalszych informacji na temat wykonywania instrukcji skoku. Bity warunkowe: Żaden nie jest zmieniany Formy instrukcji: BPL(rel) BPL REL 2A 2 3
48 BRA Skocz zawsze BRA Opis: Skok bezwarunkowy pod adres określony wyżej podanym wyrażeniem. Rel jest względnym przesunięciem zawartym w drugim bajcie instrukcji skoku. Wartość Rel jest liczbą w zapisie uzupełnień do dwóch. Program źródłowy określa miejsce skoku poprzez podanie adresu bezwzględnego tego miejsca w postaci wartości liczbowej, symbolu lub wyrażenia. Asembler uzyskuje adres względny Rel z adresu bezwzględnego i aktualnego stanu licznika programu. Bity warunkowe: Żaden nie jest zmieniany Formy instrukcji: BRA(rel) BRA REL
49 BRCLR Skocz jeśli bit/bity są wyzerowane BRCLR (druga operacja zachodzi przy trybie adresowania indeksowego wykorzystującego rejestr indeksowy Y) Opis: Wykonuje logiczny iloczyn pomiędzy bajtem pamięci M a maską dołączoną do instrukcji. Skok następuje, jeśli wynik jest równy 0 (tj. wszystkie bity odpowiadające jedynkom w masce bajtowej są zerami w bajcie pamięci) Bity warunkowe: Żaden nie jest zmieniany Formy instrukcji: BRCLR(opr)(msk)(rel) BRCLR DIR IND,X 1F 4 7 IND,Y 18 1F 5 8
50 BRN Nigdy nie skacz BRN Opis: Nigdy nie skacze. Instrukcja może być traktowana jako 2bajtowy NOP, wymagający do wykonania trzech cykli. Instrukcja ta została zawarta w zestawie instrukcji jako dopełnienie instrukcji BRA. Przydaje się przy debugowaniu programów, blokując działanie innej instrukcji skoku warunkowego bez naruszania bajtu przesunięcia. Dopełnienia instrukcji BRA jest wykorzystywane przy implementacjach kompilatorów. Bity warunkowe: Żaden nie jest zmieniany Formy instrukcji: BRN(rel) BRN REL
51 BRSET Skocz jeśli bit/bity są ustawione BRSET (druga operacja zachodzi przy trybie adresowania indeksowego wykorzystującego rejestr indeksowy Y) Opis: Wykonuje logiczny iloczyn pomiędzy bajtem pamięci M a maską dołączoną do instrukcji. Skok następuje, jeśli wynik jest równy 0 (tj. wszystkie bity odpowiadające jedynkom w masce bajtowej są jedynkami w bajcie pamięci) Bity warunkowe: Żaden nie jest zmieniany Formy instrukcji: BRSET(opr)(msk)(rel) BRCLR DIR IND,X 1E 4 7 IND,Y 18 1E 5 8
52 BSET Wyzeruj bit(bity) pamięci BSET (druga operacja zachodzi przy trybie adresowania indeksowego wykorzystującego rejestr indeksowy Y) Opis: Instrukcja ustawia bity w pamięci. Bity przeznaczone do ustawienia wskazywane są poprzez jedynki w masce bajtowej. Wszystkie pozostałe bity w bajcie pamięci są niezmieniane. Bity warunkowe: N- zostaje ustawiony, jeśli najstarszy bit wyniku został ustawiony, w przeciwnym razie jest zerowany. Z- zostaje ustawiony, jeśli wynik wyniósł $00, w przeciwnym razie jest zerowany. V- jest zerowany. Formy instrukcji: BSET(opr)(msk) BSET DIR IND,X 1C 3 7 IND,Y 18 1C 4 8
53 BSR Skocz do podprogramu BSR ładowanie do PC adresu powrotnego położenie mniej znaczącego bajtu PC nas stos położenie bardziej znaczącego bajtu PC nas stos ładowanie do PC adresu startowego żądanego podprogramu Opis: Licznik programu zwiększany jest o 2 (będzie wskazywał na adres powrotny). Mniej znaczący bajt licznika programu jest kładziony na stos. Wskaźnik stosu jest zmniejszany o jeden. Bardziej znaczący bajt licznika programu jest kładziony na stos. Wskaźnik stosu jest zmniejszany o jeden. W końcu następuje skok pod adres określony w przesunięciu. Patrz instrukcja BRA dla dalszych informacji na temat wykonywania instrukcji skoku. Bity warunkowe: Żaden nie jest zmieniany Formy instrukcji: BSR(rel) BSR REL 8D 2 6
54 BVC Skocz jeśli przepełnienie jest wyzerowane BVC Opis: Instrukcja dokonuje sprawdzenia stanu bitu V w rejestrze flagowym i dokonuje skoku jeśli bit ten jest wyzerowany. Używana jest po operacjach na liczbach w kodzie U2. Powoduje skok, jeśli nie nastąpiło przepełnienie, to znaczy: skocz, jeśli wynik w kodzie U2 jest poprawny. Patrz instrukcja BRA dla dalszych informacji na temat wykonywania instrukcji skoku. Bity warunkowe: Żaden nie jest zmieniany Formy instrukcji: BVC(rel) BVC REL
55 BVS Skocz jeśli przepełnienie jest ustawione BVS Opis: Instrukcja dokonuje sprawdzenia stanu bitu V w rejestrze flagowym i dokonuje skoku jeśli bit ten jest ustawiony. Używana jest po operacjach na liczbach w kodzie U2. Powoduje skok, jeśli nastąpiło przepełnienie, to znaczy: skocz, jeśli wynik w kodzie U2 jest niepoprawny. Patrz instrukcja BRA dla dalszych informacji na temat wykonywania instrukcji skoku. Bity warunkowe: Żaden nie jest zmieniany Formy instrukcji: BVS(rel) BVS REL
56 CBA Porównaj akumulatory CBA Opis: Instrukcja porównuje zawartość akumulatora A z zawartością akumulatora B i ustawia odpowiednio bity warunkowe. Może być to wykorzystane przy instrukcjach skoków warunkowych (dla warunków arytmetycznych i logicznych). Żaden z operandów nie ulega zmianie. Bity warunkowe: N- zostaje ustawiony, jeśli najstarszy bit wyniku został ustawiony, w przeciwnym razie jest zerowany. Z- zostaje ustawiony, jeśli wynik wyniósł $00, w przeciwnym razie jest zerowany. V- zostaje ustawiony, jeśli w wyniku operacji nastąpiło przepełnienie, w przeciwnym razie jest zerowany. C-zostaje ustawiony, jeśli nastąpiła pożyczka z najstarszego bitu wyniku, w przeciwnym razie jest zerowany Formy instrukcji: CBA CBA INH
57 CLC Wyzeruj bit przeniesienia CLC Opis: Instrukcja zeruje bit przeniesienia w rejestrze flagowym CCR. Instrukcja CLC może zostać wykorzystana do ustalenia bitu C przed wykonaniem instrukcji obrotu czy przesunięcia wykorzystujących bit C Bity warunkowe: C-jest zerowany Formy instrukcji: CLC CLC INH 0C 1 2
58 CLI Wyzeruj bit maskowania przerwań CLI Opis: Instrukcja zeruje bit maskowania przerwań w rejestrze flagowym CCR. Kiedy bit I jest wyzerowany przerwania są odmaskowane. Mechanizm zerujący jest zawsze obarczony opóźnieniem długości jednego cyklu zegara E. Zatem, jeśli przerwania były wcześniej zamaskowane, instrukcja następująca po CLI zostanie zawsze wykonana, nawet jeśli przed wykonaniem instrukcji CLI jakieś przerwanie czekało na obsługę. Bity warunkowe: I-jest zerowany Formy instrukcji: CLI CLI INH 0E 1 2
59 CLR Wyzeruj CLR Opis: Zawartość akumulatora ACCX lub bajtu pamięci jest zerowana. Bity warunkowe: N- zostaje wyzerowany Z- zostaje ustawiony V- zostaje wyzerowany C-zostaje wyzerowany Formy instrukcji: CLRA;CLRB;CLR(opr) CLRA INH 4F 1 2 CLRBA INH 5F 1 2 CLR EXT 7F 3 6 IND,X 6F 2 6 IND,Y 18 6F 3 7
60 CLV Wyzeruj bit przepełnienia CLV Opis: Instrukcja zeruje bit przepełnienia w rejestrze flagowym CCR. Bity warunkowe: V-jest zerowany Formy instrukcji: CLV CLV INH 0A 1 2
61 CMP Porównaj CMP Opis: Instrukcja porównuje zawartość akumulatora ACCX z zawartością bajtu pamięci M i ustawia odpowiednio bity warunkowe. Może być to wykorzystane przy instrukcjach skoków warunkowych (dla warunków arytmetycznych i logicznych). Żaden z operandów nie ulega zmianie. Bity warunkowe: N- zostaje ustawiony, jeśli najstarszy bit wyniku został ustawiony, w przeciwnym razie jest zerowany. Z- zostaje ustawiony, jeśli wynik wyniósł $00, w przeciwnym razie jest zerowany. V- zostaje ustawiony, jeśli w wyniku operacji nastąpiło przepełnienie, w przeciwnym razie jest zerowany. C-zostaje ustawiony, jeśli nastąpiła pożyczka z najstarszego bitu wyniku, w przeciwnym razie jest zerowany Formy instrukcji: CMPA(opr);CMPB(opr) CMPA IMM DIR EXT B1 3 4 IND,X A1 2 4 IND,Y 18 E1 3 5 CMPB IMM C1 2 2 DIR D1 2 3 EXT F1 3 4 IND,X E1 2 4 IND,Y 18 E1 3 5
62 COM Uzupełnij do jednego COM Opis: Instrukcja zamienia zawartość akumulatora ACCX lub bajtu pamięci M na jego uzupełnienie do jednego. (Każdy z bitów zawartości akumulatora ACCX lub pamięci M jest zastępowany swoim uzupełnieniem). Aby uzupełnić wartość do jednego, nie zmieniając przy tym bitu C, należy dokonać operacji XOR tej wartości z $FF. Bity warunkowe: N- zostaje ustawiony, jeśli najstarszy bit wyniku został ustawiony, w przeciwnym razie jest zerowany. Z- zostaje ustawiony, jeśli wynik wyniósł $00, w przeciwnym razie jest zerowany. V- zostaje wyzerowany C-zostaje ustawiony ( w celu zachowania kompatybilności z M6800) Formy instrukcji: COMA;COMB;COM(opr) COMA INH COMB INH COM EXT IND,X IND,Y
63 CPD Porównaj podwójny akumulator CPD Opis: Instrukcja porównuje zawartość akumulatora D z 16-bitową wartością o określonym adresie i odpowiednio ustawia bity warunkowe. Porównanie jest dokonywane całkowicie wewnętrznie poprzez wykonanie 16-bitowego odejmowania wartości spod adresu M (starszy bajt)i M+1 (młodszy bajt) od akumulatora D. Zmianie nie ulega ani akumulator D ani zawartość pamięci. Bity warunkowe: N- zostaje ustawiony, jeśli najstarszy bit wyniku został ustawiony, w przeciwnym razie jest zerowany. Z- zostaje ustawiony, jeśli wynik wyniósł $0000, w przeciwnym razie jest zerowany. V- zostaje ustawiony, jeśli w wyniku operacji nastąpiło przepełnienie, w przeciwnym razie jest zerowany. C-zostaje ustawiony, wartość bezwzględna zawartości pamięci jest większa od bezwzględnej zawartości akumulatora D, w przeciwnym razie jest zerowany. Formy instrukcji: CPD(opr) CPD IMM 1A DIR 1A EXT 1A B3 4 7 IND,X 1A A3 3 7 IND,Y CD A3 3 7
64 CPX Porównaj rejestr indeksowy X CPX Opis: Instrukcja porównuje zawartość rejestru indeksowego X z 16-bitową wartością o określonym adresie i odpowiednio ustawia bity warunkowe. Porównanie jest dokonywane całkowicie wewnętrznie poprzez wykonanie 16-bitowego odejmowania wartości spod adresu M (starszy bajt)i M+1 (młodszy bajt) od rejestru indeksowego X. Zmianie nie ulega ani rejestr indeksowy X ani zawartość pamięci. Bity warunkowe: N- zostaje ustawiony, jeśli najstarszy bit wyniku został ustawiony, w przeciwnym razie jest zerowany. Z- zostaje ustawiony, jeśli wynik wyniósł $0000, w przeciwnym razie jest zerowany. V- zostaje ustawiony, jeśli w wyniku operacji nastąpiło przepełnienie, w przeciwnym razie jest zerowany. C-zostaje ustawiony, wartość bezwzględna zawartości pamięci jest większa od bezwzględnej zawartości rejestru indeksowego X, w przeciwnym razie jest zerowany. Formy instrukcji: CPX(opr) CPX IMM 8C 3 4 DIR 9C 2 5 EXT BC 3 6 IND,X AC 2 6 IND,Y CD AC 3 7
65 CPY Porównaj rejestr indeksowy Y CPY Opis: Instrukcja porównuje zawartość rejestru indeksowego Y z 16-bitową wartością o określonym adresie i odpowiednio ustawia bity warunkowe. Porównanie jest dokonywane całkowicie wewnętrznie poprzez wykonanie 16-bitowego odejmowania wartości spod adresu M (starszy bajt)i M+1 (młodszy bajt) od rejestru indeksowego Y. Zmianie nie ulega ani rejestr indeksowy Y ani zawartość pamięci. Bity warunkowe: N- zostaje ustawiony, jeśli najstarszy bit wyniku został ustawiony, w przeciwnym razie jest zerowany. Z- zostaje ustawiony, jeśli wynik wyniósł $0000, w przeciwnym razie jest zerowany. V- zostaje ustawiony, jeśli w wyniku operacji nastąpiło przepełnienie, w przeciwnym razie jest zerowany. C-zostaje ustawiony, wartość bezwzględna zawartości pamięci jest większa od bezwzględnej zawartości rejestru indeksowego Y, w przeciwnym razie jest zerowany. Formy instrukcji: CPY(opr) CPY IMM 18 8C 4 5 DIR 18 9C 3 6 EXT 18 BC 4 7 IND,X 1A AC 3 7 IND,Y 18 AC 3 7
66 DAA Wyrównanie dziesiętne akumulatora A DAA Poniższa tabela podsumowuje operacje wykonywane przez instrukcje DAA dla wszystkich kombinacji poprawnych operandów. Czynnik korekcyjny (kolumna 5) jest dodawany do akumulatora A w celu konwersji wyniku dodawania dwóch liczb BCD do poprawnej wartości BCD i ustawienia lub wyzerowania bitu przeniesienia C. Stan bitu C Starsza część Początkowe Młodsza Liczba Stan bitu C przed DAA bajtu przeniesienie część bajtu dodawana po DAA akumulatora połówkowe H w akumulatora przez DAA do A (bity [7:4]) rejestrze A (bity [3:0]) akumulatora A flagowym CCR A-F A-F F 0 A-F A-F A-F Uwaga: Kolumny od 1 do 4 w powyższej tabeli przedstawiają wszystkie możliwe przypadki, które mogą być wynikiem którejś z operacji ABA,ADD i ADC z wejściowym przeniesieniem ustawionym bądź wyzerowanym na operandach w kodzie BCD. Tabela przedstawia wartości heksadecymalne. Opis: Jeśli, zarówno zawartość akumulatora A jak i stan bitów warunkowych C i H są wynikiem wykonania instrukcji ABA,ADD,ADC na operandach BCD z lub bez początkowego przeniesienia, to instrukcja DAA dokona wyrównania zawartości akumulatora A i bitu przeniesienia w rejestrze flagowym tak, aby przedstawiała ona poprawną wartość BCD i poprawne przeniesienie. Bity warunkowe: N- zostaje ustawiony, jeśli najstarszy bit wyniku został ustawiony, w przeciwnym razie jest zerowany Z- zostaje ustawiony, jeśli wynik wyniósł $00, w przeciwnym razie jest zerowany. V- nie zdefiniowano C- patrz tabela powyżej Formy instrukcji: DAA DAA INH Działanie instrukcji DAA można zilustrować na poniższym przykładzie. Załóżmy, że chcemy dodać dwie wartości w kodzie BCD: $99 i $22. Instrukcja dodawania jest instrukcją binarną, która da w wyniku $BB bez przeniesienia i przeniesienia połówkowego. Odpowiada to piątemu rzędowi w podanej tabeli. Zatem instrukcja DAA doda czynnik korekcyjny $66 do wyniku dodawania, dając w rezultacie wartość $21 i ustawiony bit przeniesienia. Wynik ten przedstawia wartość $1 21 w kodzie BCD, co było oczeki wanym rezultatem.
67 DEC Dekrementuj DEC Opis: Instrukcja odejmuje jeden od zawartości akumulatora ACCX lub bajtu pamięci. Bity warunkowe rejestru warunkowego CCR są ustawiane zgodnie z wynikiem operacji. Bit przeniesienia nie jest zmieniany przez tę instrukcję, żeby umożliwić wykorzystanie instrukcji DEC jako licznika pętli w obliczeniach wielokrotnej precyzji. Przy operacjach na liczbach bez znaku tylko instrukcje BEQ i BNE będą działać poprawnie. Jeśli operujemy na liczbach w kodzie U2, dostępne są wszystkie znakowe skoki warunkowe. Bity warunkowe: N- zostaje ustawiony, jeśli najstarszy bit wyniku został ustawiony, w przeciwnym razie jest zerowany. Z- zostaje ustawiony, jeśli wynik wyniósł $00, w przeciwnym razie jest zerowany. V- zostaje ustawiony, jeśli w wyniku operacji nastąpiło przepełnienie, w przeciwnym razie jest zerowany. Przepełnienie następuje wtedy i tylko wtedy, gdy (ACCX) lub (M) zawierał wartość $ 80 przed wykonaniem operacji Formy instrukcji: DECA;DECB;DEC(opr) DECA INH 4A 1 2 DECB INH 5A 1 2 DEC EXT 7A 3 6 IND,X 6A 2 6 IND,Y 18 6A 3 7
68 DES Dekrementuj wskaźnik stosu DES Opis: Instrukcja odejmuje jeden od zawartości wskaźnika stosu SP Bity warunkowe: Żaden nie jest zmieniany Formy instrukcji: DES DES INH
69 DEX Dekrementuj rejestr indeksowy X DEX Opis: Instrukcja odejmuje jeden od zawartości rejestru indeksowego X. Tylko bit Z jest zmieniany w zależności od wyniku operacji. Bity warunkowe: Z- zostaje ustawiony, jeśli wynik wyniósł $0000, w przeciwnym razie jest zerowany. Formy instrukcji: DEX DEX INH
70 DEY Dekrementuj rejestr indeksowy Y DEY Opis: Instrukcja odejmuje jeden od zawartości rejestru indeksowego Y. Tylko bit Z jest zmieniany w zależności od wyniku operacji. Bity warunkowe: Z- zostaje ustawiony, jeśli wynik wyniósł $0000, w przeciwnym razie jest zerowany. Formy instrukcji: DEY DEY INH
71 EOR E xclusive OR EOR Opis: Dokonuje logicznego XOR pomiędzy zawartością ACCX i zawartością M. Wynik jest umieszczany w akumulatorze ACCX. W wyniku operacji każdy bit ACCX będzie XORem odpowiadających sobie bitów akumulatora ACCX i zawartości pamięci. Bity warunkowe: N- zostaje ustawiony, jeśli najstarszy bit wyniku został ustawiony, w przeciwnym razie jest zerowany. Z- zostaje ustawiony, jeśli wynik wyniósł $00, w przeciwnym razie jest zerowany. V- jest zerowany. Formy instrukcji: EORA(opr);EORB(opr) EORA IMM DIR EXT B8 3 4 IND,X A8 2 4 IND,Y 18 A8 3 5 EORB IMM C8 2 2 DIR D8 2 3 EXT F8 3 4 IND,X E8 2 4 IND,Y 18 E8 3 5
72 FDIV Dzielenie ułamkowe FDIV Opis: Instrukcja wykonuje ułamkowe dzielenie bez znaku 16-bitowej dzielnej, znajdującej się w akumulatorze D, przez 16-bitowy dzielnik, znajdujący się w rejestrze indeksowym X. W wyniku operacji ustawiane są również odpowiednio bity warunkowe. Wynik dzielenia jest umieszczany w rejestrze indeksowym X, natomiast reszta z dzielenia umieszczana jest w akumulatorze D. Przecinek jest w tym samym miejscu dzielnej i dzielnika. W wyniku dzielenia przecinek znajduje się na lewo od 15 bitu. Dzielna jest z założenia mniejsza od dzielnika. W przypadku przepełnienia (dzielna jest równa lub większa od dzielnika) lub dzielenia przez zero wynik dzielenia wynosi $FFFF a reszta z dzielenia jest nieokreślona. Bity warunkowe: Z- zostaje ustawiony, jeśli wynik dzielenia wyniósł $0000, w przeciwnym razie jest zerowany. V- zostaje ustawiony, jeśli dzielnik był mniejszy bądź równy dzielnej w przeciwnym razie jest zerowany Z- zostaje ustawiony, jeśli dzielnik był równy $0000, w przeciwnym razie jest zerowany. Formy instrukcji: FDIV FDIV INH
73 IDIV Dzielenie całkowite IDIV Opis: Instrukcja wykonuje całkowite dzielenie bez znaku 16-bitowej dzielnej, znajdującej się w akumulatorze D, przez 16-bitowy dzielnik, znajdujący się w rejestrze indeksowym X. W wyniku operacji ustawiane są również odpowiednio bity warunkowe. Wynik dzielenia jest umieszczany w rejestrze indeksowym X, natomiast reszta z dzielenia umieszczana jest w akumulatorze D. Przecinek jest w tym samym miejscu dzielnej i dzielnika. W wyniku dzielenia przecinek znajduje się na prawo od 15 bitu. W przypadku dzielenia przez zero wynik dzielenia wynosi $FFFF a reszta z dzielenia jest nieokreślona. Bity warunkowe: Z- zostaje ustawiony, jeśli wynik dzielenia wyniósł $0000, w przeciwnym razie jest zerowany. V- jest zerowany Z- zostaje ustawiony, jeśli dzielnik był równy $0000, w przeciwnym razie jest zerowany. Formy instrukcji: IDIV IDIV INH
74 INC Inkrementuj INC Opis: Instrukcja dodaje jeden od zawartości akumulatora ACCX lub bajtu pamięci. Bity warunkowe rejestru warunkowego CCR są ustawiane zgodnie z wynikiem operacji. Bit przeniesienia nie jest zmieniany przez tę instrukcję, żeby umożliwić wykorzystanie instrukcji INC jako licznika pętli w obliczeniach wielokrotnej precyzji. Przy operacjach na liczbach bez znaku tylko instrukcje BEQ i BNE będą działać poprawnie. Jeśli operujemy na liczbach w kodzie U2, dostępne są wszystkie znakowe skoki warunkowe. Bity warunkowe: N- zostaje ustawiony, jeśli najstarszy bit wyniku został ustawiony, w przeciwnym razie jest zerowany. Z- zostaje ustawiony, jeśli wynik wyniósł $00, w przeciwnym razie jest zerowany. V- zostaje ustawiony, jeśli w wyniku operacji nastąpiło przepełnienie, w przeciwnym razie jest zerowany. Przepełnienie następuje wtedy i tylko wtedy, gdy (ACCX) lub (M) zawierał wartość $7F przed wykonaniem operacji Formy instrukcji: INCA;INCB;INC(opr) INCA INH 4C 1 2 INCB INH 5C 1 2 INC EXT 7C 3 6 IND,X 6C 2 6 IND,Y 18 6C 3 7
75 INS Inkrementuj wskaźnik stosu INS Opis: Instrukcja dodaje jeden od zawartości wskaźnika stosu SP Bity warunkowe: Żaden nie jest zmieniany Formy instrukcji: INS INS INH
76 INX Inkrementuj rejestr indeksowy X INX Opis: Instrukcja dodaje jeden od zawartości rejestru indeksowego X. Tylko bit Z jest zmieniany w zależności od wyniku operacji. Bity warunkowe: Z- zostaje ustawiony, jeśli wynik wyniósł $0000, w przeciwnym razie jest zerowany. Formy instrukcji: INX INX INH
77 INY Inkrementuj rejestr indeksowy Y INY Opis: Instrukcja dodaje jeden od zawartości rejestru indeksowego Y. Tylko bit Z jest zmieniany w zależności od wyniku operacji. Bity warunkowe: Z- zostaje ustawiony, jeśli wynik wyniósł $0000, w przeciwnym razie jest zerowany. Formy instrukcji: INY INY INH
78 JMP Skocz JMP Opis: Instrukcja powoduje skok bezwarunkowy do instrukcji wskazywanej przez adres efektywny. Adres efektywny jest uzyskiwany zgodnie z regułami adresowania rozszerzonego i indeksowego. Bity warunkowe: Żaden nie jest zmieniany Formy instrukcji: JMP(opr) JMP EXT 7E 3 3 IND,X 6E 2 3 IND,Y 18 6E 3 4
79 JSR Skocz do podprogramu JSR wyłącznie dla trybu adresowania rozszerzonego i indeksowego rejestrem Y wyłącznie dla trybu adresowania bezpośredniego i indeksowego rejestrem X położenie mniej znaczącego bajtu PC nas stos położenie bardziej znaczącego bajtu PC nas stos ładowanie do PC adresu startowego żądanego podprogramu Opis: Licznik programu zwiększany jest o 2 lub 3, w zależności od trybu adresowania. Potem jest kładziony po jednym bajcie na stos począwszy od mniej znaczącego bajtu. Wskaźnik stosu wskazuje następną wolną lokację stosu. Skok następuje do instrukcji znajdującej się pod adresem efektywnym. Adres efektywny jest uzyskiwany zgodnie z regułami adresowania rozszerzonego, bezpośredniego i indeksowego. Bity warunkowe: Żaden nie jest zmieniany Formy instrukcji: JSR(opr) JSR DIR 9D 2 5 EXT BD 3 6 IND,X AD 2 6 IND,Y 18 AD 3 7
80 LDA Załaduj do akumulatora LDA Opis: Instrukcja umieszcza zawartość bajtu pamięci w 8-bitowym akumulatorze. Bity warunkowe są zmieniane w zależności od załadowanych danych. Bity warunkowe: N- zostaje ustawiony, jeśli najstarszy bit wyniku został ustawiony, w przeciwnym razie jest zerowany. Z- zostaje ustawiony, jeśli wynik wyniósł $00, w przeciwnym razie jest zerowany. V-jest zerowany. Formy instrukcji: LDAA(opr);LDAB(opr) LDAA IMM DIR EXT B6 3 4 IND,X A6 2 4 IND,Y 18 A6 3 5 LDAB IMM C6 2 2 DIR D6 2 3 EXT F6 3 4 IND,X E6 2 4 IND,Y 18 E6 3 5
81 LDD Załaduj do podwójnego akumulatora LDD Opis: Instrukcja umieszcza zawartość bajtów pamięci M i M+1 w podwójnym akumulatorze akumulatorze. Bity warunkowe są zmieniane w zależności od załadowanych danych. Informacja z bajtu pamięci M jest ładowana do akumulatora A. Natomiast informacja z bajtu pamięci M+1 jest ładowana do akumulatora B. Bity warunkowe: N- zostaje ustawiony, jeśli najstarszy bit wyniku został ustawiony, w przeciwnym razie jest zerowany. Z- zostaje ustawiony, jeśli wynik wyniósł $0000, w przeciwnym razie jest zerowany. V-jest zerowany. Formy instrukcji: LDD(opr) LDD IMM CC 3 3 DIR DC 2 4 EXT FC 3 5 IND,X EC 2 5 IND,Y 18 EC 3 6
82 LDS Załaduj do wskaźnika stosu LDS Opis: Instrukcja ładuje do bardziej znaczącego bajtu wskaźnika stosu bajt pamięci spod adresu określonego przez program, a do mniej znaczącego bajtu wskaźnika stosu ładuje bajt pamięci spod adresu o jeden większego od adresu określonego przez program. Bity warunkowe: N- zostaje ustawiony, jeśli najstarszy bit wyniku został ustawiony, w przeciwnym razie jest zerowany. Z- zostaje ustawiony, jeśli wynik wyniósł $0000, w przeciwnym razie jest zerowany. V-jest zerowany. Formy instrukcji: LDS(opr) LDS IMM 8E 3 3 DIR 9E 2 4 EXT BE 3 5 IND,X AE 2 5 IND,Y 18 AE 3 6
83 LDX Załaduj do rejestru indeksowego X LDX Opis: Instrukcja ładuje do bardziej znaczącego bajtu rejestru indeksowego X bajt pamięci spod adresu określonego przez program, a do mniej znaczącego bajtu rejestru indeksowego X ładuje bajt pamięci spod adresu o jeden większego od adresu określonego przez program. Bity warunkowe: N- zostaje ustawiony, jeśli najstarszy bit wyniku został ustawiony, w przeciwnym razie jest zerowany. Z- zostaje ustawiony, jeśli wynik wyniósł $0000, w przeciwnym razie jest zerowany. V-jest zerowany. Formy instrukcji: LDX(opr) LDX IMM CE 3 3 DIR DE 2 4 EXT FE 3 5 IND,X EE 2 5 IND,Y CD AE 3 6
84 LDY Załaduj do rejestru indeksowego Y LDY Opis: Instrukcja ładuje do bardziej znaczącego bajtu rejestru indeksowego Y bajt pamięci spod adresu określonego przez program, a do mniej znaczącego bajtu rejestru indeksowego Y ładuje bajt pamięci spod adresu o jeden większego od adresu określonego przez program. Bity warunkowe: N- zostaje ustawiony, jeśli najstarszy bit wyniku został ustawiony, w przeciwnym razie jest zerowany. Z- zostaje ustawiony, jeśli wynik wyniósł $0000, w przeciwnym razie jest zerowany. V-jest zerowany. Formy instrukcji: LDY(opr) LDY IMM 18 CE 4 4 DIR 18 DE 3 5 EXT 18 FE 4 6 IND,X 1A EE 3 6 IND,Y 18 EE 3 6
85 LSL Logiczne przesunięcie w lewo LSL Opis: Instrukcja ta przesuwa wszystkie bity z akumulatora ACCX lub bajtu pamięci jedną pozycję w lewo. Bit numer 0 jest zerowany. Bit przeniesienia w rejestrze flagowym stanowi najstarszy bit akumulatora lub bajtu pamięci. Bity warunkowe: N- zostaje ustawiony, jeśli najstarszy bit wyniku został ustawiony, w przeciwnym razie jest zerowany. Z- zostaje ustawiony, jeśli wynik wyniósł $00, w przeciwnym razie jest zerowany. V- jest wynikiem N C (gdzie N i C są wartościami bitów warunkowych po operacji przesunięcia) C- jest ustawiony jeśli przed przesunięciem najstarszy bit akumulatora lub bajtu pamięci był ustawiony, w przeciwnym razie jest zerowany. Formy instrukcji: LSLA;LSLB;LSL(opr) LSLA INH LSLB INH LSL EXT IN D,X IND,Y
86 LSLD Logiczne przesunięcie w lewo podwójnego akumulatora D LSLD Opis: Instrukcja ta przesuwa wszystkie bity z akumulatora D jedną pozycję w lewo. Bit numer 0 jest zerowany. Bit przeniesienia w rejestrze flagowym stanowi najstarszy bit akumulatora. Bity warunkowe: N- zostaje ustawiony, jeśli najstarszy bit wyniku został ustawiony, w przeciwnym razie jest zerowany. Z- zostaje ustawiony, jeśli wynik wyniósł $00, w przeciwnym razie jest zerowany. V- jest wynikiem N C (gdzie N i C są wartościami bitów warunkowych po operacji przesunięcia) C- jest ustawiony jeśli przed przesunięciem najstarszy bit akumulatora był ustawiony, w przeciwnym razie jest zerowany. Formy instrukcji: LSLD LSLD INH
87 LSR Logiczne przesunięcie w prawo LSR Opis: Instrukcja ta przesuwa wszystkie bity akumulatora ACCX lub bajtu pamięci jedną pozycję w prawo. Bit numer 0 jest załadowywany do bitu przeniesienia w rejestrze flagowym. Bit 7 jest zerowany. Bity warunkowe: N- jest zerowany. Z- zostaje ustawiony, jeśli wynik wyniósł $00, w przeciwnym razie jest zerowany. V- jest równy bitowi C po wykonaniu przesunięcia C- jest ustawiony jeśli przed przesunięciem najmłodszy bit akumulatora lub bajtu pamięci był ustawiony, w przeciwnym razie jest zerowany. Formy instrukcji: LSRA;LSRB;LSR(opr) LSRA INH LSRB INH LSR EXT IND,X IND,Y
88 LSRD Logiczne przesunięcie w prawo podwójnego akumulatora D LSRD Opis: Instrukcja ta przesuwa wszystkie bity z akumulatora D jedną pozycję w prawo. Najstarszy bit akumulatora A jest zerowany. Bit przeniesienia w rejestrze flagowym stanowi najmłodszy bit akumulatora B. Bity warunkowe: N- zostaje ustawiony, jeśli najstarszy bit wyniku został ustawiony, w przeciwnym razie jest zerowany. Z- zostaje ustawiony, jeśli wynik wyniósł $00, w przeciwnym razie jest zerowany. V- jest wynikiem N C (gdzie N i C są wartościami bitów warunkowych po operacji przesunięcia) C- jest ustawiony jeśli przed przesunięciem najstarszy bit akumulatora był ustawiony, w przeciwnym razie jest zerowany. Formy instrukcji: LSRD LSRD INH
89 MUL Mnożenie bez znaku MUL Opis: Instrukcja ta mnoży 8-bitową wartość bez znaku znajdującą się w akumulatorze A poprzez 8-bitową wartość bez znaku znajdującą się w akumulatorze B. Uzyskany wynik jest wartością 16-bitową bez znaku umieszczaną w akumulatorze podwójnym D. Bit przeniesienia umożliwia zaokrąglenie najbardziej znaczącego bajtu wyniku poprzez sekwencję MUL,ADCA#0 Bity warunkowe: C- jest ustawiony jeśli 7-bit wyniku jest ustawiony. Formy instrukcji: MUL MUL INH 3D 1 10
90 NEG Zaneguj NEG Opis: Instrukcja zastępuje zawartość akumulatora ACCX lub bajtu pamięci M jego uzupełnieniem do dwóch. Bity warunkowe: N- zostaje ustawiony, jeśli najstarszy bit wyniku został ustawiony, w przeciwnym razie jest zerowany. Z- zostaje ustawiony, jeśli wynik wyniósł $00, w przeciwnym razie jest zerowany. V- zostaje ustawiony, jeśli w wyniku operacji nastąpiło przepełnienie, w przeciwnym razie jest zerowany. C-zostaje ustawiony, jeśli nastąpiła pożyczka w wyniku przeprowadzonego odejmowania od zera z najstarszego bitu wyniku. Bit C zostanie ustawiony w każdym przypadku z wyjątkiem sytuacji, kiedy w akumulatorze lub bajcie pamięci znajduje się wartość #00. Formy instrukcji: NEGA;NEGB;NEG(opr) NEGA INH NEGB INH NEG EXT IND,X IND,Y
91 NOP Brak operacji NOP Opis: Ta jednobajtowa instrukcja powoduje jedynie zwiększenie licznika programu. Żadne inne rejestry nie są zmieniane. Jest ona zwykle wykorzystywane w celu wprowadzenia czasowego opóźnienia, choć niektóre reguły programowania odradzają wprowadzanie opóźnień opartych na częstotliwości jednostki centralnej. Podczas procesu debugowania instrukcja NOP jest często wprowadzana w miejsce innych instrukcji, a zatem powoduje ich wyłączenie. Bity warunkowe: Żaden nie jest zmieniany Formy instrukcji: NOP NOP INH
92 ORA Inclusive OR ORA Opis: Dokonuje logicznego XOR pomiędzy zawartością ACCX i zawartością M. Wynik jest umieszczany w akumulatorze ACCX. W wyniku operacji każdy bit ACCX będzie inclusiveorem odpowiadających sobie bitów akumulatora ACCX i zawartości pamięci. Bity warunkowe: N- zostaje ustawiony, jeśli najstarszy bit wyniku został ustawiony, w przeciwnym razie jest zerowany. Z- zostaje ustawiony, jeśli wynik wyniósł $00, w przeciwnym razie jest zerowany. V- jest zerowany. Formy instrukcji: ORAA(opr);ORAB(opr) ORAA IMM 8A 2 2 DIR 9A 2 3 EXT BA 3 4 IND,X AA 2 4 IND,Y 18 AA 3 5 ORAB IMM CA 2 2 DIR DA 2 3 EXT FA 3 4 IND,X EA 2 4 IND,Y 18 EA 3 5
93 PSH Połóż dane na stos PSH Opis: Zawartość akumulatora ACCX jest kładziona pod adresem wskazywanym przez wskaźnik stosu. Następnie wskaźnik stosu jest zmniejszany o jeden. Instrukcje położenia na stos są zwykle używane na początku podprogramu w celu zabezpieczenia zawartości jednego lub więcej rejestrów. Tuż przed powrotem z podprogramu używa się odpowiednich instrukcji ściągających ze stosu w celu przywrócenia rejestrom ich poprzedniej zawartości. Bity warunkowe: Żaden nie jest zmieniany Formy instrukcji: PSHA;PSHB PSHA INH PSHB INH
94 PSHX Połóż rejestr indeksowy X na stos PSHX Opis: Zawartość rejestru indeksowego X jest kładziona pod adresem wskazywanym przez wskaźnik stosu (najpierw młodszy bajt). Następnie wskaźnik stosu jest zmniejszany o dwa. Instrukcje położenia na stos są zwykle używane na początku podprogramu w celu zabezpieczenia zawartości jednego lub więcej rejestrów. Tuż przed powrotem z podprogramu używa się odpowiednich instrukcji ściągających ze stosu w celu przywrócenia rejestrom ich poprzedniej zawartości. Bity warunkowe: Żaden nie jest zmieniany Formy instrukcji: PSHX PSHX INH 3C 1 4
95 PSHY Połóż rejestr indeksowy Y na stos PSHY Opis: Zawartość rejestru indeksowego Y jest kładziona pod adresem wskazywanym przez wskaźnik stosu (najpierw młodszy bajt). Następnie wskaźnik stosu jest zmniejszany o dwa. Instrukcje położenia na stos są zwykle używane na początku podprogramu w celu zabezpieczenia zawartości jednego lub więcej rejestrów. Tuż przed powrotem z podprogramu używa się odpowiednich instrukcji ściągających ze stosu w celu przywrócenia rejestrom ich poprzedniej zawartości. Bity warunkowe: Żaden nie jest zmieniany Formy instrukcji: PSHY PSHY INH 18 3C 2 5
96 PUL Ściągnij dane ze stosu PUL Opis: Wskaźnik stosu jest zwiększany o jeden. Następnie akumulator ACCX jest ładowany wartością ze stosu spod adresu wskazywanego przez wskaźnik stosu. Instrukcje położenia na stos są zwykle używane na początku podprogramu w celu zabezpieczenia zawartości jednego lub więcej rejestrów. Tuż przed powrotem z podprogramu używa się odpowiednich instrukcji ściągających ze stosu w celu przywrócenia rejestrom ich poprzedniej zawartości. Bity warunkowe: Żaden nie jest zmieniany Formy instrukcji: PULA;PULB PULA INH PULB INH
97 PULX Ściągnij rejestr indeksowy X ze stosu PULX Opis: Rejestr indeksowy X jest ściągany ze stosu (starszy bajt najpierw) poczynając od adresu wskazywanego przez zwiększony o jeden wskaźnik stosu. Wskaźnik stosu jest w sumie zwiększany o dwa. Instrukcje położenia na stos są zwykle używane na początku podprogramu w celu zabezpieczenia zawartości jednego lub więcej rejestrów. Tuż przed powrotem z podprogramu używa się odpowiednich instrukcji ściągających ze stosu w celu przywrócenia rejestrom ich poprzedniej zawartości. Bity warunkowe: Żaden nie jest zmieniany Formy instrukcji: PULX PULX INH
98 PULY Ściągnij rejestr indeksowy Y ze stosu PULY Opis: Rejestr indeksowy Y jest ściągany ze stosu (starszy bajt najpierw) poczynając od adresu wskazywanego przez zwiększony o jeden wskaźnik stosu. Wskaźnik stosu jest w sumie zwiększany o dwa. Instrukcje położenia na stos są zwykle używane na początku podprogramu w celu zabezpieczenia zawartości jednego lub więcej rejestrów. Tuż przed powrotem z podprogramu używa się odpowiednich instrukcji ściągających ze stosu w celu przywrócenia rejestrom ich poprzedniej zawartości. Bity warunkowe: Żaden nie jest zmieniany Formy instrukcji: PULY PULY INH
99 ROL Obróć w lewo ROL Opis: Instrukcja ta przesuwa wszystkie bity z akumulatora ACCX lub bajtu pamięci jedną pozycję w lewo. Bit numer 0 jest ładowany z bitu przeniesienia C. Bit przeniesienia w rejestrze flagowym stanowi najstarszy bit akumulatora lub bajtu pamięci. Instrukcje obrotów używają bitu przeniesienia, aby umożliwić przesuwanie i obrót wielokrotnych bajtów. Np., aby przesunąć 24- bitową wartość 1 bit w lewo, można użyć następującej sekwencji: ASL LOW, ROL MID, ROL HIG ( gdzie LOW,MID,HIG oznaczają odpowiednio najmłodszy, średni i najstarszy bajt wartości) Bity warunkowe: N- zostaje ustawiony, jeśli najstarszy bit wyniku został ustawiony, w przeciwnym razie jest zerowany. Z- zostaje ustawiony, jeśli wynik wyniósł $00, w przeciwnym razie jest zerowany. V- jest wynikiem N C (gdzie N i C są wartościami bitów warunkowych po operacji przesunięcia) C- jest ustawiony, jeśli przed obrotem najstarszy bit akumulatora lub bajtu pamięci był ustawiony, w przeciwnym razie jest zerowany. Formy instrukcji: ROLA;ROLB;ROL(opr) ROLA INH ROLB INH ROL EXT IND,X IND,Y
100 ROR Obróć w prawo ROR Opis: Instrukcja ta przesuwa wszystkie bity z akumulatora ACCX lub bajtu pamięci jedną pozycję w prawo. Bit numer 7 jest ładowany z bitu przeniesienia C. Bit przeniesienia w rejestrze flagowym stanowi najmłodszy bit akumulatora lub bajtu pamięci. Instrukcje obrotów używają bitu przeniesienia, aby umożliwić przesuwanie i obrót wielokrotnych bajtów. Np., aby przesunąć 24-bitową wartość 1 bit w prawo, można użyć następującej sekwencji: LSR HIG, ROR MID, ROR LOW ( gdzie LOW,MID,HIG oznaczają odpowiednio najmłodszy, średni i najstarszy bajt wartości). Pierwsza instrukcja (LSR) mogłaby zostać zastąpiona przez ASR w celu zachowania znaku 24-bitowej wartości. Bity warunkowe: N- zostaje ustawiony, jeśli najstarszy bit wyniku został ustawiony, w przeciwnym razie jest zerowany. Z- zostaje ustawiony, jeśli wynik wyniósł $00, w przeciwnym razie jest zerowany. V- jest wynikiem N C (gdzie N i C są wartościami bitów warunkowych po operacji przesunięcia) C- jest ustawiony, jeśli przed obrotem najmłodszy bit akumulatora lub bajtu pamięci był ustawiony, w przeciwnym razie jest zerowany. Formy instrukcji: RORA;RORB;ROR(opr) RORA INH RORB INH ROR EXT IND,X IND,Y
101 RTI Powróć z obsługi przerwania RTI Opis: Instrukcja ta ściąga ze stosu rejestr flagowy, akumulatory A i B, rejestry indeksowe X i Y oraz licznik programu PC. Bit X rejestru flagowego może zostać wyzerowany w wyniku instrukcji RTI, gdy przed jej wykonaniem był ustawiony. Bity warunkowe: Bity rejestru flagowego przyjmują wartości odpowiednich bitów rejestru flagowego ściągniętego ze stosu, oprócz bitu X, który nie może się zmienić z 0 na 1. Software może pozostawić bit X ustawiony, wyzerowany lub zmienić go z 1 na 0. Bit maskowania przerwania XIRQ może zostać ustawiony jedynie w przypadku resetu lub rozpoznania przerwania XIRQ. Formy instrukcji: RTI RTI INH 3B 1 12
102 RTS Powróć z podprogramu RTS Opis: Wskaźnik stosu jest zwiększany o jeden. Zawartość bajtu pamięci wskazywanego teraz przez wskaźnik stosu jest ładowana do starszego bajtu licznika pro gramu. Następnie wskaźnik stosu jest znowu zwiększany o jeden. Zawartość bajtu pamięci wskazywanego teraz przez wskaźnik stosu jest ładowana do młodszego bajtu licznika programu. Bity warunkowe: Żaden nie jest zmieniany Formy instrukcji: RTS RTS INH
103 SBA Odejmij akumulator B do akumulatora A SBA Opis: Odejmuje zawartość akumulatora B od zawartości akumulatora A i umieszcza wynik w akumulatorze A. Zawartość akumulatora B nie ulega zmianie. Bit przeniesienia reprezentuje pożyczkę. Bity warunkowe: N- zostaje ustawiony, jeśli najstarszy bit wyniku został ustawiony, w przeciwnym razie jest zerowany. Z- zostaje ustawiony, jeśli wynik wy niósł $00, w przeciwnym razie jest zerowany. V- zostaje ustawiony, jeśli w wyniku operacji nastąpiło przepełnienie, w przeciwnym razie jest zerowany. C-zostaje ustawiony, je śli nastąpiła pożycz ka z najstarszego bitu wyniku, w przeciwnym razie jest zerowany Formy instrukcji: SBA INH
104 SBC Ode jmij z pożyczką SBC Opis: Odejmuje bit C do różnicy zawartości ACCX i zawartości M. Wynik umieszczony zostaje w ACCX. Bit przeniesienia reprezentuje pożyczkę. Bity warunkowe: N- zostaje ustawiony, jeśli najstarszy bit wyniku został ustawiony, w przeciwnym razie jest zerowany. Z- zostaje ustawiony, jeśli wynik wyniósł $00, w przeciwnym razie jest zerowany. V- zostaje ustawiony, jeśli w wyniku operacji nastąpiło przepełnienie, w przeciwnym razie jest zerowany. C-zostaje ustawiony, jeśli nastąpiła pożyczka z najstarszego bitu wyniku, w przeciwnym razie jest zerowany Formy instrukcji: SBCA(opr);SBCB(opr) SBCA IMM DIR EXT B2 3 4 IND,X A2 2 4 IND,Y 18 A2 3 5 SBCB IMM C2 2 2 DIR D2 2 3 EXT F2 3 4 IND,X E2 2 4 IND,Y 18 E2 3 5
105 SEC Ustaw bit przeniesienia SEC Opis: Instrukcja ustawia bit przeniesienia w rejestrze flagowym CCR. Bity warunkowe: C-jest ustawiany Formy instrukcji: SEC SEC INH 0D 1 2
106 SEI Ustaw maskowanie przerwań SEI Opis: Instrukcja ustawia bit maskowania przerwań w rejestrze flagowym CCR. Jeśli bit I jest ustawiony, wszystkie maskowalne przerwania są zabronione. Mikroprocesor w tym stanie będzie obsługiwał jedynie przerwania niemaskowalne i przerwania programowe. Bity warunkowe: I-jest ustawiany Formy instrukcji: SEC SEI INH 0F 1 2
107 SEV Ustaw bit przepełnienia SEV Opis: Instrukcja ustawia bit przep ełnienia w rejestrze flagowym CCR. Bity warunkowe: V-jest ustawiany Formy instrukcji: SEV SEV INH 0B 1 2
108 STA Umieść w pamięci zawartość akumulatora STA Opis: Instrukcja zapisuje w pamięci zawartość akumulatora ACCX. Zawartość zmianie. Bity warunkowe: N- zostaje ustawiony, jeśli najstarszy bit wyniku został ustawiony, w przeciwnym razie jest zerowany. Z- zostaje ustawiony, jeśli wynik wyniósł $00, w przeciwnym razie jest zerowany. V- jest zerowany. Formy instrukcji: STAA(opr);STAB(opr) ACCX nie ulega STAA DIR EXT B7 3 4 IND,X A7 2 4 IND,Y 18 A7 3 5 STAB DIR D7 2 3 EXT F7 3 4 IND,X E7 2 4 IND,Y 18 E7 3 5
109 STD Umieść w pamięci zawartość podwójnego akumulatora STD Opis: Instrukcja zapisuje w pamięci zawartość akumulatora D. Zawartość D nie ulega zmianie. Bity warunkowe: N- zostaje ustawiony, jeśli najstarszy bit wyniku zos tał ustawiony, w przeciwnym razie jest zerowany. Z- zostaje ustawiony, jeśli wynik wy niósł $0000, w przeciwnym razie jest zerowany. V- jest zerowany. Formy instrukcji: STD(opr) STD DIR DD 2 4 EXT FD 3 5 IND,X ED 2 5 IND,Y 18 ED 3 6
110 STOP Zatrzymaj STOP Opis: Jeśli w rejestrze flagowym bit S jest ustawiony, wówczas instrukcja STOP jest zablokowana i traktowana jako instrukcja NOP. Jeśli bit S jest wyzerowany wówczas instrukcja STOP powoduje zatrzymanie wszystkich wewnętrznych zegarów mikroprocesora i system przechodzi w stan obniżonego poboru mocy. Wszystkie rejestry jednostki centralnej nie ulegają zmianie. To samo dotyczy nóżek I/O. Wyjście ze STOPu może nastąpić poprzez RESET, XIRQ, i niezamaskowane IRQ. Wyjście ze STOPu, przy wyzerowanym bicie X w rejestrze flagowym, rozpocznie się od operacji stosowych właściwych dla przerwania XIRQ. Jeśli bit X jest ustawiony wówczas wyjście ze STOPu spowoduje pobranie następnego kodu operacji po instrukcji STOP. Wyjście ze STOP może być błędne w pewnych szczególnych okolicznościach. Jeśli kod operacji poprzedzającej STOP pochodzi z 4 lub 5 kolumny mapy kodów operacji, wówczas instrukcja STOP zostanie błędnie zinterpretowana jako instrukcja 2 bajtowa. Prostym rozwiązaniem tego problemu jest poprzedzenie instrukcji STOP instrukcja NOP. Bity warunkowe: Żaden nie jest zmieniany Formy instrukcji: STOP STOP INH CF 1 2
111 STS Umieść w pamięci zawartość wskaźnika stosu STS Opis: Instrukcja zapisuje w pamięci zawartość młodszego bajtu wskaźnika stosu pod adresem wskazanym w instrukcji. Bajt starszy zapisywany jest w pamięci pod adresem o jeden większym od adresu wskazanego w instrukcji. Bity warunkowe: N- zostaje ustawiony, jeśli najstarszy bit wyniku został ustawiony, w przeciwnym razie jest zerowany. Z- zostaje ustawiony, jeśli wynik wyniósł $0000, w przeciwnym razie jest zerowany. V- jest zerowany. Formy instrukcji: STS(opr) STS DIR 9F 2 4 EXT BF 3 5 IND,X AF 2 5 IND,Y 18 AF 3 6
112 STX Umieść w pamięci zawartość rejestru indeksowego X STX Opis: Instrukcja zapisuje w pamięci zawartość młodszego bajtu rejestru indeksowego X pod adresem wskazanym w instrukcji. Bajt starszy zapisywany jest w pamięci pod adresem o jeden większym od adresu wskazanego w instrukcji. Bity warunkowe: N- zostaje ustawiony, jeśli najstarszy bit wyniku został ustawiony, w przeciwnym razie jest zerowany. Z- zostaje ustawiony, jeśli wynik wyniósł $0000, w przeciwnym razie jest zerowany. V- jest zerowany. Formy instrukcji: STX(opr) STX DIR DF 2 4 EXT FF 3 5 IND,X EF 2 5 IND,Y CD EF 3 6
113 STY Umieść w pamięci zawartość rejestru indeksowego X STY Opis: Instrukcja zapisuje w pamięci zawartość młodszego bajtu rejestru indeksowego Y pod adresem wskazanym w instrukcji. Bajt starszy zapisywany jest w pamięci pod adresem o jeden większym od adresu wskazanego w instrukcji. Bity warunkowe: N- zostaje ustawiony, jeśli najstarszy bit wyniku został ustawiony, w przeciwnym razie jest zerowany. Z- zostaje ustawiony, jeśli wynik wy niósł $0000, w przeciwnym razie jest zerowany. V- jest zerowany. Formy instrukcji: STY(opr) STY DIR 18 DF 3 5 EXT 18 FF 4 6 IND,X 1A EF 3 6 IND,Y 18 EF 3 6
114 SUB Odejmij SUB Opis: Odejmuje zawartość pamięci M do zawartości ACCX. Wynik jest umieszczany w ACCX. Bit przeniesienia reprezentuje pożyczkę. Bity warunkowe: N- zostaje ustawiony, jeśli najstarszy bit wyniku został ustawiony, w przeciwnym razie jest zerowany. Z- zostaje ustawiony, jeśli wynik wy niósł $00, w przeciwnym razie jest zerowany. V- zostaje ustawiony, jeśli w wyniku operacji nastąpiło przepełnienie, w przeciwnym razie jest zerowany. C-zostaje ustawiony, jeśli nastąpiła pożyczka z najstarszego bitu wyniku, w przeciwnym razie jest zerowany Formy instrukcji: SUBA(opr);SUBB(opr) SUBA IMM DIR EXT B0 3 4 IND,X A0 2 4 IND,Y 18 A0 3 5 SUBB IMM C0 2 2 DIR D0 2 3 EXT F0 3 4 IND,X E0 2 4 IND,Y 18 E0 3 5
115 SUBD Odejmij podwójny akumulator SUBD Opis: Odejmuje zawartość pamięci M połączonej z zawartością pamięci M+1 od zawartości akumulatora D. Wynik jest umieszczany w akumulatorze D. W akumulatorze D akumulator A stanowi bardziej znaczący bajt. Bit przeniesienia reprezentuje pożyczkę. Bity warunkowe: N- zostaje ustawiony, jeśli najstarszy bit wyniku zos tał ustawiony, w przeciwnym razie jest zerowany. Z- zostaje ustawiony, jeśli wynik wyniósł $0000, w przeciwnym razie jest zerowany. V- zostaje ustawiony, jeśli w wyniku operacji nastąpiło przepełnienie, w przeciwnym razie jest zerowany. C-zostaje ustawiony, jeśli nastąpiła pożyczka z najstarszego bitu wyniku, w przeciwnym razie jest zerowany Formy instrukcji: SUBD(opr) SUBD IMM DIR EXT B3 3 6 IND,X A3 2 6 IND,Y 18 A3 3 7
116 SWI Przerwanie programowe SWI Opis: Licznik programu zwiększany jest o jeden. Na stos kładzione są licznik programu, rejestry indeksowe X i Y oraz akumulatory A i B. Następnie na stos kładziony jest rejestr flagowy CCR. Wskaźnik stosu jest zmniejszany o jeden po każdym położeniu bajtu na stos. Potem w rejestrze flagowym następuje ustawienie bitu I. Licznik programu jest załadowywany wektorem przerwania SWI. Program jest kontynuowany od instrukcji wskazywanej przez ten wektor. Instrukcja wskazywana przez wektor przerwania SWI nie jest jeszcze maskowana przez bit I. Bity warunkowe: N- zostaje ustawiony, jeśli najstarszy bit wyniku został ustawiony, w przeciwnym razie jest zerowany. Z- zostaje ustawiony, jeśli wynik wyniósł $0000, w przeciwnym razie jest zerowany. V- zostaje ustawiony, jeśli w wyniku operacji nastąpiło przepełnienie, w przeciwnym razie jest zerowany. C-zostaje ustawiony, jeśli nastąpiła pożyczka z najstarszego bitu wyniku, w przeciwnym razie jest zerowany Formy instrukcji: SWI SWI INH 3F 1 14
117 TAB Prześlij zawartość akumulatora A do akumulatora B TAB Opis: Instrukcja przesyła zawartość akumulatora A do akumulatora B. Poprzednia zawartość akumulatora B jest tracona, a zawartość akumulatora A nie ulega zmianie. Bity warunkowe: N- zostaje ustawiony, jeśli najstarszy bit wyniku został ustawiony, w przeciwnym razie jest zerowany. Z- zostaje ustawiony, jeśli wynik wyniósł $00, w przeciwnym razie jest zerowany. V- zostaje wyzerowany Formy instrukcji: TAB TAB INH
118 TAP Prześlij zawartość akumulatora A do rejestru flagowego TAP Opis: Instrukcja przesyła zawartość bitów 0-7 akumulatora A do odpowiednich bitów rejestru flagowego CCR. Zawartość akumulatora A nie ulega zmianie. W wyniku wykonania instrukcji TAP bit X może zostać wyzerowany, nie może jednak zostać ustawiony, jeśli przed wykonaniem instrukcji TAP był wyzerowany. Bity warunkowe: Bity rejestru flagowego przyjmują wartości odpowiednich bitów akumulatora A, oprócz bitu X, który nie może się zmienić z 0 na 1. Software może pozostawić bit X ustawiony, wyzerowany lub zmienić go z 1 na 0. Bit maskowania przerwania XIRQ może zostać ustawiony jedynie w przypadku resetu lub rozpoznania przerwania XIRQ. Formy instrukcji: TAP TAP INH
119 TBA Prześlij zawartość akumulatora B do akumulatora A TBA Opis: Instrukcja przesyła zawartość akumulatora B do akumulatora A. Poprzednia zawartość akumulatora A jest tracona, a zawartość akumulatora B nie ulega zmianie. Bity warunkowe: N- zostaje ustawiony, jeśli najstarszy bit wyniku został ustawiony, w przeciwnym razie jest zerowany. Z- zostaje ustawiony, jeśli wynik wyniósł $00, w przeciwnym razie jest zerowany. V- zostaje wyzerowany Formy instrukcji: TBA TAB INH
120 TEST Wykonaj testowanie (wyłącznie w trybie TEST) TEST Opis: Ta jednobajtowa instrukcja powoduje ciągłe zwiększanie licznika programu o jeden. Może być wykonywana jedynie w trybie TEST. Aby przerwać jeje wykonywanie należy zresetować mikroprocesor. Podczas wykonywania tej instrukcji wykonywanie programu jest zawieszone. Jeśli mikroprocesor nie jest w trybie TEST, wówczas instrukcja ta jest traktowana jako nielegalna. Bity warunkowe: Żaden nie jest zmieniany Formy instrukcji: TEST TEST INH 00 1
121 TPA Prześlij zawartość rejestru flagowego do akumulatora A TPA Opis: Instrukcja przesyła zawartość rejestru flagowego do akumulatora A. Poprzednia zawartość akumulatora A jest tracona, a zawartość rejestru flagowego nie ulega zmianie Bity waru nkowe: Żaden nie jest zmieniany Formy instrukcji: TPA TPA INH
122 TST Testuj TST Opis: Instrukcja odejmuje $00 od zawartości akumulatora ACCX lub bajtu pamięci M. W wyniku operacji odpowiednio zostają zmienione bity warunkowe. Odejmowanie jest wykonywane całkowicie wewnętrznie bez zmieniania zawartości akumulatora ACCX lub bajtu pamięci M. W przypadku wartości bez znaku instrukcja TST dostarcza jedynie podstawowych informacji. Ponieważ żadna wartość bez znaku nie jest mniejsza od zera, instrukcje BLO i BLS nie mają zastosowania. Użycie instrukcji BHI po instrukcji TST dałoby taki sam rezultat jak instrukcja BNE. Po testowaniu wartości ze znakiem wszystkie znakowe instrukcje skoków są dostępne. Bity warunkowe: N- zostaje ustawiony, jeśli najstarszy bit wyniku został ustawiony, w przeciwnym razie jest zerowany. Z- zostaje ustawiony, jeśli wynik wyniósł $00, w przeciwnym razie jest zerowany. V- zostaje wyzerowany C- zostaje wyzerowany Formy instrukcji: TST TSTA INH 4D 1 2 TSTB INH 5D 1 2 TST EXT 7D 3 6 IND,X 6D 2 6 IND,Y 18 6D 3 7
123 TSX Prześlij zawartość wskaźnika stosu do rejestru indeksowego X TSX Opis: Instrukcja przesyła zawartość wskaźnika stosu powiększoną o jeden do rejestru indeksowego X. Zawartość wskaźnika stosu nie ulega zmianie. Po wykonaniu instrukcji TSX rejestr indeksowy X wskazuje ostatnią wartość położoną na stos. Bity warunkowe: Żaden nie jest zmieniany Formy instrukcji: TSX TSX INH
124 TSY Prześlij zawartość wskaźnika stosu do rejestru indeksowego Y TSY Opis: Instrukcja przesyła zawartość wskaźnika stosu powiększoną o jeden do rejestru indeksowego Y. Zawartość wskaźnika stosu nie ulega zmianie. Po wykonaniu instrukcji TSY rejestr indeksowy Y wskazuje ostatnią wartość położoną na stos. Bity warunkowe: Żaden nie jest zmieniany Formy instrukcji: TSY TSY INH
125 TXS Prześlij zawartość rejestru indeksowego X do wskaźnika stosu TXS Opis: Instrukcja przesyła zawartość rejestru indeksowego X pomniejszoną o jeden do wskaźnika stosu. Zawartość rejestru indeksowego X nie ulega zmianie Bity warunkowe: Żaden nie jest zmieniany Formy instrukcji: TXS TXS INH
126 TYS Prześlij zawartość rejestru indeksowego Y do wskaźnika stosu TYS Opis: Instrukcja przesyła zawartość rejestru indeksowego Y pomniejszoną o jeden do wskaźnika stosu. Zawartość rejestru indeksowego Y nie ulega zmianie Bity warunkowe: Żaden nie jest zmieniany Formy instrukcji: TYS TYS INH
127 WAI Czekaj na przerwanie WAI Opis: Licznik programu zwiększany jest o jeden. Na stos kładzione są licznik programu, rejestry indeksowe X i Y oraz akumulatory A i B. Następnie na stos kładziony jest rejestr flagowy CCR. Wskaźnik stosu jest zmniejszany o jeden po każdym położeniu bajtu na stos. Następnie mikroprocesor wchodzi w stan oczekiwania przez całkowitą liczbę cykli zegara E. Mikroprocesor wychodzi ze stanu oczekiwania jeśli nastąpi przerwanie, które nie zostało zamaskowane. Po wyjściu ze stanu oczekiwania mikroprocesor ustawia bit I w rejestrze flagowym CCR, pobiera wektor przerwania, które nastąpiło i dalsze wykonywanie instrukcji następuje od tego miejsca. Bity warunkowe: Żaden nie jest zmieniany Formy instrukcji: WAI WAI INH 3E 1
Budowa linii asemblera
Budowa linii asemblera Pola w linii s a oddzielone znakami białymi (spacje, tabulacje). Wewn atrz pola znaki te nie wystepuj a. Linia programu zawiera cztery pola (być może puste): etykieta mnemonik operand
MOŻLIWOŚCI PROGRAMOWE MIKROPROCESORÓW
MOŻLIWOŚCI PROGRAMOWE MIKROPROCESORÓW Projektowanie urządzeń cyfrowych przy użyciu układów TTL polegało na opracowaniu algorytmu i odpowiednim doborze i zestawieniu układów realizujących różnorodne funkcje
Technika mikroprocesorowa I Studia niestacjonarne rok II Wykład 2
Technika mikroprocesorowa I Studia niestacjonarne rok II Wykład 2 Literatura: www.zilog.com Z80 Family, CPU User Manual Cykle magistrali w mikroprocesorze Z80 -odczyt kodu rozkazu, -odczyt-zapis pamięci,
Architektura komputerów
Architektura komputerów Wykład 3 Jan Kazimirski 1 Podstawowe elementy komputera. Procesor (CPU) 2 Plan wykładu Podstawowe komponenty komputera Procesor CPU Cykl rozkazowy Typy instrukcji Stos Tryby adresowania
Technika mikroprocesorowa I Wykład 2
Technika mikroprocesorowa I Wykład 2 Literatura: www.zilog.com Z80 Family, CPU User Manual Cykle magistrali w mikroprocesorze Z80 -odczyt kodu rozkazu, -odczyt-zapis pamięci, -odczyt-zapis urządzenia we-wy,
Struktura i działanie jednostki centralnej
Struktura i działanie jednostki centralnej ALU Jednostka sterująca Rejestry Zadania procesora: Pobieranie rozkazów; Interpretowanie rozkazów; Pobieranie danych Przetwarzanie danych Zapisywanie danych magistrala
Spis treœci. Co to jest mikrokontroler? Kody i liczby stosowane w systemach komputerowych. Podstawowe elementy logiczne
Spis treści 5 Spis treœci Co to jest mikrokontroler? Wprowadzenie... 11 Budowa systemu komputerowego... 12 Wejścia systemu komputerowego... 12 Wyjścia systemu komputerowego... 13 Jednostka centralna (CPU)...
Architektura typu Single-Cycle
Architektura typu Single-Cycle...czyli budujemy pierwszą maszynę parową Przepływ danych W układach sekwencyjnych przepływ danych synchronizowany jest sygnałem zegara Elementy procesora - założenia Pamięć
Architektura komputerów. Asembler procesorów rodziny x86
Architektura komputerów Asembler procesorów rodziny x86 Architektura komputerów Asembler procesorów rodziny x86 Rozkazy mikroprocesora Rozkazy mikroprocesora 8086 można podzielić na siedem funkcjonalnych
Wstęp Architektura mikrokontrolerów 68HC08
3 Wstęp...10 1. Architektura mikrokontrolerów 68HC08...13 1.1. Architektura... 14 1.1.1. CPU: rdzeń 68HC08...14 1.1.1.1. Model 68HC08 dla programisty... 14 1.1.1.2. Podstawy: przeniesienie i przepełnienie...
Lista rozkazów mikrokontrolera 8051
Lista rozkazów mikrokontrolera 8051 Spis treści: Architektura mikrokontrolera Rozkazy Architektura mikrokontrolera Mikrokontroler 8051 posiada trzy typy pamięci: układ zawiera pamięć wewnętrzną (On-Chip
UTK Można stwierdzić, że wszystkie działania i operacje zachodzące w systemie są sterowane bądź inicjowane przez mikroprocesor.
Zadaniem centralnej jednostki przetwarzającej CPU (ang. Central Processing Unit), oprócz przetwarzania informacji jest sterowanie pracą pozostałych układów systemu. W skład CPU wchodzą mikroprocesor oraz
CPU ROM, RAM. Rejestry procesora. We/Wy. Cezary Bolek Uniwersytet Łódzki Wydział Zarządzania Katedra Informatyki
Cezary Bolek Uniwersytet Łódzki Wydział Zarządzania Katedra Informatyki Komputer jest urządzeniem, którego działanie opiera się na wykonywaniu przez procesor instrukcji pobieranych z pamięci operacyjnej
ARCHITEKTURA PROCESORA,
ARCHITEKTURA PROCESORA, poza blokami funkcjonalnymi, to przede wszystkim: a. formaty rozkazów, b. lista rozkazów, c. rejestry dostępne programowo, d. sposoby adresowania pamięci, e. sposoby współpracy
Wprowadzenie do architektury komputerów systemy liczbowe, operacje arytmetyczne i logiczne
Wprowadzenie do architektury komputerów systemy liczbowe, operacje arytmetyczne i logiczne 1. Bit Pozycja rejestru lub komórki pamięci służąca do przedstawiania (pamiętania) cyfry w systemie (liczbowym)
Rejestry procesora. Nazwa ilość bitów. AX 16 (accumulator) rejestr akumulatora. BX 16 (base) rejestr bazowy. CX 16 (count) rejestr licznika
Rejestry procesora Procesor podczas wykonywania instrukcji posługuje się w dużej części pamięcią RAM. Pobiera z niej kolejne instrukcje do wykonania i dane, jeżeli instrukcja operuje na jakiś zmiennych.
Mikrokontroler ATmega32. Język symboliczny
Mikrokontroler ATmega32 Język symboliczny 1 Język symboliczny (asembler) jest językiem niskiego poziomu - pozwala pisać programy złożone z instrukcji procesora. Kody instrukcji są reprezentowane nazwami
organizacja procesora 8086
Systemy komputerowe Procesor 8086 - tendencji w organizacji procesora organizacja procesora 8086 " # $ " % strali " & ' ' ' ( )" % *"towego + ", -" danych. Magistrala adresowa jest 20.bitowa, co pozwala
Architektura komputerów
Architektura komputerów Tydzień 5 Jednostka Centralna Zadania realizowane przez procesor Pobieranie rozkazów Interpretowanie rozkazów Pobieranie danych Przetwarzanie danych Zapisanie danych Główne zespoły
Architektura systemów komputerowych Laboratorium 14 Symulator SMS32 Implementacja algorytmów
Marcin Stępniak Architektura systemów komputerowych Laboratorium 14 Symulator SMS32 Implementacja algorytmów 1. Informacje Poniższe laboratoria zawierają podsumowanie najważniejszych informacji na temat
Architektura komputerów
Architektura komputerów Tydzień 4 Tryby adresowania i formaty Tryby adresowania Natychmiastowy Bezpośredni Pośredni Rejestrowy Rejestrowy pośredni Z przesunięciem stosowy Argument natychmiastowy Op Rozkaz
Procesor ma architekturę rejestrową L/S. Wskaż rozkazy spoza listy tego procesora. bgt Rx, Ry, offset nand Rx, Ry, A add Rx, #1, Rz store Rx, [Rz]
Procesor ma architekturę akumulatorową. Wskaż rozkazy spoza listy tego procesora. bgt Rx, Ry, offset or Rx, Ry, A add Rx load A, [Rz] push Rx sub Rx, #3, A load Rx, [A] Procesor ma architekturę rejestrową
Architektura Systemów Komputerowych. Jednostka ALU Przestrzeń adresowa Tryby adresowania
Architektura Systemów Komputerowych Jednostka ALU Przestrzeń adresowa Tryby adresowania 1 Jednostka arytmetyczno- logiczna ALU ALU ang: Arythmetic Logic Unit Argument A Argument B A B Ci Bit przeniesienia
1. Operacje logiczne A B A OR B
1. Operacje logiczne OR Operacje logiczne są operacjami działającymi na poszczególnych bitach, dzięki czemu można je całkowicie opisać przedstawiając jak oddziałują ze sobą dwa bity. Takie operacje logiczne
Adresowanie. W trybie natychmiastowym pole adresowe zawiera bezpośrednio operand czyli daną dla rozkazu.
W trybie natychmiastowym pole adresowe zawiera bezpośrednio operand czyli daną dla rozkazu. Wada: rozmiar argumentu ograniczony do rozmiaru pola adresowego Adresowanie bezpośrednie jest najbardziej podstawowym
Układ wykonawczy, instrukcje i adresowanie. Dariusz Chaberski
Układ wykonawczy, instrukcje i adresowanie Dariusz Chaberski System mikroprocesorowy mikroprocesor C A D A D pamięć programu C BIOS dekoder adresów A C 1 C 2 C 3 A D pamięć danych C pamięć operacyjna karta
LABORATORIUM PROCESORY SYGNAŁOWE W AUTOMATYCE PRZEMYSŁOWEJ. Zasady arytmetyki stałoprzecinkowej oraz operacji arytmetycznych w formatach Q
LABORAORIUM PROCESORY SYGAŁOWE W AUOMAYCE PRZEMYSŁOWEJ Zasady arytmetyki stałoprzecinkowej oraz operacji arytmetycznych w formatach Q 1. Zasady arytmetyki stałoprzecinkowej. Kody stałopozycyjne mają ustalone
Architektura komputera. Cezary Bolek. Uniwersytet Łódzki. Wydział Zarządzania. Katedra Informatyki. System komputerowy
Wstęp do informatyki Architektura komputera Cezary Bolek cbolek@ki.uni.lodz.pl Uniwersytet Łódzki Wydział Zarządzania Katedra Informatyki System komputerowy systemowa (System Bus) Pamięć operacyjna ROM,
Architektura komputerów
Architektura komputerów Wykład 8 Jan Kazimirski 1 Assembler x86 2 Podstawowe instrukcje x86 Instrukcje transferu danych Arytmetyka binarna i dziesiętna Instrukcje logiczne Instrukcje sterujące wykonaniem
Magistrala systemowa (System Bus)
Cezary Bolek cbolek@ki.uni.lodz.pl Uniwersytet Łódzki Wydział Zarządzania Katedra Informatyki systemowa (System Bus) Pamięć operacyjna ROM, RAM Jednostka centralna Układy we/wy In/Out Wstęp do Informatyki
Programowanie mikrokontrolera 8051
Programowanie mikrokontrolera 8051 Podane poniżej informacje mogą pomóc w nauce programowania mikrokontrolerów z rodziny 8051. Opisane są tu pewne specyficzne cechy tych procesorów a także podane przykłady
Ćwiczenie nr 3. Wyświetlanie i wczytywanie danych
Ćwiczenie nr 3 Wyświetlanie i wczytywanie danych 3.1 Wstęp Współczesne komputery przetwarzają dane zakodowane za pomocą ciągów zerojedynkowych. W szczególności przetwarzane liczby kodowane są w systemie
Organizacja typowego mikroprocesora
Organizacja typowego mikroprocesora 1 Architektura procesora 8086 2 Architektura współczesnego procesora 3 Schemat blokowy procesora AVR Mega o architekturze harwardzkiej Wszystkie mikroprocesory zawierają
Kod znak-moduł. Wartość liczby wynosi. Reprezentacja liczb w kodzie ZM w 8-bitowym formacie:
Wykład 3 3-1 Reprezentacja liczb całkowitych ze znakiem Do przedstawienia liczb całkowitych ze znakiem stosowane są następujące kody: - ZM (znak-moduł) - U1 (uzupełnienie do 1) - U2 (uzupełnienie do 2)
Podstawy techniki cyfrowej Mikroprocesory. Mgr inż. Bogdan Pietrzak ZSR CKP Świdwin
Podstawy techniki cyfrowej Mikroprocesory Mgr inż. Bogdan Pietrzak ZSR CKP Świdwin 1 Mikroprocesor to układ cyfrowy wykonany jako pojedynczy układ scalony o wielkim stopniu integracji zdolny do wykonywania
. III atyka, sem, Inform Symulator puterów Escape rchitektura kom A
Symulator Escape Konfiguracja ogólna Enable MUL and DIV Complete Set of Comp.Oper Sign Extension of B/H/W Memory Oper on B/H/W Program Program Dane Dane Załaduj konfigurację symulatora (File -> OpenFile)
Mikroprocesor Operacje wejścia / wyjścia
Definicja Mikroprocesor Operacje wejścia / wyjścia Opracował: Andrzej Nowak Bibliografia: Urządzenia techniki komputerowej, K. Wojtuszkiewicz Operacjami wejścia/wyjścia nazywamy całokształt działań potrzebnych
Wstęp do informatyki. System komputerowy. Magistrala systemowa. Architektura komputera. Cezary Bolek
Wstęp do informatyki Architektura komputera Cezary Bolek cbolek@ki.uni.lodz.pl Uniwersytet Łódzki Wydział Zarządzania Katedra Informatyki System komputerowy systemowa (System Bus) Pamięć operacyjna ROM,
Lista instrukcji mikroprocesora 8086. Programowanie w assemblerze
Lista instrukcji mikroprocesora 8086 Programowanie w assemblerze Lista instrukcji mikroprocesora 8086 Lista instrukcji mikroprocesora 8086 Lista instrukcji mikroprocesora 8086 Lista instrukcji mikroprocesora
Podstawy Informatyki
Podstawy Informatyki Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 3 Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 3 1 / 42 Reprezentacja liczb całkowitych
Lista instrukcji procesora 8051 część 2 Skoki i wywołania podprogramów, operacje na stosie, operacje bitowe
Lista instrukcji procesora 8051 część 2 Skoki i wywołania podprogramów, operacje na stosie, operacje bitowe Ryszard J. Barczyński, 2009 2013 Politechnika Gdańska, Wydział FTiMS, Katedra Fizyki Ciała Stałego
Mikrooperacje. Mikrooperacje arytmetyczne
Przygotowanie: Przemysław Sołtan e-mail: kerk@moskit.ie.tu.koszalin.pl Mikrooperacje Mikrooperacja to elementarna operacja wykonywana podczas jednego taktu zegara mikroprocesora na informacji przechowywanej
Przykładowe pytania DSP 1
Przykładowe pytania SP Przykładowe pytania Systemy liczbowe. Przedstawić liczby; -, - w kodzie binarnym i hexadecymalnym uzupełnionym do dwóch (liczba 6 bitowa).. odać dwie liczby binarne w kodzie U +..
Lista rozkazów mikrokontrolera 8051 część pierwsza: instrukcje przesyłania danych, arytmetyczne i logiczne
Lista rozkazów mikrokontrolera 8051 część pierwsza: instrukcje przesyłania danych, arytmetyczne i logiczne Ryszard J. Barczyński, 2016 Politechnika Gdańska, Wydział FTiMS, Katedra Fizyki Ciała Stałego
Logiczny model komputera i działanie procesora. Część 1.
Logiczny model komputera i działanie procesora. Część 1. Klasyczny komputer o architekturze podanej przez von Neumana składa się z trzech podstawowych bloków: procesora pamięci operacyjnej urządzeń wejścia/wyjścia.
Podstawy programowania w języku C i C++
Podstawy programowania w języku C i C++ Część czwarta Operatory i wyrażenia Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści wykładu,
SYSTEM MIKROPROCESOROWY
SYSTEM MIKROPROCESOROWY CPU ROM RAM I/O AB DB CB Rys 4.1. System mikroprocesorowy MIKROPROCESOR RDZEŃ MIKROPROCESORA PODSTAWOWE ZESPOŁY FUNKCJONALNE MIKROPROCESORA Mikroprocesor zawiera następujące, podstawowe
Przerwania, polling, timery - wykład 9
SWB - Przerwania, polling, timery - wykład 9 asz 1 Przerwania, polling, timery - wykład 9 Adam Szmigielski aszmigie@pjwstk.edu.pl SWB - Przerwania, polling, timery - wykład 9 asz 2 Metody obsługi zdarzeń
Metody obsługi zdarzeń
SWB - Przerwania, polling, timery - wykład 10 asz 1 Metody obsługi zdarzeń Przerwanie (ang. Interrupt) - zmiana sterowania, niezależnie od aktualnie wykonywanego programu, spowodowana pojawieniem się sygnału
Programowanie Niskopoziomowe
Programowanie Niskopoziomowe Wykład 8: Procedury Dr inż. Marek Mika Państwowa Wyższa Szkoła Zawodowa im. Jana Amosa Komeńskiego W Lesznie Plan Wstęp Linkowanie z bibliotekami zewnętrznymi Operacje na stosie
Architektura systemów komputerowych Laboratorium 13 Symulator SMS32 Operacje na bitach
Marcin Stępniak Architektura systemów komputerowych Laboratorium 13 Symulator SMS32 Operacje na bitach 1. Informacje Matematyk o nazwisku Bool wymyślił gałąź matematyki do przetwarzania wartości prawda
Architektura komputerów. Komputer Procesor Mikroprocesor koncepcja Johna von Neumanna
Architektura komputerów. Literatura: 1. Piotr Metzger, Anatomia PC, wyd. IX, Helion 2004 2. Scott Mueller, Rozbudowa i naprawa PC, wyd. XVIII, Helion 2009 3. Tomasz Kowalski, Urządzenia techniki komputerowej,
Architektura komputera. Dane i rozkazy przechowywane są w tej samej pamięci umożliwiającej zapis i odczyt
Architektura komputera Architektura von Neumanna: Dane i rozkazy przechowywane są w tej samej pamięci umożliwiającej zapis i odczyt Zawartośd tej pamięci jest adresowana przez wskazanie miejsca, bez względu
Kod uzupełnień do dwóch jest najczęściej stosowanym systemem zapisu liczb ujemnych wśród systemów binarnych.
Kod uzupełnień do dwóch jest najczęściej stosowanym systemem zapisu liczb ujemnych wśród systemów binarnych. Jeśli bit znaku przyjmie wartość 0 to liczba jest dodatnia lub posiada wartość 0. Jeśli bit
Programowanie Niskopoziomowe
Programowanie Niskopoziomowe Wykład 10: Arytmetyka całkowitoliczbowa Dr inż. Marek Mika Państwowa Wyższa Szkoła Zawodowa im. Jana Amosa Komeńskiego W Lesznie Plan Wprowadzenie Instrukcje przesunięcia bitowego
Arytmetyka komputera. Na podstawie podręcznika Urządzenia techniki komputerowej Tomasza Marciniuka. Opracował: Kamil Kowalski klasa III TI
Arytmetyka komputera Na podstawie podręcznika Urządzenia techniki komputerowej Tomasza Marciniuka Opracował: Kamil Kowalski klasa III TI Spis treści 1. Jednostki informacyjne 2. Systemy liczbowe 2.1. System
Rozszerzalne kody operacji (przykład)
Tryby adresowania natychmiastowy (ang. immediate) bezpośredni (ang. direct) pośredni (ang. indirect) rejestrowy (ang. register) rejestrowy pośredni (ang. register indirect) z przesunieciem (indeksowanie)
Kod U2 Opracował: Andrzej Nowak
PODSTAWY TEORII UKŁADÓW CYFROWYCH Kod U2 Opracował: Andrzej Nowak Bibliografia: Urządzenia techniki komputerowej, K. Wojtuszkiewicz http://pl.wikipedia.org/ System zapisu liczb ze znakiem opisany w poprzednim
12. Wprowadzenie Sygnały techniki cyfrowej Systemy liczbowe. Matematyka: Elektronika:
PRZYPOMNIJ SOBIE! Matematyka: Dodawanie i odejmowanie "pod kreską". Elektronika: Sygnały cyfrowe. Zasadę pracy tranzystorów bipolarnych i unipolarnych. 12. Wprowadzenie 12.1. Sygnały techniki cyfrowej
ARYTMETYKA BINARNA. Dziesiątkowy system pozycyjny nie jest jedynym sposobem kodowania liczb z jakim mamy na co dzień do czynienia.
ARYTMETYKA BINARNA ROZWINIĘCIE DWÓJKOWE Jednym z najlepiej znanych sposobów kodowania informacji zawartej w liczbach jest kodowanie w dziesiątkowym systemie pozycyjnym, w którym dla przedstawienia liczb
Instrukcja do ćwiczeń nr 4 typy i rodzaje zmiennych w języku C dla AVR, oraz ich deklarowanie, oraz podstawowe operatory
Instrukcja do ćwiczeń nr 4 typy i rodzaje zmiennych w języku C dla AVR, oraz ich deklarowanie, oraz podstawowe operatory Poniżej pozwoliłem sobie za cytować za wikipedią definicję zmiennej w informatyce.
Schemat blokowy procesora rdzeniowego ATmega16. Głównym zadaniem JC jest zapewnienie poprawnego i szybkiego wykonywania programu.
Jednostka centralna procesor (CPU, rdzeń) Schemat blokowy procesora rdzeniowego ATmega16 Głównym zadaniem JC jest zapewnienie poprawnego i szybkiego wykonywania programu. Zadania JC: dostęp do pamięci,
Sprzęt i architektura komputerów
Radosław Maciaszczyk Mirosław Łazoryszczak Sprzęt i architektura komputerów Laboratorium Temat: Mikroprocesory i elementy asemblera Katedra Architektury Komputerów i Telekomunikacji 1. MIKROPROCESORY I
Wstęp do informatyki. Architektura co to jest? Architektura Model komputera. Od układów logicznych do CPU. Automat skończony. Maszyny Turinga (1936)
Wstęp doinformatyki Architektura co to jest? Architektura Model komputera Dr inż Ignacy Pardyka Slajd 1 Slajd 2 Od układów logicznych do CPU Automat skończony Slajd 3 Slajd 4 Ile jest automatów skończonych?
Organizacja pamięci VRAM monitora znakowego. 1. Tryb pracy automatycznej
Struktura stanowiska laboratoryjnego Na rysunku 1.1 pokazano strukturę stanowiska laboratoryjnego Z80 z interfejsem częstościomierza- czasomierz PFL 21/22. Rys.1.1. Struktura stanowiska. Interfejs częstościomierza
Mikrokontroler Motorola M68HC05. Technika mikroprocesorowa dr inż. Wiesław Madej
Mikrokontroler Motorola M68HC0 Technika mikroprocesorowa dr inż. Wiesław Madej Mikrokontroler MC68HC0 jest pełnym systemem komputerowym mieszczącym się w pojedynczym układzie scalonym. W większości zastosowań
Podstawowe operacje arytmetyczne i logiczne dla liczb binarnych
1 Podstawowe operacje arytmetyczne i logiczne dla liczb binarnych 1. Podstawowe operacje logiczne dla cyfr binarnych Jeśli cyfry 0 i 1 potraktujemy tak, jak wartości logiczne fałsz i prawda, to działanie
Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 WYKŁAD 7 WSTĘP DO INFORMATYKI
Dr inż. Grażyna KRUPIŃSKA Grazyna.Krupinska@fis.agh.edu.pl D-10 pokój 227 WYKŁAD 7 WSTĘP DO INFORMATYKI Wyrażenia 2 Wyrażenia w języku C są bardziej elastyczne niż wyrażenia w jakimkolwiek innym języku
Wprowadzenie do informatyki i użytkowania komputerów. Kodowanie informacji System komputerowy
1 Wprowadzenie do informatyki i użytkowania komputerów Kodowanie informacji System komputerowy Kodowanie informacji 2 Co to jest? bit, bajt, kod ASCII. Jak działa system komputerowy? Co to jest? pamięć
MIKROKONTROLERY I MIKROPROCESORY
PLAN... work in progress 1. Mikrokontrolery i mikroprocesory - architektura systemów mikroprocesorów ( 8051, AVR, ARM) - pamięci - rejestry - tryby adresowania - repertuar instrukcji - urządzenia we/wy
Technika Mikroprocesorowa Laboratorium 5 Obsługa klawiatury
Technika Mikroprocesorowa Laboratorium 5 Obsługa klawiatury Cel ćwiczenia: Głównym celem ćwiczenia jest nauczenie się obsługi klawiatury. Klawiatura jest jednym z urządzeń wejściowych i prawie zawsze występuje
Arytmetyka stałopozycyjna
Wprowadzenie do inżynierii przetwarzania informacji. Ćwiczenie 3. Arytmetyka stałopozycyjna Cel dydaktyczny: Nabycie umiejętności wykonywania podstawowych operacji arytmetycznych na liczbach stałopozycyjnych.
Zapis liczb binarnych ze znakiem
Zapis liczb binarnych ze znakiem W tej prezentacji: Zapis Znak-Moduł (ZM) Zapis uzupełnień do 1 (U1) Zapis uzupełnień do 2 (U2) Zapis Znak-Moduł (ZM) Koncepcyjnie zapis znak - moduł (w skrócie ZM - ang.
Sprzęt i architektura komputerów
Radosław Maciaszczyk Mirosław Łazoryszczak Sprzęt i architektura komputerów Laboratorium Temat: Mikroprocesory i elementy asemblera Katedra Architektury Komputerów i Telekomunikacji 1. MIKROPROCESORY I
dr inż. Jarosław Forenc
Informatyka 2 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr III, studia stacjonarne I stopnia Rok akademicki 2010/2011 Wykład nr 7 (24.01.2011) dr inż. Jarosław Forenc Rok akademicki
1. Cel ćwiczenia. 2. Podłączenia urządzeń zewnętrznych w sterowniku VersaMax Micro
1. Cel ćwiczenia Celem ćwiczenia jest zaprojektowanie sterowania układem pozycjonowania z wykorzystaniem sterownika VersaMax Micro oraz silnika krokowego. Do algorytmu pozycjonowania wykorzystać licznik
Zarządzanie pamięcią w systemie operacyjnym
Zarządzanie pamięcią w systemie operacyjnym Cele: przydział zasobów pamięciowych wykonywanym programom, zapewnienie bezpieczeństwa wykonywanych procesów (ochrona pamięci), efektywne wykorzystanie dostępnej
Architektura systemów komputerowych Laboratorium 7 Symulator SMS32 Stos, Tablice, Procedury
Marcin Stępniak Architektura systemów komputerowych Laboratorium 7 Symulator SMS32 Stos, Tablice, Procedury 1. Informacje 1.1. Stos Stos jest strukturą danych, w której dane dokładane są na wierzch stosu
Mikrokontroler ATmega32. Tryby adresowania Rejestry funkcyjne
Mikrokontroler ATmega32 Tryby adresowania Rejestry funkcyjne 1 Rozrónia si dwa główne tryby: adresowanie bezporednie i porednie (jeli jeden z argumentów jest stał, ma miejsce take adresowanie natychmiastowe)
Dla człowieka naturalnym sposobem liczenia jest korzystanie z systemu dziesiętnego, dla komputera natomiast korzystanie z zapisu dwójkowego
Arytmetyka cyfrowa Dla człowieka naturalnym sposobem liczenia jest korzystanie z systemu dziesiętnego, dla komputera natomiast korzystanie z zapisu dwójkowego (binarnego). Zapis binarny - to system liczenia
2. PORTY WEJŚCIA/WYJŚCIA (I/O)
2. PORTY WEJŚCIA/WYJŚCIA (I/O) 2.1 WPROWADZENIE Porty I/O mogą pracować w kilku trybach: - przesyłanie cyfrowych danych wejściowych i wyjściowych a także dla wybrane wyprowadzenia: - generacja przerwania
1 Podstawy c++ w pigułce.
1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,
Adresowanie obiektów. Adresowanie bitów. Adresowanie bajtów i słów. Adresowanie bajtów i słów. Adresowanie timerów i liczników. Adresowanie timerów
Adresowanie obiektów Bit - stan pojedynczego sygnału - wejście lub wyjście dyskretne, bit pamięci Bajt - 8 bitów - wartość od -128 do +127 Słowo - 16 bitów - wartość od -32768 do 32767 -wejście lub wyjście
Mikrokontrolery AVR ATmega
Mikrokontrolery AVR ATmega Literatura: 8-bit Microcontroller AVR with 32KBytes In-System Programmable Flash ATmega32 [www.atmel.com] 8-bit AVR Instruction Set [www.atmel.com] Baranowski Rafał, Mikrokontrolery
PAMIĘCI. Część 1. Przygotował: Ryszard Kijanka
PAMIĘCI Część 1 Przygotował: Ryszard Kijanka WSTĘP Pamięci półprzewodnikowe są jednym z kluczowych elementów systemów cyfrowych. Służą do przechowywania informacji w postaci cyfrowej. Liczba informacji,
1.1. Pozycyjne systemy liczbowe
1.1. Pozycyjne systemy liczbowe Systemami liczenia nazywa się sposób tworzenia liczb ze znaków cyfrowych oraz zbiór reguł umożliwiających wykonywanie operacji arytmetycznych na liczbach. Dla dowolnego
Liczniki, rejestry lab. 08 Mikrokontrolery WSTĘP
Liczniki, rejestry lab. 08 PODSTAWY TECHNIKI CYFROWEJ I MIKROPROCESOROWEJ EIP KATEDRA ENERGOELEKTRONIKI I AUTOMATYKI SYSTEMÓW PRZETWARZANIA ENERGII WWW.KEIASPE.AGH.EDU.PL AKADEMIA GÓRNICZO-HUTNICZA WWW.AGH.EDU.PL
Podstawy techniki mikroprocesorowej. Dr inż. Grzegorz Kosobudzki p.311a A-5. Tel
Podstawy techniki mikroprocesorowej Dr inż. Grzegorz Kosobudzki p.311a A-5. Tel. 071 3203746 grzegorz.kosobudzki@pwr.wroc.pl 2 Terminy zajęć Wykłady: niedziela 7.30 12.00 s.312 Kolokwium przedostatnie
Arytmetyka binarna - wykład 6
SWB - Arytmetyka binarna - wykład 6 asz 1 Arytmetyka binarna - wykład 6 Adam Szmigielski aszmigie@pjwstk.edu.pl SWB - Arytmetyka binarna - wykład 6 asz 2 Naturalny kod binarny (NKB) pozycja 7 6 5 4 3 2
1.2 Schemat blokowy oraz opis sygnałów wejściowych i wyjściowych
Dodatek A Wyświetlacz LCD. Przeznaczenie i ogólna charakterystyka Wyświetlacz ciekłokrystaliczny HY-62F4 zastosowany w ćwiczeniu jest wyświetlaczem matrycowym zawierającym moduł kontrolera i układ wykonawczy
Architektura potokowa RISC
Architektura potokowa RISC Podział zadania na odrębne części i niezależny sprzęt szeregowe Brak nawrotów" podczas pracy potokowe Przetwarzanie szeregowe i potokowe Podział instrukcji na fazy wykonania
SYSTEMY LICZBOWE. Zapis w systemie dziesiętnym
SYSTEMY LICZBOWE 1. Systemy liczbowe Najpopularniejszym systemem liczenia jest system dziesiętny, który doskonale sprawdza się w życiu codziennym. Jednak jego praktyczna realizacja w elektronice cyfrowej
Wstęp do informatyki. Maszyna RAM. Schemat logiczny komputera. Maszyna RAM. RAM: szczegóły. Realizacja algorytmu przez komputer
Realizacja algorytmu przez komputer Wstęp do informatyki Wykład UniwersytetWrocławski 0 Tydzień temu: opis algorytmu w języku zrozumiałym dla człowieka: schemat blokowy, pseudokod. Dziś: schemat logiczny
Operacje wykonywane są na operandach (argumentach operatorów). Przy operacji dodawania: argumentami operatora dodawania + są dwa operandy 2 i 5.
Operatory w Javie W Javie występują następujące typy operatorów: Arytmetyczne. Inkrementacji/Dekrementacji Przypisania. Porównania. Bitowe. Logiczne. Pozostałe. Operacje wykonywane są na operandach (argumentach
szyna danych WR synchr HLDA DBIN zegar STSTB IOW 16 bitowe rej
Intel 8080 / 85 8-bitowy 16-bitowa szyna adresowa 8224 Φ 1 Φ 2 8080 WR synchr HLA STSTB BIN szyna danych 8228 MEMR MEMW IOR zegar STSTB IOW Φ 1,Φ 2 -sygnały zegarowe przesunięte w czasie BIN- ute Bose
LEKCJA TEMAT: Zasada działania komputera.
LEKCJA TEMAT: Zasada działania komputera. 1. Ogólna budowa komputera Rys. Ogólna budowa komputera. 2. Komputer składa się z czterech głównych składników: procesor (jednostka centralna, CPU) steruje działaniem
Operatory AND, OR, NOT, XOR Opracował: Andrzej Nowak Bibliografia:
Operatory logiczne Komputery i ich logika AND - && Podstawy programowania w C++ Operatory AND, OR, NOT, XOR Opracował: Andrzej Nowak Bibliografia: CPA: PROGRAMMING ESSENTIALS IN C++ https://www.netacad.com
ARCHITEKTURA SYSTEMÓW KOMPUTEROWYCH
ARCHITEKTURA SYSTEMÓW KOMPUTEROWYCH reprezentacja danych ASK.RD.01 c Dr inż. Ignacy Pardyka UNIWERSYTET JANA KOCHANOWSKIEGO w Kielcach Rok akad. 2011/2012 c Dr inż. Ignacy Pardyka (Inf.UJK) ASK.RD.01 Rok
Technika Mikroprocesorowa II Wykład 1
Technika Mikroprocesorowa II Wykład Literatura: Mikroprocesor Motorola (Freescale) M68008 Mikroprocesor 68008 jest 8-mio bitowym (zewnętrzna magistrala danych) przedstawicielem mikroprocesorów o architekturze
Architektura systemów komputerowych. Poziom układów logicznych. Układy mnoŝące i dzielące
Architektura systemów komputerowych Poziom układów logicznych. Układy mnoŝące i dzielące Cezary Bolek Katedra Informatyki Plan wykładu Układy mnoŝące liczby całkowite MnoŜenie liczb bez znaku MnoŜarka