Przykładem rejestrów roboczych są rejestry B,C,D,E,H,L, sa widoczne w asemblerze
Cykl rozkazowy
Realizując program, system mikroprocesorowy wykonuje pewne powtarzające
się czynności, polegające na cyklicznym pobieraniu kodów rozkazów z pamięci i wczytywaniu
ich do układu sterowania mikroprocesora, a następnie realizacji rozkazu,
którego kod został pobrany. W cyklu możemy wyróżnić dwa etapy zwane fazą pobrania
(ang. fetch) i fazą wykonania (ang. execution).
Faza pobrania polega na pobraniu kodu rozkazu z komórki pamięci o a d r e s ie
przechowywanym w liczniku rozkazów, a następnie na umieszczeniu tego k o d a
w rejestrze rozkazów IR znajdującym się w układzie sterowania mikroprocesora. K od i
rozkazu przesyłany jest do mikroprocesora magistralą danych. Następnie z a w a r t o ś ć
licznika rozkazów jest modyfikowana tak, aby wskazywał on na kolejny kod ro z k a z u
przeznaczony do pobrania. Po zakończeniu fazy pobrania następuje faza w y k o n a n ia ,
Polega na zdekodowaniu kodu rozkazu znajdującego się w rejestrze IR, czyli s tw ie rdzeniu,
jaki to rozkaz. Po zdekodowaniu kodu rozkazu układ sterowania w y tw a r z a i
wewnętrzne i/lub zewnętrzne sygnały sterujące realizujące dany rozkaz (patrz sc h e m a t j
blokowy mikroprocesora i systemu mikroprocesorowego).
faza pobrania
1. adresowanie podanie zawartości licznika rozkazów na magistrale adresowa AB(PC)
2. wczytanmie zawartości zaadresowanej komorki pamieci do rejestru rozkazów mikroprocesora IR M(PC)
3. zwiekszenie zawartości licznika rozkazów (PC)(PC)+1
faza wykonawcza
4.zdekodowanie kodu rozkazu i wytworzenie sygnałów sterujących realizujących dany rozkaz
W celu przyspieszenia pracy systemu stosuje się
modyfikację tego cyklu zwaną prefetchingiem, czyli wstępnym pobieraniem instrukcji.
Polega na równoległym wykonywaniu fazy pobrania następnego rozkazu, jeszcze
w t r a k c i e realizacji fazy wykonania rozkazu poprzedniego.
Rozkazem (instrukcją maszynową) nazywamy najprostszą operację, której w y k o n a -
nia programista może zażądać od procesora.
Format rozkazu i tryby adresowania
Rozkazy, jak każdy inny rodzaj informacji w systemie mikroprocesorowym, są
przechowywane w postaci kodów binarnych. Kod rozkazu musi zawierać informacje
niezbędne do jego poprawnej realizacji. Informacje te muszą być rozmieszczone
w rozkazie w określony sposób.
Listą rozkazów nazywamy zestaw wszystkich instrukcji maszynowych (rozkazów),
jakie potrafi wykonać dany procesor.
Rozkazy tworzące listę rozkazów możemy podzielić na kilka podstawowych
Rozróżniamy:
1 . rozkazy przesłań,
2. rozkazy arytmetyczne i logiczne,
3. rozkazy sterujące (skoki, wywołania podprogramów, pętle itp.),
4. inne (np. sterowanie pracą koprocesora, rozkazy testujące, operacje w trybie
' chronionym).
Rozkazy przesłań:
a)ogólnego przeznaczenia (w tym rozkazy przesłania z rejestru do pamieci, z pamieci do rejestru, miedzyrejestrowych, natychmiastowego ładowania do rejestru i dopamieci pamieci)
b)przesłań warunkowych
c) operacji na stosie
d)rozkazy konwersji danych
rozkazy arytmetyczno-logiczne
(rozkaz dodawaniai odejmowania, porównan i negocjacji, mnożenia, dzielenia,arytmetyki dziesiętnej)
rozkazy wejścia i wyjscia
nor AL., `a'
nor DX, 0378h (numer portu)
out DX,AL (wydrukuj literke a)
Przykładowe rozkazy
mov[EBX], DX przesłanie zawartości rejestru DX do kom pamieci rejestrowanej rejestrem EBX
movDX,[EBX] przesuniecie EBX do rejestru DX
push AX przesłanie zawartości rejestru AX na stos
popEBX pobranie ze stosu i załadowanie do rejestru EBX
Kod rozkazu:
1. musi zawierać określenie rodzaju wykonywanej operacji, czyli tak z w a n y k o d I
operacji. Kod operacji musi być określony w początkowej częs'ci ( p i e r w s z y m I
bajcie lub bajtach) kodu rozkazu w celu określenia, w jaki sposób ma p r z e b i e g a l i I
dalsza realizacja rozkazu przez mikroprocesor;
2. może zawierać operandy i/lub adresy operandów wykonywanych operacji (dotyczy
to także adresów wyników). Oczywiście w przypadku rozkazów wymagają- |
cych argumentów informacja ta musi być zawarta w rozkazie.
Z punktem 2 określającym zawartość kodu rozkazu związana jest kolejna d e f i n i c j a
Trybem adresowania nazywamy sposób określenia miejsca przechowywania a r -
gumentów rozkazu.
Argumenty rozkazu (może to dotyczyć zarówno danych, j a k
i w pewnych przypadkach wyników) m o g ą być przechowywane w rejestrach, w p a m i ę -
ci lub w kodzie rozkazu. Poniżej podajemy definicje oraz interpretację podstawowych
trybów adresowania.
Adresowanie NATYCHMIASTOWE
Przy adresowaniu natychmiastowym argument rozkazu zawarty jest w k o d z i e
rozkazu.
Adresowanie BEZPOSREDNIE
kod rozkazu zawiera adres komórki pamięci,
w której przechowywany jest rozkaz.
Konsekwencją takiego określenia adresowania bezpośredniego jest to, że jeśli
używamy tego adresowania, w momencie pisania programu musimy znać (lub inaczej
- zarezerwować) adres przechowywania argumentu.
Adresowanie REJESTROWE
w kodzie rozkazu określony jest rejestr, w którym
przechowywany jest argument.
Zaletami użycia tego trybu adresowania są krótkie kody rozkazów oraz szybkie
ich wykonywanie.
Adresowanie POŚREDNIE
Adresowanie pośrednie, zwane też adresowaniem rejestrowym p o ś r e d n i m ,
umożliwia modyfikację położenia argumentu w pamięci w trakcie wykonywania p ro -
gramu. Inaczej mówiąc, adres przechowywania tego argumentu może zostać wyliczony
przez program, co jest bardzo użyteczną własnością. Ponadto kody takich rozkazów są
krótkie.
W trybie adresowania pośredniego kod rozkazu zawiera określenie rejestru bądź
rejestrów, w których znajduje się adres komórki pamięci zawierającej argument.
Adresowanie INDEKSOWE Z PRZEMIESZCZENIEM
W procesorach rodziny Intel 80x86 istnieje 12 trybów adresowania. Część z n i c h
jest kombinacją dwóch lub trzech trybów podstawowych.
W trybie adresowania indeksowego z przemieszczeniem adres argumentu przechowywanego
w pamięci obliczany jest jako suma zawartości rejestru określonego
w kodzie rozkazu i wartości umieszczonej w kodzie rozkazu, zwanej przemieszczeniem.
Przykładowe rozkazy
1. MOV
Instrukcja MOV przesyła dane pomiędzy dwoma miejscami. Obydwa argumenty
muszą być tego samego rozmiaru.
Składnia:
MOV mem, accum (prześlij zawartość akumulatora do komórki o podanym adresie)
Format:
1010011W address Iow address high
gdzie: address Iow, address high - przemieszczenie względem początku segmentu
w = 1 - operacja na słowach
w = 0 - operacja na bajtach
Ustawiane flagi: żadne flagi nie są ustawiane.
Czas wykonania: 1 cykl.
128 Urządzenia techniki komputerowej. Część 1
2. ADC
Instrukcja ADC sumuje dwie liczby umieszczone we wskazanych miejscach oraz i
bit CF (przeniesienia). Należy do grupy instrukcji arytmetycznych.
Przykład: ADC ax, bx - do liczby umieszczonej w ax dodaj liczbę umieszczoną
w bx oraz bit CF. Wynik umieść w ax. Symbolicznie zapisujemy to następująco:
Ustawiane Hagi: OF, SF, ZF, CF, AF, PF.
3. LOOP etykieta
Dekrementacja rejestru CX, a następnie, jeżeli CX * 0, wykonanie skoku do instrukcji
umieszczonej pod adresem o nazwie symbolicznej etykieta. Jest to równoznaczne
z n-krotnym wykonaniem pętli obejmującej instrukcje od instrukcji
bezpośrednio po nazwie etykieta do instrukcji loop. Liczba obiegów pętli n musi
przed rozpoczęciem realizacji pętli zostać załadowana do rejestru CX.
Symbolicznie możemy to zapisać:
a) CX CX-1
b) Jeżeli CX 0 to IP etykieta
Ustawiane flagi: żadne flagi nie są ustawiane.
NIE WIEM CZY TO BĘDZIECIE DRUKOWAC CHYBA TEGO NEI BĘDZIE WYMAGAŁ PODAŁ NAM TYLKO TRZY ROZKAZY MOV PUSH I POP ALE JAK CHCECIE
Magistrale i sygnały sterujące mikroprocesora
Mikroprocesor komunikuje się z pozostałymi elementami systemu za pomocą
magistral. Są to: magistrala danych, magistrala adresowa i magistrala sterująca. SZEROKOŚĆ (czyli liczba linii) dwóch pierwszych ma istotny wpływ na pewne cechy użytkowe systemu. Szerokość magistrali danych jest zwykle dostosowana do długości operandów dla jednostki arytmetyczno-
logicznej, choć zdarzają się odstępstwa od tej reguły. Zwiększenie szerokości
magistrali danych oznacza więc wzrost mocy obliczeniowej z powodu operowania na
dłuższych argumentach i możliwości szybkiego przesyłania większych ilości informacji.
SZEROKOSCMAGISTRALI adresowej wpływa z kolei na liczbę komórek pamięci, które
potrafi bezpośrednio zaadresować mikroprocesor Jednym z zadań mikroprocesora w systemie mikroprocesorowym jest sterowanie i koordynacja pracy pozostałych elementów systemu, takich jak pamięć czy układy
wejścia/wyjścia. W tym celu mikroprocesor zawiera specjalną magistralę zwaną
sterującą. MAGISTRALA STERUJACA to zestaw sygnałów zarówno
wchodzących, jak i wychodzących z procesora. Pierwsze z nich informują procesor
o określonych stanach współpracujących z nim układów, natomiast drugie sterują
pracą tych układów, czyli powodują wykonanie określonej operacji.
Zadania poszczególnych sygnałów są następujące:
RBSET - restart mikroprocesora (wpis do rejestrów procesora wartości początkowych
i rozpoczęcie nowego cyklu rozkazowego).
CLK - (clock) przebieg taktujący (zegar) pracę procesora.
RDY# - (ready) sygnał gotowości układów współpracujących z procesorem (zwykle
pamięci). # oznacza, że sygnałem aktywnym (gotowości) jest 0 (poziom
niski).
M/IO# - (memory/input/output) sygnał oznaczający operację dotyczącą pamięci
(1) lub układów wejścia/wyjścia (0).
D/C# - (data/code) sygnał oznaczający obecność na magistrali danych danej (1)
lub kodu rozkazu (0).
W/R# - (write/read) sygnał oznaczający operację zapisu (1) lub odczytu (0).
HOLD - sygnał żądania przejścia procesora w stan zawieszenia (czyli przełączenia
wejść i wyjść magistral w stan wysokiej impedancji).
HLDA - (hołd acknowledge) sygnał potwierdzenia przejścia procesora w stan zawieszenia.
1NTR - (interrupt request) sygnał żądania (zgłoszenia) przerwania maskowanego.
NMI - (non-maskable interrupt) sygnał zgłoszenia przerwania niemaskowalnego.