POLITECHNIKA KOSZALIŃSKA - WYDZIAŁ ELEKTRONIKI I INFORMATYKI Architektura komputerów
Zadanie laboratoryjne N 10
Zadanie laboratoryjne N 10
TEMAT: ROZKAZY DWUARGUMENTOWE – FORMAT ROZKAZU Z POST BAJTEM
Celem niniejszych zajęć laboratoryjnych jest zapoznanie się studentów z formatem rozkazu zawierającym tzw. post bajt, który umożliwia w prosty sposób korzystanie z adresacji bezpośredniej i pośredniej, adresacji rejestrowej, pośredniej rejestrowej, adresacji bazowej, indeksowej i adresacji bazowo-indeksowej. W niniejszym ćwiczeniu zajmiemy się tylko kilkoma z wymienionych tu typów adresacji.
Post bajt jest drugim bajtem rozkazu o zdefiniowanej strukturze, format którego przedstawiono na Rysunku 1, a oznaczenia poszczególnych pól, poza polem kodu operacji i polem kierunku (D), zawarte są w Tabeli 5. Jak wiadomo pole kodu operacji jest indywidualne dla poszczególnych operacji (Tabela 1), pole D jest polem charakterystycznym dla rozkazów dwuargumentowych, jeśli D=1 oznacza to, że argument lub wynik operacji przesyłany jest do rejestru określonego polem REG; przy D=0 – wartości przesyłane są ze wskazanego rejestru.
15
9 8 7 6 5
3 2
0
15
8 7
0
Kod operacji
D W MOD
REG
R/M
DISP8 L
DISP8 H
Rysunek 1: Rozkaz dwuargumentowy Tabela 1:
Rozkaz Kod operacji
ADD 0000 00DW
OR
0000 10DW
ADC 0001 00DW
SBB
0001 10DW
AND 0010 00DW
SUB
0010 10DW
XOR 0011 00DW
CMP 0011 10DW
MOV 1000 10DW
TEST 1000 010W
XCHG 1000 011W
Zagadnienia do opracowania przed przystąpieniem do wykonywania ćwiczenia:
1. Typy adresacji:
-
bezpośrednia,
-
bazowa,
-
pośrednia,
-
indeksowa,
-
rejestrowa,
-
bazowo-indeksowa.
-
pośrednia rejestrowa,
2. Zapisz dla swojego wariantu kody rozkazów zawartych w Tabeli 1, Tabeli 2 i 3 w postaci binarnej (z zaznaczeniem poszczególnych pól) oraz w postaci szesnastkowej.
1 z 3
POLITECHNIKA KOSZALIŃSKA - WYDZIAŁ ELEKTRONIKI I INFORMATYKI Architektura komputerów
Zadanie laboratoryjne N 10
Zadania podstawowe do wykonywania w czasie trwania ćwiczeń laboratoryjnych: P_1.Rozbuduj program z poprzedniego ćwiczenia laboratoryjnego zgodnie z Tabelą 2
i Tabelą 5.
P_2.Wartości D16 i argumenty w pamięci RAM zapisz w postaci Big endian.
P_3.Uwzględnij Tabelę 4.
Tabela 2:
Nr st.
Operacje
TEST AL, [BX+SI+D16]
XCHG AH, AL
1 i 9 CMP [SI+D16], BX
MOV [BP+SI+D16], SP
TEST BX, [BX+SI+D16]
XCHG CH, BL
2
CMP CX, [DI+D16]
MOV [BP+SI+D16], DH
TEST CX, [BX+DI+D16]
XCHG AL, DL
3 i 10 CMP [BP+D16], AL
MOV [BP+DI+D16], SI
TEST DL, [BX+DI+D16]
XCHG BL, CH
4
CMP [BX+D16], AX
MOV [BP+DI+D16], SP
TEST SP, [BP+SI+D16]
XCHG AH, DH
5
CMP CX, [SI+D16]
MOV [BX+SI+D16], AL
TEST BH, [BP+SI+D16]
XCHG CH, DH
6
CMP [DI+D16], AX
MOV [BX+SI+D16], BP
TEST CH, [BP+DI+D16]
XCHG DH, DL
7
CMP AX, [BP+D16]
MOV [BX+DI+D16], DX
TEST DX, [BP+DI+D16]
XCHG DL, BH
8
CMP CH,[BX+D16]
MOV [BX+DI+D16], SI
Tabela 3:
REG,
REG,
W=0 W=1
W=0 W=1
R/M
R/M
000
AL
AX
100
AH
SP
001
CL
CX
101
CH
BP
010
DL
DX
110
DH
SI
011
BL
BX
111
BH
DI
Zadania dodatkowe wykonywania w czasie trwania ćwiczeń laboratoryjnych: D_1.Dodaj kolejne rozkazy do już obsługiwanych przez program, tak aby wykonywały się dowolne z rozkazów: 1. CMP,
3. MOV,
5. OR,
2. TEST,
4. AND,
6. XOR
Dla dowolnej wartości W i D, dla MOD = 10 i R/M zawartego w przedziale 000 –
011.
D_2.Wartości D16 zapisz w postaci Big endian.
D_3.Argumenty w pamięci RAM zapisz w postaci Little endian.
D_4.Uwzględnij Tabelę 4.
D_5.Zadbaj o to by napisany program zajmował jak najmniej komórek pamięci mikro rozkazów.
2 z 3
POLITECHNIKA KOSZALIŃSKA - WYDZIAŁ ELEKTRONIKI I INFORMATYKI Architektura komputerów
Zadanie laboratoryjne N 10
Tabela 4:
Operacja
Rozkazy
OF CF SF ZF
Dodawanie,
ADD ADC SUB SBB
+
+
+
+
odejmowanie CMP NEG CMPS SCAS
+
+
+
+
INC DEC
+
-
+
+
Logiczne
AND OR XOR TEST
0
0
+
+
Oznaczenia: '+' – wynik operacji wpływa na flagę; '-' – nie wpływa; 1 – ustawia w stan '1'; 0 – ustawia w stan '0'; Tabela 5:
Pole
Pole
MOD
R/M
00
01
10
1 1
W=0 W=1
000 BX+SI BX+SI+D8 BX+SI+D16 AL
AX
001 BX+DI BX+DI+D8 BX+DI+D16 CL
CX
010
BP+SI
BP+SI+D8 BP+SI+D16
DL
DX
011 BP+DI BP+DI+D8 BP+DI+D16 BL
BX
100
SI
SI+D8
SI+D16
AH
SP
101
DI
DI+D8
DI+D16
CH
BP
110
DATA
BP+D8
BP+D16
DH
SI
111
BX
BX+D8
BX+D16
BH
DI
D8 i D16 oznaczają odpowiednio – przesunięcie wielkości 8 bitów i przesunięcie wielkości 16 bitów.
3 z 3