POLITECHNIKA KOSZALIŃSKA - WYDZIAŁ ELEKTRONIKI I INFORMATYKI
Architektura komputerów
Zadanie laboratoryjne N 10
Zadanie laboratoryjne N 10
TEMAT:
R
OZKAZY
DWU
ARGUMENTOWE
–
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 6 przygotowania do 6 zajęć laboratoryjnych. Jak wiadomo pole kodu operacji jest
indywidualne dla poszczególnych operacji (Tabela 1), pole D jest polem charakterystycznym dla
rozkazów dwu argumentowych, 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.
Tabela 1:
Operacja Kod operacji Operacja Kod operacji Operacja Kod operacji
ADD
0000 00DW AND
0010 00DW TEST
1000 010W
OR
0000 10DW SUB
0010 10DW XCHG
1000 011W
ADC
0001 00DW XOR
0011 00DW MOV
1000 10DW
SBB
0001 10DW CMP
0011 10DW
Zagadnienia do opracowania przed przystąpieniem do wykonywania ćwiczenia:
1. Typy adresacji:
-
bezpośrednia,
-
pośrednia,
-
rejestrowa,
-
pośrednia rejestrowa,
-
bazowa,
-
indeksowa,
-
bazowo-indeksowa.
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.
Zadania podstawowe do wykonywania w czasie trwania ćwiczeń laboratoryjnych:
P_1. Rozbuduj program z poprzedniego ćwiczenia laboratoryjnego zgodnie z Tabelą 2 i 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
1 i 9
TEST AL, [BX+SI+D16]
CMP [SI+D16], BX
XCHG AH, AL
MOV [BP+SI+D16], SP
1 z 3
Rysunek 1: Rozkaz dwu argumentowy
15
8 7
0
DISP8 L
DISP8 H
15
9 8 7
5
3 2
0
Kod operacji
W
R/M
REG
MOD
6
D
POLITECHNIKA KOSZALIŃSKA - WYDZIAŁ ELEKTRONIKI I INFORMATYKI
Architektura komputerów
Zadanie laboratoryjne N 10
Nr st.
Operacje
2
TEST BX, [BX+SI+D16]
CMP CX, [DI+D16]
XCHG CH, BL
MOV [BP+SI+D16], DH
3 i 10
TEST CX, [BX+DI+D16]
CMP [BP+D16], AL
XCHG AL, DL
MOV [BP+DI+D16], SI
4
TEST DL, [BX+DI+D16]
CMP [BX+D16], AX
XCHG BL, CH
MOV [BP+DI+D16], SP
5
TEST SP, [BP+SI+D16]
CMP CX, [SI+D16]
XCHG AH, DH
MOV [BX+SI+D16], AL
6
TEST BH, [BP+SI+D16]
CMP [DI+D16], AX
XCHG CH, DH
MOV [BX+SI+D16], BP
7
TEST CH, [BP+DI+D16]
CMP AX, [BP+D16]
XCHG DH, DL
MOV [BX+DI+D16], DX
8
TEST DX, [BP+DI+D16]
CMP CH,[BX+D16]
XCHG DL, BH
MOV [BX+DI+D16], SI
Tabela 3:
REG,
R/M
W=0 W=1 REG,
R/M
W=0 W=1
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,
2. TEST,
3. MOV,
4. AND,
5. OR,
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.
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';
2 z 3
POLITECHNIKA KOSZALIŃSKA - WYDZIAŁ ELEKTRONIKI I INFORMATYKI
Architektura komputerów
Zadanie laboratoryjne N 10
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