56
4. Program ćwiczeń
4.1.2. Przykład 2
Podać sekwencję sygnałów mikrosterujących realizujących następujący przesył: 0 - (( 3 )).
Tym razem do komórki pamięci o adresie zapisanym w trzeciej komórce należy wpisać zero. Zakładamy przy tym. że aktualna zawartość rejestrów Ak i A jest dowolna. Pierwszym problemem, jaki należy rozwiązać, będzie zatem uzyskanie wartości 0 i 3 w odpowiednich rejestrach. Zauważmy, że jedną z metod uzyskania zera jest odjęcie od siebie zawartości akumulatora. Następnie możemy przesłać tak uzyskane zero do rejestru L, gdzie za pomocą sygnału U można uzyskać potrzebną liczbę 3. Po przesłaniu zawartości rejestru L do rejestru adresowego A możliwy jest już odczyt zawartości komórki pamięci o adresie 3. W wyniku tego odczytu dysponujemy adresem komórki pamięci, którą należy wyzerować. Wystarczy teraz ten adres przesłać do rejestru A oraz zawartość akumulatora (czyli liczbę 0) do rejestru buforowego S i uaktywnić sygnał pisz. Odpowiednia lista przesyłów międzyrejcstrowych została przedstawiona poniżej.
< t 1 'm < |
wyak, weja, ode, weak |
; wyzerowanie Ak |
(Ak) - I |
wyak, wri | |
(Ad) -* L |
wyad, we! |
wyzerowanie L |
(L) + 1 L |
ii | |
(L) + 1 - L |
ił | |
(L) + 1 -+ L |
H |
L = 3 |
(L) -* A |
wyl, wea |
A = 3 |
«A)) -* 1 |
czyt, wys, wei | |
(Ad) - A |
wyad. wea |
<*> |
(Ak) -* S |
wyak, wes |
5 * 0 (*) |
(S) - (A) |
pisz | |
Poszczególne linie |
w liście przesyłów odpowiadają w zasadzie k |
dwa przesyły, które mogą tu odbyć się równolegle, to przesłanie adresu komórki do rejestru A i przesłanie zera z akumulatora do rejestru S. Przesyty te zostały wyróżnione przez dodanie symbolu (*) na końcu odpowiednich linii. Na wykonanie całej operacji potrzeba zatem 10 taktów zegarowych.
Ćwiczenie obejmuje zapoznanie się z obsługą i działaniem programowego symulatora maszyny W oraz zaprojektowanie kilku prostych rozkazów dla tej maszyny.
4.2. Maszyna W - symulator Projektowanie rozkazów
57
4.2.1. Przykład - odejmowanie z adresacją pośredni#
Zaprojektować rozkaz o nazwie symbolicznej ODP i działaniu opisanym przez poniższy przesył:
(Ak) - (((Ad)» - Ak,
podać opis tego rozkazu w postaci akceptowanej przez program SYMULATR.
Zadaniem projektowanego rozkazu jest odjecie od akumulatora zawartości komórki pamięci, wskazywanej przez komórkę, której adres znajduje się w części adresowej rozkazu. Zadanie to można wykonać za pomocą następujących przesyłów międzyrejestrowych:
((A)) - S |
czyt |
odczyt rozJcazu |
(S)-I |
wys, węi |
i jego dekodowanie |
(L) + 1 - L |
>1 |
L wskazMje następny rozjusz |
(Ad) - A |
wyad, wea |
adres adresu w rejestrze A |
((A)) - S |
czyt |
i następnie odczyt |
(S)-I |
wys, wei |
oraz przesłanie poprzez rej. I |
(Ad) -* A |
wyad, wea |
do rejestru A |
«A))-S |
czyt |
odczyt odjemnika |
(Ak) - (S) -> Ak |
wys, weja, ode, weak |
obliczenie róinicy |
(L)-A |
wyl, wea |
przygotowanie następnego rozkazu |
Projektowany rozkaz będzie się składał |
z pięciu taktów. W trakcie pierwsza |
nastąpi odczyt rozkazu, jego dekodowanie oraz inkrementacja licznika L, w następnym przesłanie adresu komórki pamięci, w której znajduje się adres odjemnika do rejestru A, po to by w trzecim takcie odczytać ten adres i przesłać go do rejesmi I. W takcie czwartym adres odjemnika zostanie przesłany do rejestru adresowego A. Wreszcie w ostatnim takcie nastąpi odczyt odjemnika, obliczenie różnicy i przesłanie adresu kolejnego rozkazu do rejestru A. Po dokonaniu analizy działania rozkazu możemy teraz podać jego opis w postaci pliku opisu rozkazu ( RTX):
{ Tekst pliku ODP.RTX z opisem rozkazu odejmowania z adresacją pośrednią dla maszyny W } Rozkaz
Typ = W Kod = 001 Mne = ODP
Opis ~ '(Ak) • («Ad)» -* Ak-Akcja
czyt wys wei il; wyad wea; czyt wys wei; wyad wea;
czyt wys weja ode weak; wyl wea;
Koniec