POLITECHNIKA KOSZALIŃSKA - WYDZIAŁ ELEKTRONIKI I INFORMATYKI
Architektura komputerów
Zajęcia laboratoryjne N 6
Zajęcia laboratoryjne N 6
TEMAT:
R
OZKAZ
J
EDNOARGUMENTOWY
– A
DRESACJA
N
ATYCHMIASTOWA
II
Celem niniejszego zadania jest rozwinięcie tematu poprzedniego dotyczącego natychmiasto-
wego trybu adresacji. W ćwiczeniu tym zajmiemy się podstawowymi operacjami arytmetycznymi
tj. dodawaniem i odejmowaniem, zwykłym i z przeniesieniem, jak również rozkazem porównania i
przesłania. Jak w poprzednich zajęciach, we wszystkich rozkazach jeden z argumentów będzie
znajdował się w akumulatorze, bądź jego części, do drugiego natomiast będziemy się odwoływać
korzystając z adresacji natychmiastowej. Dodatkowo wykorzystując doświadczenia z tematu
poprzedniego stworzymy rozkaz pozwalający nam na załadowanie dowolnego rejestru ogólnego
przeznaczenia zadaną wartością.
W niniejszym ćwiczeniu rozkazy będą miały wielkość słowa (dwa bajty) lub trzech bajtów o
formacie przedstawionym na Rysunku 1 i 2. Tak jak w poprzednim zadaniu pole REG
interpretujemy zgodnie z Tabelą 2, pole W wyznacza nam wielkość argumentu z jakim będzie
współpracował dany rozkaz, tzn. jeżeli W=0 mamy do czynienia z bajtem, jeśli W=1 argumentem
jest słowo. Zakładamy, że każdy kolejny rozkaz zaczyna się w nowej komórce pamięci, tj. jeżeli
rozkaz ma rozmiar trzech bajtów, faktycznie zajmuje dwa słowa.
Wpływ poszczególnych rozkazów na odpowiednie flagi zawarto w Tabeli 1, gdzie, jak
poprzednio OF oznacza flagę przepełnienia, CF – przeniesienia/pożyczki, SF – znaku, ZF – zera.
Tabela 1:
Operacja
Rozkazy
OF
CF
SF
ZF
Dodawanie, odejmowanie ADD, ADC, SUB, SBB, CMP
+
+
+
+
Oznaczenia: '+' – wynik operacji wpływa na flagę; '-' – nie wpływa;
Zagadnienia do opracowania przed przystąpieniem do wykonywania zadania:
1. Adresacja natychmiastowa.
2. Little Endian i Big Endian.
3. Zapisz w postaci binarnej i szesnastkowej rozkazy zadane w Tabeli 4.
4. Znacznik OF, w jakich sytuacjach (przy rozkazach ADD, ADC, SUB, SBB, CMP) pro-
cesor 8086 ustawia te flagę, a w jakich zeruje.
5. Działanie rozkazu CMP procesora 8086.
1 z 2
Rysunek 1: Formaty rozkazów arytmetycznych dla adresacji natychmiastowej.
15
8 7
5
3 2
0
6
4
1
13
11 10
14
12
9
Kod operacji
W
DATA8
15
8 7
5
3 2
0
6
4
1
13
11 10
14
12
9
DATA8
DATA8
15
8 7
5
3 2
0
6
4
1
13
11 10
14
12
9
X
X
X
X
X
X
X
X
Kod operacji
W
W=1
W=0
Rysunek 2: Formaty rozkazu MOV.
15
8 7
5
3 2
0
6
4
1
13
11 10
14
12
9
Kod operacji
REG
W
DATA8
15
8 7
5
3 2
0
6
4
1
13
11 10
14
12
9
DATA8
DATA8
15
8 7
5
3 2
0
6
4
1
13
11 10
14
12
9
X
X
X
X
X
X
X
X
Kod operacji
REG
W
W=1
W=0
POLITECHNIKA KOSZALIŃSKA - WYDZIAŁ ELEKTRONIKI I INFORMATYKI
Architektura komputerów
Zajęcia laboratoryjne N 6
Zadania podstawowe do wykonywania w czasie trwania zajęć laboratoryjnych:
P_1. Rozbuduj program z 2 zajęć laboratoryjnych o rozkazy zawarte w Tabeli 4,
pamiętając o odpowiednim modyfikowaniu znaczników zgodnym z Tabelą 1.
P_2. W czasie dekodowania sprawdź całe 8 starszych bitów niosących informacje o
wykonywanym rozkazie.
P_3. Dane zapisz w postaci Big Endian.
Zadania dodatkowe wykonywania w czasie trwania zajęć laboratoryjnych:
D_1. Weź program z poprzednich zajęć i ustaw jako komentarz dekodowanie wszystkich
rozkazów poza NOP, następnie usuń (lub ustaw jako komentarz) fragment (lub fragmenty)
programu z obszaru w którym są wykonywane te rozkazy.
D_2. Rozbuduj tak powstały program, tak aby wykonywały się następujące rozkazy:
a. MOV (dla dowolnego rejestru z Tabeli 2, dla W=1),
b. ADD (dla AL lub AX),
c. ADC (dla AL lub AX).
D_3. W czasie dekodowania rozkazu sprawdź tylko kod operacji, a do pola REG odwołuj
się przy pomocy rejestrów RA i RB w czasie wykonywania operacji MOV (nie w czasie
dekodowania).
D_4. Zapisz dane w formacie Little Endian.
D_5. Zadbaj o to by napisany program zajmował jak najmniej komórek pamięci
mikrorozkazów.
D_6. Przedstaw utworzony program w postaci algorytmu.
Tabela 1:
REG W=0 W=1
000
AL
AX
001
CL
CX
010
DL
DX
011
BL
BX
100 AH
SP
101
CH
BP
110
DH
SI
111
BH
DI
Tabela 2:
Operacja
Kod operacji
ADD ACC, Data
0000 010W
ADC ACC, Data
0001 010W
SBB ACC, Data
0001 110W
SUB ACC, Data
0010 110W
CMP ACC, Data
0011 110W
MOV REG, Data
1011 W
Tabela 3:
Nr st.
Rozkazy
Nr st.
Rozkazy
1
ADD ACC, Data8
MOV BX, Data16
2 i 10
ADC ACC, Data16
MOV CL, Data8
3
ADC ACC, Data8
MOV SP, Data16
4
ADD ACC, Data16
MOV DL, Data8
5 i 9
ADD ACC, Data8
MOV BP, Data16
6
ADC ACC, Data16
MOV BL, Data8
7
ADC ACC, Data8
MOV CX, Data16
8
ADD ACC, Data8
MOV DI, Data16
2 z 2