474


3. Przykład prostej listy rozkazów.

Typowy zbiór rozkazów prostego procesora składa się z 4 grup rozkazów:

1. rozkazów arytmetyczno-logicznych;

2. rozkazów przesłań (pomiędzy procesorem i pamięcią lub procesorem i urządzeniami

zewnętrznymi);

3. rozkazów sterujących wykonywaniem programu;

4. rozkazów sterujących pracą procesora.

1. Rozkazy arytmetyczno-logiczne - służą do przetwarzania informacji, czyli w wyniku ich wykonania jest ona zmieniana

Rozkazy arytmetyczne:

 ADD - addition - dodawanie;

 SUB - subtraction - odejmowanie;

 MUL - multiplication - mnożenie;

 DIV - division - dzielenie;

 ABS - absolute - wartość bezwzględna liczby;

 NEG - negate - zmiana znaku liczby;

 INC - increment - zwiększenie wartości o jeden;

 DEC - decrement - zmniejszenie wartości o jeden.

Pierwsze cztery rozkazy tej grupy są dwuargumentowe, pozostałe cztery są jednoargumentowe. Argumentami takich rozkazów mogą być liczby stałopozycyjne i zmiennopozycyjne.

Rozkazy operacji logicznych:

 AND - conjuction - iloczyn;

 OR - disjunction - suma;

 EXOR- exclusive-OR - suma mod 2;

 NOT - complement - negacja.

Pierwsze trzy rozkazy są dwuargumentowe i ostatni rozkaz jest jednoargumentowy.

Rozkazy przesuwania:

 SHL - shift left - przesuwanie zawartości rejestru w lewo (na najmniej znaczącą pozycję

wpisywane jest 0, a na najbardziej znaczącą pozycję jest zapisywany znacznik

przeniesienia).

 SHR - shift right - przesuwanie zawartości rejestru w prawo (na najbardziej znaczącą

pozycję wpisywane jest 0, a na najmniej znaczącą pozycję jest zapisywany znacznik

przeniesienia).

 SAL - shift arithmetic left - przesuwanie arytmetyczne w lewo (jak SHL), czyli mnożenie

przez 2 z zachowaniem bitu znaku.

 SAR - shift arithmetic right - przesuwanie arytmetyczne w prawo, czyli dzielenie przez 2

(najbardziej znaczący bit jest pozostawiany a najmniej znaczący jest zapisywany na pozycję

znacznika przeniesienia).

 ROL - rotate left - przesuwanie cykliczne w lewo (najbardziej znaczący bit jest zapisywany

na najmniej znaczącą pozycję oraz na pozycję znacznika przeniesienia).

 ROR - rotate right - przesuwanie cykliczne w prawo (najmniej znaczący bit jest zapisywany

na najbardziej znaczącą pozycję i na pozycję znacznika przeniesienia).

 RCL - rotate left with extend - przesuwanie cykliczne w lewo rejestru wydłużonego o znacznik przeniesienia.

 RCR - rotate right with extend - przesuwanie cykliczne w prawo rejestru wydłużonego o znacznik przeniesienia.

Wszystkie podane operacje są jednoargumentowe. Rozkazy przesunięć mogą dotyczyć zarówno zawartości rejestrów jak i zawartości komórki pamięci.

W niektórych komputerach można spotkać różne modyfikacje tych rozkazów, jak np. przesuwanie na dwóch połączonych rejestrach lub przesuwanie dwuargumentowe, gdzie drugi argument określa liczbę pozycji, o jaką ma być przesunięta zawartość danego rejestru.

2. Rozkazy przesłań - są najczęściej wykonywanymi rozkazami. Nie zmieniają one wartości informacji, natomiast przenoszą ją z miejsca na miejsce. Jeśli chcemy wykonać jakąś operację, musimy zwykle pobrać jej argumenty, a po jej wykonaniu zapisać wynik.

 MOV - move - przesłanie słowa pomiędzy rejestrami procesora.

 STR - store - przesłanie słowa ze wskazanego w rozkazie rejestru procesora do komórki

pamięci.

 LD - load - przesłanie słowa z pamięci do wskazanego rejestru procesora.

 XCH - exchange - wymiana zawartości rejestrów.

 IN - input- odczyt słowa z urządzenia wejściowego.

 OUT - output - przesłanie zawartości wskazanego rejestru procesora do urządzenia

wyjściowego.

 CLR - clear - zerowanie rejestru.

 SET - set - zapisanie do rejestru jedynek.

 PUSH - push - zapisanie zawartości rejestru na stos

 POP - pop - odczyt słowa z wierzchołka stosu i przesłanie go do rejestru.

Pierwsze sześć rozkazów to rozkazy jednoargumentowe. Pozostałe cztery rozkazy są rozkazami bezargumentowymi.

3. Rozkazy sterujące pracą programu pozwalają zmieniać kolejność wykonywania instrukcji programu.

 JMP - jump - skok bezwarunkowy do miejsca w pamięci wyspecyfikowanego w rozkazie.

 J c - jump conditional - skok warunkowy, gdzie c określa jaki warunek musi być spełniony,

aby rozkaz wykonać.

 CALL - call to subroutine - wywołanie podprogramu polegające na tym, że wykonywany

jest skok wraz z zapamiętaniem na stosie zawartości licznika rozkazów (ostatni adres).

 C c - call conditional - warunkowe wywołanie podprogramu.

 RET - return - skok powrotny z podprogramu polegający na przesłaniu ze stosu

zapamiętanej wcześniej zawartości licznika rozkazów.

 SKIP - skip - przeskok przez jeden rozkaz.

Rozkazy warunkowe są wykorzystywane do realizacji rozgałęzień w programach. Jeśli warunek nie jest spełniony, to rozkaz nie jest wykonywany, a wykonywany jest rozkaz następny, tj. znajdujący się w programie po rozkazie warunkowym. Rozkazy skoków i wywołań zawierają adres skoku, tj. adres komórki pamięci, w której znajduje się rozkaz wykonywany bezpośrednio po wykonaniu rozkazu skoku.

4. Rozkazy sterujące pracą procesora

 HALT - stop - zatrzymanie wykonywania programu.

 NOP - no operation - rozkaz pusty.

Rozkaz HALT zatrzymuje pracę procesora, aż do momentu ponownego uruchomienia programu przez zdarzenie zewnętrzne (ponowną inicjalizację procesora, czyli po pojawieniu się sygnału RESET lub po zgłoszeniu przerwania, tj. pojawieniu się sygnału HIT), a rozkaz NOP jest rozkazem pustym - „nic nie rób”.

Przykład poszczególnych etapów przetwarzania następującego rozkazu:

add ax, [bx] ;

(dodaj zawartość rejestru AX do zawartości komórki, której adres znajdziesz w BX, wynik prześlij do AX.)



Wyszukiwarka

Podobne podstrony:
474
474 477 id 39033 Nieznany
474
474
474
20030902212449id$474 Nieznany
474
474
474 ac
474 a
474
474
474
474
474
474
474 The Bangles Eternal flame
kom 474 08

więcej podobnych podstron