główna technologie indeks tematyczny indeks alfabetyczny |
Mikroprocesor posiada niezależne magistrale danych (16 bitów) i adresową (24 bity) co poprzez mniejszą złożoność układu prowadzi do zwiększenia szybkości działania. 24-bitowa szyna adresowa umożliwia bezpośrednie adresowanie 16 MB pamięci.
Rodzina mikroprocesorów 68000 nie ma wyróżnionego wśród rejestrów akumulatora. Funkcje tę może
pełnić dowolny z ośmiu dostępnych 32-bitowych rejestrów danych D0-D7. Dane przechowywane w tych
rejestrach mogą być:
-niezależnymi bitami - 32 bity,
-liczbami BCD (4-bity) - 8 liczb,
-słowami words (16-bitów) - 2 słowa,
-podwójnymi słowami long words (32-bity) - 1 słowo.
Załadowanie danej do rejestru danych o rozmiarze mniejszym od 32 bitów nie powoduje (tak jak w rejestrach adresowych) znakowego rozszerzenia tej danej do 32 bitów. Oznacza to, że górna część rejestru pozostaje niezmieniona.
Rejestry danych nie mogą być wykorzystane do adresowania pamięci. Są one używane jako tymczasowe komórki pamięci, w których przechowywać można dane. Wiele instrukcji wymaga, aby rejestry danych zawierały jeden lub więcej operandów danej instrukcji.
Rejestry A0-A6 to 32-bitowe rejestry adresowe, które można adresować programowo. Rejestr A7 to de facto dwa rejestry 32-bitowe, z których tylko jeden działa w danym momencie. Podczas pracy procesora w trybie użytkownika oznaczenie A7 dotyczy tzw. wskaźnika stosu użytkownika (USP), natomiast podczas pracy procesora w trybie nadzorcy oznaczenie A7 dotyczy tzw. wskaźnika stosu nadzorcy (SSP). Tworzony stos rozciąga się w dół pamięci.
Rejestry adresowe mogą być również używane jako rejestry 16-bitowe. Podczas ładowania do rejestru adresowego 16-bitowego słowa, słowo to zostaje wcześniej znakowo rozszerzone do 32 bitów. Rejestry adresowe nie mogą być używane jako rejestry 8-bitowe.
Rejestry adresowe używane są jako tymczasowe miejsca przechowywania adresów pamięci. Mogą być one wykorzystane w instrukcjach odnoszących się do pamięci, w celu określenia adresu, pod którym znajduje się dana.
Kolejnymi rejestrami są:
- 32-bitowy licznik programu PC (Program Counter). Licznik programu zawsze zawiera adres
następnej do wykonania instrukcji. W chwili wykonywania danej instrukcji zostaje on zwiększony o
taką wartość, żeby wskazywać następną instrukcję, która ma być wykonana.
-16-bitowy rejestr statusowy (rejestr stanu) SR (Status Register) podzielony na dwa bajty :
systemowy i użytkownika. Bajt systemowy (bity od 8 do 15 rejestru statusowego) :
-Bit 15 stanowi sprzętową pomoc dla debugerów. Zwany jest on bitem śledzenia (Trace bit).
Umożliwia on przejmowanie sterowania przez debuger po wykonaniu każdej kolejnej instrukcji
śledzonego programu.
-Bit 13 używany jest do kontrolowania dostępu do określonych instrukcji i do bajtu
systemowego rejestru statusowego. Bit ten jest nazywany bitem nadzorcy (Supervisor bit).
Jeśli bit ten jest ustawiony, dostęp jest dozwolony. Gdy jest on wyzerowany oznacza to, że
procesor pracuje w trybie użytkownika.
-Bity 10 do 8 zwane są maską przerwań. Określają one priorytet obsługiwanego aktualnie
przerwania. Pozostałe bity bajtu systemowego nie są w procesorze 68000 używane.
-Bajt użytkownika (bity od 0 do 7 rejestru statusowego):
Bajt ten zwany jest rejestrem kodów warunków CCR (Condition Codes Register). Bajt
użytkownika zawiera zestaw bitów zwanych kodami warunków, które używane są do
zapisywania informacji dotyczących poprzednio wykonywanych instrukcji. W bajcie
użytkownika zdefiniowane są następujące bity:
Bit 0, bit przeniesienia C (Carry).
Bit 1, bit nadmiaru V (Overflow).
Bit 2, bit zera (Zero).
Bit 3, bit mniejszości od zera (Negative).
Bit 4, bit rozszerzenia X (Extend). Jest on kopią bitu C.
Sygnał |
Opis sygnału |
Nr wyprowadzenia |
A0-A23 | Szyna adresowa, trzystanowa | 29-48,50-52 |
D0-D15 | Szyna danych, dwukierunkowa, trzystanowa | 1-5,54-64 | R/W | Zapis/odczyt (zapis - niski poziom) - wejście | 9 |
AS | Strob adresu (wyjście) | 6 |
UDS, LDS | Stroby danych | 7,8 |
DTACK | Potwierdzenie transmisji danych (wyjście) | 10 |
BR | Żądanie dostępu do magistrali (wejście) | 13 |
BG | Potwierdzenie dostępu do magistrali (wyjście) | 11 |
BGACK | Potwierdzenie dostępu do magistrali (wejście) | 12 |
IPL0-IPL2 | Sterowanie przerwaniami (wejście) | 23-25 |
BERR | Błąd magistrali (wejście) | 22 |
RESET | Zerowanie systemu (wejście) | 18 |
HALT | Zatrzymanie (wejście) | 17 |
E | Akwizycja sygnału zegara (wejście) | 20 |
VMA | Adres ważny (wyjście) | 19 |
VPA | Ważne dane z układu peryferyjnego (wejście) | 21 |
FC0-FC1 | Stany procesora (wyjścia) | 26-28 |
CLK | Zegar systemowy (wejście) | 15 |
Ucc, GND | Zasilanie (wejścia) | 49,16 |
Osługę zdarzeń wyjątkowych inicjują:
Następuje wówczas przełączenie w tryb systemowy i obsługa danego przerwania. Powrót do trybu użytkowego następuje po wystąpieniu rozkazu RET.
O priorytecie danego przerwania sprzętowego decydują sygnały na wejściach IPL0-IPL2.
Istnieje 256 lokacji wektorów przerwań, z których każda zajmuje po 4 bajty. Daje to zatem 1024 bajtów pamięci. Aktualny adres wektora przerwań otrzymuje się dodając do zawartości rejestru bazowego, przesunięcia.
Nr przerwania |
Przesunięcie |
Opis |
0 | 000 | Inicjacja wskaźnika stosu |
1 | 004 | Inicjacja licznika rozkazów |
2 | 008 | Błąd magistrali |
3 | 00C | Błąd adresu |
4 | 010 | Nieprawidłowa instrukcja |
5 | 014 | Dzielenie przez zero |
6 | 018 | Rozkazy CHK lub CHK2 |
7 | 01C | Rozkazy TRAPcc, TRAPV |
8 | 020 | Naruszenie praw dostępu |
9 | 024 | Śledzenie |
10 | 028 | Emulator linii A (1010) |
11 | 02C | Emulator linii F (1111) |
12 | 030 | Zarezerwowane |
13 | 034 | Błąd protokołu koprocesora |
14 | 038 | Błąd formatu | 15 | 03C | Nie zainicjowany wektor przerwań |
16-23 | 040-05C | Zarezerwowane |
24 | 060 | Fałszywe przerwanie |
25 | 064 | Autowektor poziom 1 |
26 | 068 | Autowektor poziom 2 |
27 | 06C | Autowektor poziom 3 |
28 | 070 | Autowektor poziom 4 |
29 | 074 | Autowektor poziom 5 |
30 | 078 | Autowektor poziom 6 |
31 | 07C | Autowektor poziom 7 |
32-47 | 080-0BC | Wektory rozkazów TRAP #0 - TRAP#15 |
48 | 0C0 | Koprocesor, nie żądany skok / ustawienie |
49 | 0C4 | Koprocesor, nie dokładny wynik |
50 | 0C8 | Koprocesor, dzielenie przez zero |
51 | 0CC | Koprocesor , niedomiar |
52 | 0D0 | Koprocesor, błąd argumentu |
53 | 0D4 | Koprocesor, nadmiar |
54 | 0D8 | Koprocesor, sygnalizacja NAN |
55 | 0DC | Zarezerwowane |
56 | 0E0 | Błąd konfiguracji MMU (układu zarządzenia pamięcią) |
57-63 | 0E4-0FC | Zarezerwowane |
64-255 | 100-3FC | Definiowane przez użytkownika |
Procesor posiada 56 rozkazów o kodach 16-bitowych:
[rodzaj operacji] [adres źródłowy], [adres docelowy]
Instrukcje przesyłania danych przenoszą dane z jednego miejsca systemu 68000 do drugiego. Przesłaniu podlegają dane o rozmiarze jednego, dwóch lub czterech bajtów pomiędzy rejestrami, rejestrem i pamięcią oraz pomiędzy dwoma lokacjami pamięci. Do tej klasy należą instrukcje:
Instrukcje arytmetyki całkowitoliczbowej przeprowadzają podstawowe operacje w kodzie uzupełnienia do dwóch na danych binarnych. Należą do nich:
Instrukcje logiczne. Grupa instrukcji logicznych obejmuje instrukcje wykonujące operacje w arytmetyce Boole'a na danych binarnych. Do grupy tej należą:
Instrukcje przesunięć i obrotów obejmują przesunięcia i obroty arytmetyczne oraz logiczne:
Instrukcje manipulacji bitami operują na pojedynczym bicie określonego bajtu. Należą do nich:
Instrukcje BCD operują na liczbach zapisanych w kodzie BCD. Mikroprocesor 68000 używa tylko trzech tego typu instrukcji:
Instrukcje sterowania programem modyfikują sposób realizacji programu, zmieniając kolejność wykonania poszczególnych segmentów programu. Grupa ta zawiera instrukcje:
Instrukcje kontroli systemu oddziałują na hardware systemu 68000. Są to instrukcje uprzywilejowane, co oznacza, że mogą być wykonane jedynie w trybie nadzorcy. Do grupy tej należą:
Dane zapisane w postaci binarnej mogą mieć rozmiar 8, 16 lub 32 bitów. Tego typu dane nazywa się odpowiednio bajtami, słowami i długimi słowami. Większość instrukcji, które wykonują operacje na liczbach binarnych przyjmuje każdy z powyższych trzech rozmiarów danych. Na przykład instrukcja MOVE, przesyłająca daną binarną z jednego miejsca do drugiego, posiada trzy formy:
Zapis słowa lub długiego słowa w pamięci zorganizowany jest w ten sposób, że bajty danego słowa lub długiego słowa zapisywane są w kolejności malejącej. Najbardziej znaczący bajt słowa lub długiego słowa znajduje się pod najniższym adresem. Należy zwrócić na to uwagę, ponieważ wiele komputerów nie zapisuje wielobajtowych liczb binarnych w ten sam sposób. W szczególności 8080, Z80, 6502 i rodzina mikroprocesorów 8088/86 zapisuje słowa i długie słowa w zgoła odwrotnej kolejności, tzn. w ten sposób, że najmłodszy bajt zapisywany jest pod najniższym adresem.
Mikroprocesor MC68000 dysponuje 8 trybami adresowania, zaś w obrębie niektórych z nich istnieją podtryby co prowadzi w konsekwencji do ogólnej liczby 14 trybów.
Lp. | Nazwa trybu | Działanie | Przykład |
1 | Adresowania bezpośredniego rejestru danych | D0 := D1 | MOVE D1, D0 |
2 | Adresowania bezpośredniego rejestru adresowego | D0 := A1 | MOVE A1, D0 |
3 | Adresowania pośredniego rejestrem adresowym | D0 := (A1) | MOVE (A1), D0 |
4 | Adresowania pośredniego rejestrem adresowym z postinkrementacją | D0 := (A1) | A1:= A1 + N; N=1,2,4 MOVE (A1)+, D0 |
5 | Adresowania pośredniego rejestrem adresowym z predekrementacją | A1:= A1 - N; N=1,2,4 | D0 := (A1) MOVE -(A1), D0 |
6 | Adresowania pośredniego rejestrem adresowym z przesunięciem | D0 := (A1+4) | MOVE 4(A1), D0 |
7 | Adresowania pośredniego licznikiem programu z przesunieciem | D0 := (PC+4) | MOVE 4(PC), D0 |
8 | Adresowania pośredniego rejestrem adresowym z indeksem | D0 := (A1+4) + (D1) | MOVE 4(A1,D1.L), D0 |
9 | Adresowania pośredniego licznikiem programu z indeksem | D0 := (PC+4) + (D1) | MOVE 4(PC,D1.L), D0 |
10 | Adresowanie absolutne krótkie | D0 := ($1000) - 16 bitów | MOVE $1000, D0 |
11 | Adresowania absolutnego długiego | D0 := ($10000) - 32 bity | MOVE $10000, D0 |
12 | Adresowanie natychmiastowe (proste) krótkie | D0 := $10002000, D0 | MOVE #$10002000, D0 |
13 | Adresowanie natychmiastowe (proste) długie | D0 := $10002000, D0 | MOVE #$10002000, D0 |
14 | Adresowanie implikowane (niejawne) | D0 := SR, USP, SSP, PC |
Wykonali: Dariusz Rozwadowski i Marcin Bielewicz