WOJSKOWA AKADEMIA TECHNICZNA
LABOLATORIUM BUDOWY KOMPUTERÓW
SPRAWOZDANIE
Z ĆWICZENIA LABORATORYJNEGO
NR 3 wersja 2
Prowadzący mgr inż. Artur Miktus
Temat ćwiczenia: Mikroprogram pobrania rozkazu. Pobieranie rozkazów w formacie zwykłym dla adresowania pośredniego.
Grupa: I2Y3S1
Wykonała: Ilona Paziewska
Data wykonania ćwiczenia: 27.11.2012r
Celem ćwiczenia było: badanie organizacji i działania komputera LabSag przy pobieraniu rozkazów w formacie zwykłym dla adresowania pośredniego. Podczas wykonywania symulacji pracy procesora na komputerze laboratoryjnym wykonano cztery pobrania rozkazów.
1. Pamięć operacyjna
WARTOŚCI PAMIĘCI OPERACYJNEJ DLA DRUGIEJ WERSJI TRZECIEGO ZADANIA OKREŚLONE DLA STUDENTA O NUMERZE 6
Stan początkowy rejestrów
A 106
LR 126
RI 20
Stan pamięci operacyjnej
W komórkach 0-4, 16, 26, 131 i 255 pamięci operacyjnej znajdują się dane o odpowiednich wartościach dziesiętnych. Natomiast w komórkach 126-130 znajdują się rozkazy w formacie zwykłym.
Adres |
Zawartość(bin) |
Hex |
Wartość |
0 |
0000000011011100b |
00DCh |
220 |
1 |
0000000011101100b |
00ECh |
236 |
2 |
0000000011110110b |
00F6h |
246 |
3 |
0000000000000010b |
0002h |
2 |
4 |
0000000000000001b |
0001h |
1 |
16 |
0000000000000100b |
0004h |
4 |
26 |
0000000000000011b |
0003h |
3 |
131 |
1011110011011010b |
BCDAh |
-17190 |
255 |
0000000001100110b |
0066h |
102 |
Tabela 1. Zestawienie wartości poszczególnych komórek Pamięci Operacyjnej.
Adres |
Zawartość(bin) |
hex |
OP |
X |
S |
I |
DA |
126 |
0001001000000010b |
1202h |
2 |
0 |
1 |
0 |
2 |
127 |
1000110100000110b |
8D06h |
17 |
1 |
0 |
1 |
16 |
128 |
0101101100000000b |
5B00h |
11 |
0 |
1 |
1 |
0 |
129 |
0000111100000110b |
0F06h |
1 |
1 |
1 |
1 |
6 |
130 |
0110001011001110b |
62CEh |
12 |
0 |
1 |
0 |
206 |
Tabela 2. Zestawienie wartości danych rozkazów zwykłych komórek Pamięci Operacyjnej.
Nr komórki |
Operacja |
Kod operacji |
Tryb adresowania |
Rezultat wykonania rozkazu |
126 |
SUS |
2 |
Względne |
Wynik działania różnicy zawartości akumulatora i zawartość komórki pamięci operacyjnej o adresie określonym w rejestrze adresu efektywnego. Wynik umieszczony w akumulatorze. |
127 |
BAQ |
17 |
Modyfikacja |
Operacja skoku, jeśli jest nadmiar zawartości akumulatora. Przekazania sterowania do licznika rozkazów o adresie zawartym w rejestrze adresu efektywnego. |
128 |
TXA |
11 |
Względne |
Prześlij zawartość rejestru indeksowego do akumulatora. |
129 |
ADS |
1 |
Niedozwolone |
Wynik działania sumy zawartości akumulatora i zawartość komórki pamięci operacyjnej o adresie określonym w rejestrze adresu efektywnego. Wynik umieszczony w akumulatorze. |
130 |
TMQ |
12 |
Względne |
Prześlij zawartość mnożnika do rejestru akumulatora. |
Tabela 3. Zestawienie rozkazów w formacie zwykłym z określonym trybem ich adresowania i określeniem rezultatu wykonania rozkazu.
Objaśnienia:
OP - kod operacji
X - wskaźnik adresowania indeksowego
S - wskaźnik adresacji względnej
I - wskaźnik adresacji pośredniej
DA - 8-bitowe pole adresu bezpośredniego
Niewyszczególnione przeze mnie komórki PAO są wyzerowane.
Rozkaz pierwszy (Adres 126):
Nazwa mnemoniczna: SUS
Pełna nazwa: Odejmowanie
Tryb adresowania: Adresowanie względne RAE=LR+DA
Spodziewany rezultat: A-PAO[RAE] → A
Rozkaz drugi (Adres 127):
Nazwa mnemoniczna: BAQ
Pełna nazwa: Skocz, jeśli nadmiar A
Tryb adresowania: Modyfikacja RAE=PAO[LR+RI]8-15] Spodziewany rezultat: jeśli OFF=1; RAE→LR
Rozkaz trzeci (Adres 128):
Nazwa mnemoniczna: TXA Pełna nazwa: Prześlij RI do A
Tryb adresowania: Adresowanie względne RAE=PAO[LR+DA]8-15 Spodziewany rezultat: jeśli RI→A
Rozkaz czwarty (Adres 129):
Nazwa mnemoniczna: ADS
Pełna nazwa: Dodawanie
Tryb adresowania: niedozwolone RAE=PAO[0]
Spodziewany rezultat: jeśli A+PAO[RAE]→A
Rozkaz piąty(Adres 130):
Nazwa mnemoniczna: TMQ
Pełna nazwa: Prześlij MQ do A
Tryb adresowania: Adresowanie względne RAE=LR+DA
Spodziewany rezultat: MQ → A
Pamięć Mikroprogramu
0 Test ___ TINT ___ Brak przerwania
NA ___ 48
48 S1 ___ OLR ___ LR -> BUS
D1 ___ IRAP ___ BUS -> RAP
S3 ___ ORBP ___ RBP -> BUS
D3 ___ IRR ___ BUS -> RR
C1 ___ RRC ___ Rozpoczęcie RRC
49 S1 ___ ORR ___ RR -> BUS
D1 ___ ILK ___ BUS -> LK
S2 ___ IRAE ___ SUMA -> RAE
D2 ___ NSI ___ LR+1 -> LR
C2 ___ CEA ___ Oblicz adres efektywny
Test ___ TIND ___ Adresowanie pośrednie
NA ___ 50
50 S1 ___ ORAE ___ RAE -> BUS
D1 ___ IRAP ___ BUS -> RAP
S3 ___ ORBP ___ RBP -> BUS
D3 ___ IX ___ BUS -> X
C1 ___ RRC ___ Rozpoczęcie RRC
51 S2 ___ OX ___ X -> BUS
D2 ___ IBI ___ BUS -> RAE
C2 ___ OPC ___ OP /AOP+32/ -> RAPS
Cykl rozkazowy rozpoczyna się pobraniem i wykonaniem mikrorozkazu z komórki o adresie w PM np. 0, która zawiera mikrooperacje testu TINT. Następnie przechodzimy do komórki o adresie określonym w NA, czyli 48. Tam znajduję się mikrorozkaz, którego mikrooperacje powodują zainicjowanie cyklu odczytu z pamięci, załadowanie rejestru buforowego RBP zawartością adresowanej komórki. Zawartość RBP przesyłana jest do RR, umożliwiając dekodowanie kodu operacji i wyznaczenie adresu argumentów. W komórce 49 pamięci, do rejestru pomocniczego LK przesyłana jest część pola DA rozkazu zwykłego. Następnie obliczany jest adres efektywny argumentu, uwzględniająca stan bitów X i S oraz pola DA rozkazu. Wynik tego działania, wysyłany jest do RAE. Później LR jest zwiększany o 1. Jeśli mamy do czynienia z adresowaniem pośrednim, test TIND przekazuje sterowanie do mikrorozkazu o adresie 50. Wtedy w RAE znajduje się adres adresu argumentu. W kolejnym mikrorozkazach zawartość rejestru pomocniczego przesyłana jest do RAE wykorzystując rejestr pomocniczy X.. Kod operacji jest dekodowany w mikrorozkazie 51.
Log z wykonanego ćwiczenia laboratoryjnego.
Log zapisano we Wtorek, 2012-11-27
-------------------- 0 --------------------
TAKT=0 RBPS:=000000020030
TAKT=1 TAKT=2 TAKT=5 TAKT=6 TAKT=7
Test ___ TINT ___ Brak przerwania
RAPS:=0030h\ 48
-------------------- 48 --------------------
TAKT=0 RBPS:=5006C4000000
TAKT=1
S1 ___ OLR ___ LR -> BUS BUS:=007Eh\ 126
D1 ___ IRAP ___ BUS -> RAP RAP:=007Eh\ 126
C1 ___ RRC ___ Rozpoczęcie RRC
MAV=0 TAKT=2 TAKT=5 TAKT=6 IA=1 RBP:=1202h\ 4610
IA=0 IA=0 TAKT=7
S3 ___ ORBP ___ RBP -> BUS BUS:=1202h\ 4610
D3 ___ IRR ___ BUS -> RR RR:=1202h\ 4610
RAPS:=0031h\ 49
-------------------- 49 --------------------
TAKT=0 RBPS:=68C801830032
TAKT=1
S1 ___ ORR ___ RR -> BUS BUS:=1202h\ 4610
D1 ___ ILK ___ BUS -> LK LK:=0002h\ 2
C2 ___ CEA ___ Oblicz adres efektywny
l:=0002h\ 2 r:=007Eh\ 126 aa:=0080h\ 128
TAKT=2 TAKT=5 TAKT=6
S2 ___ IRAE ___ SUMA -> RAE RAE:=0080h\ 128
D2 ___ NSI ___ LR+1 -> LR LR:=007Fh\ 127
IA=0 TAKT=7
Test ___ TIND ___ Adresowanie pośrednie
RAPS:=0002h\ 2
Zmiana zawartości rejestru RAPS - nowa wartość to 0
-------------------- 0 --------------------
TAKT=0 MAV=1 RBPS:=000000020030
TAKT=1 TAKT=2 TAKT=5 TAKT=6 TAKT=7
Test ___ TINT ___ Brak przerwania
RAPS:=0030h\ 48
-------------------- 48 --------------------
TAKT=0 RBPS:=5006C4000000
TAKT=1
S1 ___ OLR ___ LR -> BUS BUS:=007Fh\ 127
D1 ___ IRAP ___ BUS -> RAP RAP:=007Fh\ 127
C1 ___ RRC ___ Rozpoczęcie RRC
MAV=0 TAKT=2 TAKT=5 TAKT=6 IA=1 RBP:=8D06h\ -29434
IA=0 IA=0 TAKT=7
S3 ___ ORBP ___ RBP -> BUS BUS:=8D06h\ -29434
D3 ___ IRR ___ BUS -> RR RR:=8D06h\ -29434
RAPS:=0031h\ 49
-------------------- 49 --------------------
TAKT=0 RBPS:=68C801830032
TAKT=1
S1 ___ ORR ___ RR -> BUS BUS:=8D06h\ -29434
D1 ___ ILK ___ BUS -> LK LK:=0006h\ 6
C2 ___ CEA ___ Oblicz adres efektywny
l:=0006h\ 6 r:=0014h\ 20 aa:=001Ah\ 26
TAKT=2 TAKT=5 TAKT=6
S2 ___ IRAE ___ SUMA -> RAE RAE:=001Ah\ 26
D2 ___ NSI ___ LR+1 -> LR LR:=0080h\ 128
IA=0 TAKT=7
Test ___ TIND ___ Adresowanie pośrednie
RAPS:=0032h\ 50
-------------------- 50 --------------------
TAKT=0 MAV=1 RBPS:=900624000000
TAKT=1
S1 ___ ORAE ___ RAE -> BUS BUS:=001Ah\ 26
D1 ___ IRAP ___ BUS -> RAP RAP:=001Ah\ 26
C1 ___ RRC ___ Rozpoczęcie RRC
MAV=0 TAKT=2 TAKT=5 TAKT=6 IA=1 RBP:=0003h\ 3
IA=0 IA=0 TAKT=7
S3 ___ ORBP ___ RBP -> BUS BUS:=0003h\ 3
D3 ___ IX ___ BUS -> X X:=0003h\ 3
RAPS:=0033h\ 51
-------------------- 51 --------------------
TAKT=0 RBPS:=03A801600000
TAKT=1
C2 ___ OPC ___ OP /AOP+32/ -> RAPS TAKT=2 TAKT=5 TAKT=6
S2 ___ OX ___ X -> BUS BUS:=0003h\ 3
D2 ___ IBI ___ BUS -> RAE RAE:=0003h\ 3
IA=0 TAKT=7
RAPS:=000Bh\ 11 ***** BŁĄD ***** OCENA=5 RAPS:=0011h\ 17
Zmiana zawartości rejestru RAPS - nowa wartość to 0
-------------------- 0 --------------------
TAKT=0 MAV=1 RBPS:=000000020030
TAKT=1 TAKT=2 TAKT=5 TAKT=6 TAKT=7
Test ___ TINT ___ Brak przerwania
RAPS:=0030h\ 48
-------------------- 48 --------------------
TAKT=0 RBPS:=5006C4000000
TAKT=1
S1 ___ OLR ___ LR -> BUS BUS:=0080h\ 128
D1 ___ IRAP ___ BUS -> RAP RAP:=0080h\ 128
C1 ___ RRC ___ Rozpoczęcie RRC
MAV=0 TAKT=2 TAKT=5 TAKT=6 IA=1 RBP:=5B00h\ 23296
IA=0 IA=0 TAKT=7
S3 ___ ORBP ___ RBP -> BUS BUS:=5B00h\ 23296
D3 ___ IRR ___ BUS -> RR RR:=5B00h\ 23296
RAPS:=0031h\ 49
-------------------- 49 --------------------
TAKT=0 RBPS:=68C801830032
TAKT=1
S1 ___ ORR ___ RR -> BUS BUS:=5B00h\ 23296
D1 ___ ILK ___ BUS -> LK LK:=0000h\ 0
C2 ___ CEA ___ Oblicz adres efektywny
l:=0000h\ 0 r:=0080h\ 128 aa:=0080h\ 128
TAKT=2 TAKT=5 TAKT=6
S2 ___ IRAE ___ SUMA -> RAE RAE:=0080h\ 128
D2 ___ NSI ___ LR+1 -> LR LR:=0081h\ 129
IA=0 TAKT=7
Test ___ TIND ___ Adresowanie pośrednie
RAPS:=0032h\ 50
-------------------- 50 --------------------
TAKT=0 MAV=1 RBPS:=900624000000
TAKT=1
S1 ___ ORAE ___ RAE -> BUS BUS:=0080h\ 128
D1 ___ IRAP ___ BUS -> RAP RAP:=0080h\ 128
C1 ___ RRC ___ Rozpoczęcie RRC
MAV=0 TAKT=2 TAKT=5 TAKT=6 IA=1
RBP:=0F06h\ 3846 ***** BŁĄD ***** OCENA=4 RBP:=5B00h\ 23296
IA=0 IA=0 TAKT=7
S3 ___ ORBP ___ RBP -> BUS BUS:=5B00h\ 23296
D3 ___ IX ___ BUS -> X X:=5B00h\ 23296
RAPS:=0033h\ 51
-------------------- 51 --------------------
TAKT=0 RBPS:=03A801600000
TAKT=1
C2 ___ OPC ___ OP /AOP+32/ -> RAPS TAKT=2 TAKT=5 TAKT=6
S2 ___ OX ___ X -> BUS BUS:=5B00h\ 23296
D2 ___ IBI ___ BUS -> RAE RAE:=5B00h\ 23296
IA=0 TAKT=7
RAPS:=0001h\ 1 ***** BŁĄD ***** OCENA=4 RAPS:=000Bh\ 11
Zmiana zawartości rejestru RAPS - nowa wartość to 0
-------------------- 0 --------------------
TAKT=0 MAV=1 RBPS:=000000020030
TAKT=1 TAKT=2 TAKT=5 TAKT=6 TAKT=7
Test ___ TINT ___ Brak przerwania
RAPS:=0030h\ 48
-------------------- 48 --------------------
TAKT=0 RBPS:=5006C4000000
TAKT=1
S1 ___ OLR ___ LR -> BUS BUS:=0081h\ 129
D1 ___ IRAP ___ BUS -> RAP RAP:=0081h\ 129
C1 ___ RRC ___ Rozpoczęcie RRC
MAV=0 TAKT=2 TAKT=5 TAKT=6 IA=1 RBP:=0F06h\ 3846
IA=0 IA=0 TAKT=7
S3 ___ ORBP ___ RBP -> BUS BUS:=0F06h\ 3846
D3 ___ IRR ___ BUS -> RR RR:=0F06h\ 3846
RAPS:=0031h\ 49
-------------------- 49 --------------------
TAKT=0 RBPS:=68C801830032
TAKT=1
S1 ___ ORR ___ RR -> BUS BUS:=0F06h\ 3846
D1 ___ ILK ___ BUS -> LK LK:=0006h\ 6
C2 ___ CEA ___ Oblicz adres efektywny
XRO=1
l:=0000h\ 0 r:=0000h\ 0 aa:=0000h\ 0
TAKT=2 TAKT=5 TAKT=6
S2 ___ IRAE ___ SUMA -> RAE RAE:=0000h\ 0
D2 ___ NSI ___ LR+1 -> LR LR:=0082h\ 130
IA=0 TAKT=7
Test ___ TIND ___ Adresowanie pośrednie
RAPS:=0032h\ 50
-------------------- 50 --------------------
TAKT=0 MAV=1 RBPS:=900624000000
TAKT=1
S1 ___ ORAE ___ RAE -> BUS BUS:=0000h\ 0
D1 ___ IRAP ___ BUS -> RAP RAP:=0000h\ 0
C1 ___ RRC ___ Rozpoczęcie RRC
MAV=0 TAKT=2 TAKT=5 TAKT=6 IA=1 RBP:=00DCh\ 220
IA=0 IA=0 TAKT=7
S3 ___ ORBP ___ RBP -> BUS BUS:=00DCh\ 220
D3 ___ IX ___ BUS -> X X:=00DCh\ 220
RAPS:=0033h\ 51
-------------------- 51 --------------------
TAKT=0 RBPS:=03A801600000
TAKT=1
C2 ___ OPC ___ OP /AOP+32/ -> RAPS TAKT=2 TAKT=5 TAKT=6
S2 ___ OX ___ X -> BUS BUS:=00DCh\ 220
D2 ___ IBI ___ BUS -> RAE RAE:=00DCh\ 220
IA=0 TAKT=7
RAPS:=000Ch\ 12 ***** BŁĄD ***** OCENA=4 RAPS:=0001h\ 1
************************************************************
Symulację zakończono o godzinie 14:58:32.
Ocena końcowa : 4
Ilość błędów : 4
Algorytm obliczania zawartości RAE dla rozkazów w formacie zwykłym:
Tabela przedstawiająca opis działania algorytmu graficznego zaprezentowanego powyżej:
1 rozkaz: SUS OP=2 X=0 S=1 I=0 DA=2 |
||||
Zadanie |
LOG |
|||
START X=0 S=0? => NIE X=0 S=1 ?=> TAK SUMA_L = LR; SUMA_R = DA RAE = LR + DA= 128 RAE>256? => NIE STOP |
l:=0002h\ 2 r:=007Eh\ 126 aa:=0080h\ 128 TAKT=2 TAKT=5 TAKT=6 S2 ___ IRAE ___ SUMA -> RAE RAE:=0080h\ 80 |
|||
2 rozkaz: BAQ OP=17 X=1 S=0 I=1 DA=6 |
||||
Zadanie |
LOG |
|||
START X=0 S=0? => NIE X=1 S=0? => TAK SUMA_L = DA; SUMA_R = RI RAE = PAO[DA + RI] = 6+ 20 = 26 RAE>256? => NIE STOP |
l:=0006h\ 6 r:=0014h\ 20 aa:=001Ah\ 26 TAKT=2 TAKT=5 TAKT=6 S2 ___ IRAE ___ SUMA -> RAE RAE:=001Ah\ 26 |
|||
3 rozkaz: BXN OP=11 X=0 S=1 I=1 DA=0 |
||||
Zadanie |
LOG |
|||
START X=0 S=0? => NIE X=1 S=0? => NIE X=0 S=1? => TAK SUMA_L = LR; SUMA_R = DA RAE =PAO[LR + DA] = 128 RAE>256? => NIE STOP |
l:=0000h\ 0 r:=0080h\ 128 aa:=000Eh\ 128 TAKT=2 TAKT=5 TAKT=6 S2 ___ IRAE ___ SUMA -> RAE RAE:=0080h\ 128 |
|||
4 rozkaz: BAZ OP=1 X=1 S=1 I=1 DA=6 |
||||
Zadanie |
LOG |
|||
START X=0 S=0? => NIE X=1 S=0? => NIE X=0 S=1? => NIE SUMA_L = 0; SUMA_R = 0 RAE = PAO[0] = 0 RAE>256? => NIE STOP |
l:=0000h\ 0 r:=0000h\ 0 aa:=0000h\ 0 TAKT=2 TAKT=5 TAKT=6 S2 ___ IRAE ___ SUMA -> RAE RAE:=0000h\ 0 |
12