background image

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

 I

Celem niniejszego zadania jest zapoznanie się studentów z natychmiastowym trybem 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. 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 zadania 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. 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 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. Działanie rozkazu CMP procesora 8086.
5. Jak działa znacznik OF.

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

background image

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:

1. MOV (dla dowolnego rejestru z Tabeli 2, dla W=1),
2. ADD (dla AL lub AX),
3. 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 (w paczkach po 8 bitów).
D_5. Zadbaj   o   to   by   napisany   program   zajmował   jak   najmniej   komórek   pamięci 

mikrorozkazów.

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


Document Outline