background image

Wojskowa Akademia Techniczna

im. Jarosława Dąbrowskiego

Laboratorium

Architektury i Organizacji Komputerów

Prowadzący

mgr. inż. Artur Miktus

Sprawozdanie z ćwiczenia laboratoryjnego

 nr 3

Temat: Mikroprogram pobrania rozkazu. Pobieranie rozkazów w trybie 

zwykłym dla adresowania pośredniego.

Wykonał : Adrian Kępa

Nr : 14

Grupa : I3X6S1

Data wykonania ćwiczenia : 07.11.2013

background image

[1]

Pamięć operacyjna

Stan początkowy rejestrów

A

14

LR

154

RI

10

Stan pamięci operacyjnej

Adres

Zawartość [DEC]

Zawartość [HEX]

Zawartość[BIN]

0

230

00E6

0000000011100110

1

24

0018

0000000000011000

2

34

0022

0000000000100010

3

3

0003

0000000000000011

4

2

0002

0000000000000010

24

1

0001

0000000000000001

34

4

0004

0000000000000100

255

103

0067

0000000001100111

Lista rozkazów

Adres

Mnemonik

OP

X

S

I

DA

154

MUL

3

0

0

1

2

155

BXP

18

0

1

1

0

156

BXN

20

1

0

1

14

157

BAZ

23

1

1

0

14

158

LDX

9

0

1

0

214

Pozostałe komórki w PAO są wyzerowane.

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

[1]

background image

[2]

Rozkazy

Rozkaz pierwszy

Adres : 154
Mnemonik : MUL
Pełna nazwa : Mnożenie
Opis działania : A * PAO[RAE] -----> A||MQ

Rozkaz drugi

Adres : 155
Mnemonik : BXP
Pełna nazwa : Skocz jeśli RI dodatni
Opis działania : Jeśli RI > 0; RAE -----> LR

Rozkaz trzeci

Adres : 156
Mnemonik : BXN
Pełna nazwa : Skocz jeśli RI ujemny
Opis działania : Jeśli RI < 0; RAE -----> LR

Rozkaz czwarty

Adres : 157
Mnemonik : BAZ
Pełna nazwa : Skocz jeśli A = 0
Opis działania : Jeśli A = 0; RAE -----> LR

Rozkaz piąty

Adres : 158
Mnemonik : LDX
Pełna nazwa : Ładuj rejestr indeksowy
Opis działania : Ładuj rejestr indeksowy zawartością komórki o adresie w RAE

[2]

background image

[3]

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

[3]

background image

   Mikroprogram pobrania rozkazu ma za zadanie pobrać i zdekodować podane w zadaniu rozkazy.
Początkowo przeprowadzona jest mikrooperacja testu TINT w komórce o adresie 0 w PM.
Następnie z komórki o adresie 48 zostaje zainicjowany cykl odczytu z pamięci oraz załadowanie 
rejestru buforowego RBP zawartością adresowanej komórki a w następnym kroku zawartość RBP 
zostaje przesłana do rejestru rozkazów(RR). W komórce 49 zostaje przeprowadzone przesłanie do 
rejestru pomocniczego(LK) mniejsza część pola DA rozkazu zwykłego. Dalej obliczany jest adres 
efektywny argumentu, z uwzględnieniem bitów X,S oraz pola DA danego rozkazu. Natępnie wynik 
tego działania zostaje przesłany do RAE, a licznik rozkazów(LR) zostaje zwiększony o 1.
W wypadku gdy naszego rozkazu dotyczy adresowanie pośrednie, test TIND przekazuje sterowanie 
mikrorozkazowi w komórce o adresie 50. W tym momencie RAE zostaje adresem argumentu a w 
kolejnych mikrorozkazach zawartość rejestru pomocniczego jest do niego przesyłana.
Do komórki o adresie 50 sterowanie jest przekazywane także w sytuacji gdy rozkaz jest 
rozszerzony.

[4]

Log z wykonanego zadania

Log zapisano w Czwartek,  2013-11-07

-------------------- 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:=009Ah\    154

D1

___ IRAP ___

BUS -> RAP

RAP:=009Ah\    154

C1

___ RRC ___

Rozpoczęcie RRC

MAV=0 TAKT=2

TAKT=5

TAKT=6

IA=1

RBP:=1902h\    6402

IA=0

IA=0

TAKT=7

S3

___ ORBP ___ RBP -> BUS

BUS:=1902h\    6402

D3

___ IRR ___

BUS -> RR

RR:=1902h\    6402

RAPS:=0031h\    49

-------------------- 49 --------------------
TAKT=0

RBPS:=68C801830032

TAKT=1
S1

___ ORR ___

RR -> BUS

BUS:=1902h\    6402

D1

___ ILK ___

BUS -> LK

LK:=0002h\    2

C2

___ CEA ___

Oblicz adres efektywny

l:=0002h\    2

r:=0000h\    0

aa:=0002h\    2

TAKT=2

TAKT=5

TAKT=6

S2

___ IRAE ___

SUMA -> RAE RAE:=0002h\    2

D2

___ NSI ___

LR+1 -> LR

LR:=009Bh\    155

IA=0

TAKT=7

Test

___ TIND ___

Adresowanie pośrednie

RAPS:=0032h\    50

[4]

background image

-------------------- 50 --------------------
TAKT=0

MAV=1 RBPS:=900624000000

TAKT=1
S1

___ ORAE ___ RAE -> BUS

BUS:=0002h\    2

D1

___ IRAP ___

BUS -> RAP

RAP:=0002h\    2

C1

___ RRC ___

Rozpoczęcie RRC

MAV=0 TAKT=2

TAKT=5

TAKT=6

IA=1

RBP:=0022h\    34

IA=0

IA=0

TAKT=7

S3

___ ORBP ___ RBP -> BUS

BUS:=0022h\    34

D3

___ IX ___

BUS -> X

X:=0022h\    34

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:=0022h\    34

D2

___ IBI ___

BUS -> RAE

RAE:=0022h\    34

IA=0

TAKT=7

RAPS:=0003h\    3

 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:=009Bh\    155

D1

___ IRAP ___

BUS -> RAP

RAP:=009Bh\    155

C1

___ RRC ___

Rozpoczęcie RRC

MAV=0 TAKT=2

TAKT=5

TAKT=6

IA=1

RBP:=9300h\    -27904

IA=0

IA=0

TAKT=7

S3

___ ORBP ___ RBP -> BUS

BUS:=9300h\    -27904

D3

___ IRR ___

BUS -> RR

RR:=9300h\    -27904

RAPS:=0031h\    49

-------------------- 49 --------------------
TAKT=0

RBPS:=68C801830032

TAKT=1
S1

___ ORR ___

RR -> BUS

BUS:=9300h\    -27904

D1

___ ILK ___

BUS -> LK

LK:=0000h\    0

C2

___ CEA ___

Oblicz adres efektywny

l:=0000h\    0

r:=009Bh\    155 aa:=009Bh\    155

TAKT=2

TAKT=5

TAKT=6

S2

___ IRAE ___

SUMA -> RAE RAE:=009Bh\    155

D2

___ NSI ___

LR+1 -> LR

LR:=009Ch\    156

IA=0

TAKT=7

Test

___ TIND ___

Adresowanie pośrednie

RAPS:=0032h\    50

[5]

background image

-------------------- 50 --------------------
TAKT=0

MAV=1 RBPS:=900624000000

TAKT=1
S1

___ ORAE ___ RAE -> BUS

BUS:=009Bh\    155

D1

___ IRAP ___

BUS -> RAP

RAP:=009Bh\    155

C1

___ RRC ___

Rozpoczęcie RRC

MAV=0 TAKT=2

TAKT=5

TAKT=6

IA=1

RBP:=9300h\    -27904

IA=0

IA=0

TAKT=7

S3

___ ORBP ___ RBP -> BUS

BUS:=9300h\    -27904

D3

___ IX ___

BUS -> X

X:=9300h\    -27904

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:=9300h\    -27904

D2

___ IBI ___

BUS -> RAE

RAE:=9300h\    -27904

IA=0

TAKT=7

RAPS:=0012h\    18

 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:=009Ch\    156

D1

___ IRAP ___

BUS -> RAP

RAP:=009Ch\    156

C1

___ RRC ___

Rozpoczęcie RRC

MAV=0 TAKT=2

TAKT=5

TAKT=6

IA=1

RBP:=A50Eh\    -23282

IA=0

IA=0

TAKT=7

S3

___ ORBP ___ RBP -> BUS

BUS:=A50Eh\    -23282

D3

___ IRR ___

BUS -> RR

RR:=A50Eh\    -23282

RAPS:=0031h\    49

-------------------- 49 --------------------
TAKT=0

RBPS:=68C801830032

TAKT=1
S1

___ ORR ___

RR -> BUS

BUS:=A50Eh\    -23282

D1

___ ILK ___

BUS -> LK

LK:=000Eh\    14

C2

___ CEA ___

Oblicz adres efektywny

l:=000Eh\    14 r:=000Ah\    10 aa:=0018h\    24
TAKT=2

TAKT=5

TAKT=6

S2

___ IRAE ___

SUMA -> RAE RAE:=0018h\    24

D2

___ NSI ___

LR+1 -> LR

LR:=009Dh\    157

IA=0

TAKT=7

Test

___ TIND ___

Adresowanie pośrednie

RAPS:=0032h\    50

[6]

background image

-------------------- 50 --------------------
TAKT=0

MAV=1 RBPS:=900624000000

TAKT=1
S1

___ ORAE ___ RAE -> BUS

BUS:=0018h\    24

D1

___ IRAP ___

BUS -> RAP

RAP:=0018h\    24

C1

___ RRC ___

Rozpoczęcie RRC

MAV=0 TAKT=2

TAKT=5

TAKT=6

IA=1

RBP:=0001h\    1

IA=0

IA=0

TAKT=7

S3

___ ORBP ___ RBP -> BUS

BUS:=0001h\    1

D3

___ IX ___

BUS -> X

X:=0001h\    1

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:=0001h\    1

D2

___ IBI ___

BUS -> RAE

RAE:=0001h\    1

IA=0

TAKT=7

RAPS:=0014h\    20

 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:=009Dh\    157

D1

___ IRAP ___

BUS -> RAP

RAP:=009Dh\    157

C1

___ RRC ___

Rozpoczęcie RRC

MAV=0 TAKT=2

TAKT=5

TAKT=6

IA=1

RBP:=BE0Eh\    -16882

IA=0

IA=0

TAKT=7

S3

___ ORBP ___ RBP -> BUS

BUS:=BE0Eh\    -16882

D3

___ IRR ___

BUS -> RR

RR:=BE0Eh\    -16882

RAPS:=0031h\    49

-------------------- 49 --------------------
TAKT=0

RBPS:=68C801830032

TAKT=1
S1

___ ORR ___

RR -> BUS

BUS:=BE0Eh\    -16882

D1

___ ILK ___

BUS -> LK

LK:=000Eh\    14

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:=009Eh\    158

IA=0

TAKT=7

Test

___ TIND ___

Adresowanie pośrednie

RAPS:=0032h\  50   

***** BŁĄD *****

OCENA=5

RAPS:=0017h\    23

 Zmiana zawartości rejestru RAPS - nowa wartość to 0

[7]

background image

-------------------- 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:=009Eh\    158

D1

___ IRAP ___

BUS -> RAP

RAP:=009Eh\    158

C1

___ RRC ___

Rozpoczęcie RRC

MAV=0 TAKT=2

TAKT=5

TAKT=6

IA=1

RBP:=4AD6h\    19158

IA=0

IA=0

TAKT=7

S3

___ ORBP ___ RBP -> BUS

BUS:=4AD6h\    19158

D3

___ IRR ___

BUS -> RR

RR:=4AD6h\    19158

RAPS:=0031h\    49

-------------------- 49 --------------------
TAKT=0

RBPS:=68C801830032

TAKT=1
S1

___ ORR ___

RR -> BUS

BUS:=4AD6h\    19158

D1

___ ILK ___

BUS -> LK

LK:=0056h\    86

C2

___ CEA ___

Oblicz adres efektywny

XRO=1
l:=00D6h\    214 r:=009Eh\    158 aa:=0074h\    116
TAKT=2

TAKT=5

TAKT=6

S2

___ IRAE ___

SUMA -> RAE RAE:=0074h\    116

D2

___ NSI ___

LR+1 -> LR

LR:=009Fh\    159

IA=0

TAKT=7

Test

___ TIND ___

Adresowanie pośrednie

RAPS:=0009h\    9

 Zmiana zawartości rejestru RAPS - nowa wartość to 0

************************************************************

Symulację zakończono o godzinie 13:20:43.
Ocena końcowa : 5
Ilość błędów  :

1

Podczas wykonywania ćwiczenia laboratoryjnego popełniłem jeden błąd polegający na wpisaniu 
błędnej wartości do komórki RAPS. W komórkę RAPS została wpisana błędna wartość 50 która 
oznaczałaby przejście do 50 wiersza pamięci mikroprogramu w celu kontynuacji pobierania 
rozkazu o adresacji pośredniej (bit I = 1). Kolejne błędy tego typu nie miały miejsca z powodu 
zwiększonej ostrożności i odpowiedniej analizy typu adresowania pobieranych rozkazów.

[8]

background image

[5]

Algorytm obliczania RAE

dla rozkazów zwykłych

[9]

background image

[6]

Opis działania algorytmu

Przedstawiony algorytm ma zastosowanie dla rozkazów w trybie zwykłym. 
Jeśli bity X = S = 0 to lewe wejście sumatora (LALU) przyjmuje wartość pola DA rozkazu, a prawe 
wejście sumatora (RALU) przyjmuje wartość 0.

Gdy bit X = 1 a bit S = 0 to LALU przyjmuje wartość pola DA a RALU wartość rejestru 
indeksowego (RI).

W sytuacji gdy bit X = 0 a bit S = 1 LALU przyjmuje również wartość DA a RALU wartość 
licznika rozkazów (LR).

Wynik będący sumą powyższych kombinacji musi być mniejszy od 256. Jeżeli tak nie jest, flaga 
odpowiadająca za sygnalizację nadmiaru (XRO) zostaje ustawiona na 1 a suma powinna być 
modyfikowana tak długo aż uzyska wartość mniejszą od 256.

W przypadku wystąpienia kombinacji bitów X = S = 1 czyli adresowania zabronionego, zarówno 
LALU jak i RALU przyjmują wartość 0.

Następnie wartość wyliczonej sumy jest zapisywana w rejestrze adresu efektywnego (RAE). 
Sprawdza się również bit I odpowiadający za adresowanie pośrednie. Jeśli I = 1 następuje wtedy 
odczytanie zawartości z komórki w PAO której adres znajduje się w RAE. Wartość tej komórki 
zostaje wpisana do rejestru X a następnie z niego przypisana do RAE, algorytm zostaje zakończony.

W przypadku gdy bit I = 0 oznacza to adresowanie bezpośrednie, więc końcowa wartość RAE nie 
ulegnie zmianie i algorytm zostaje zakończony.

[10]

background image

[7]

Porównanie wyników 

teoretycznych z praktycznymi

Rozkaz pierwszy

MUL [Adres = 154] [OP = 3] [X = 0] [S = 0] [I = 1] [DA = 2]

X = S = 0 [PRAWDA]
LALU = DA = 2
RALU = 0
SUMA = 2
SUMA < 256 [PRAWDA]
RAE = SUMA = 2

(...)
l:=0002h\    2

r:=0000h\    0

aa:=0002h\    2

TAKT=2

TAKT=5

TAKT=6

S2

___ IRAE ___

SUMA -> RAE RAE:=0002h\    2

(...)

Rozkaz drugi

BXP [Adres = 155] [OP = 18] [X = 0] [S = 1] [I = 1] [DA = 0]

X = S = 0 [FAŁSZ]
X = 1 ^ S = 0 [FAŁSZ]
X = 0 ^ S = 1 [PRAWDA]
LALU = DA = 0
RALU = LR = 155
SUMA = 155
SUMA < 256 [PRAWDA]
RAE = SUMA = 155

(...)
l:=0000h\    0

r:=009Bh\    155 aa:=009Bh\    155

TAKT=2

TAKT=5

TAKT=6

S2

___ IRAE ___

SUMA -> RAE RAE:=009Bh\    155

(...)

Rozkaz trzeci

BXP [Adres = 156] [OP = 20] [X = 1] [S = 0] [I = 1] [DA = 14]

X = S = 0 [FAŁSZ]
X = 1 ^ S = 0 [PRAWDA]
LALU = DA = 14
RALU = RI = 10
SUMA = 24
SUMA < 256 [PRAWDA]
RAE = SUMA = 24

[11]

background image

(...)
l:=000Eh\    14 r:=000Ah\    10 aa:=0018h\    24
TAKT=2

TAKT=5

TAKT=6

S2

___ IRAE ___

SUMA -> RAE RAE:=0018h\    24

(...)

Rozkaz czwarty

BAZ [Adres = 157] [OP = 23] [X = 1] [S = 1] [I = 0] [DA = 14]

X = S = 0 [FAŁSZ]
X = 1 ^ S = 0 [FAŁSZ]
X = 0 ^ S = 1 [FAŁSZ]
X = 1 ^ S = 1 [PRAWDA]
Tryb zabroniony!
LALU = 0
RALU = 0
SUMA = 0
SUMA < 256
RAE = SUMA = 0

(...)
l:=0000h\    0

r:=0000h\    0

aa:=0000h\    0

TAKT=2

TAKT=5

TAKT=6

S2

___ IRAE ___ SUMA -> RAE RAE:=0000h\    0

(...)

Rozkaz piąty

LDX [Adres = 158] [OP = 9] [X = 0] [S = 1] [I = 0] [DA = 214]

X = S = 0 [FAŁSZ]
X = 1 ^ S = 0 [FAŁSZ]
X = 0 ^ S = 1 [PRAWDA]
LALU = DA = 214
RALU = LR = 158

SUMA = 372
SUMA < 256 [FAŁSZ]
Nadmiar!
SUMA = 372 – 256 = 116
SUMA < 256 [PRAWDA]
RAE = SUMA = 116

(...)
l:=00D6h\    214 r:=009Eh\    158 aa:=0074h\    116
TAKT=2

TAKT=5

TAKT=6

S2

___ IRAE ___ SUMA -> RAE RAE:=0074h\    116

(...)

Na podstawie powyższych zapisów stwierdzam że powyższy algorytm obliczania RAE jest 
poprawny, wyniki teoretyczne odpowiadają wynikom otrzymanym podczas symulacji 
przeprowadzonej na laboratoriach.

[12]