assembler€86ˆ 1

assembler€86ˆ 1



82


5. Rozkazy mikroprocesorów 8086/8088

kod rozkazu (ang. opcode ) - definiuje operacjÄ™ wykonywanÄ… przez rozkaz;    J

d - (ang. direction ) bit kierunku określa, czy wynik działania rozkazu będzie przesłany do rejestru czy też do pamięci: d = 0 - kierunek do rejestru, d = 1 - kierunek z rejestru;

w (ang. word/byte ) - bit określający, czy działanie jest na bajtach czy słowach: w = 0 -działanie na bajtach, w = 1 - działanie na słowach;

s bit określający, czy wartość bezpośrednia jest bajtem czy słowem;

mod (ang. register/niemoty modę ) - dwa bity określające czy oba argumenty są rejestrami (mod = 11), czy też jeden z nich jest w pamięci operacyjnej;

reg (ang. register ) - trzy bity definiujÄ…ce okreÅ›lony rejestr jako argument rozkazu lub stanowiÄ…ce rozszerzenie kodu operacji; r/m (ang. registerhnemory ) - trzy bity wskazujÄ…ce rejestr bÄ™dÄ…cy argumentem lub rejestr wykorzystywany do obliczenia adresu wzglÄ™dem poczÄ…tku segmentu.

Tablica 5.2. Znaczenie kodów pól mod. reg. r/m

reg

w=l

o

II

*

reg

W=1

w = 0 ]

000

AX

AL

100

SP

AH 1

001

CX

CL

101

BP

CH 1

010

DX

DL

110

SI

DH 1

011

BX

BL

111

Dl

BH m

mod = 00 - jeden z argumentów jest w pamici, przemieszczenie (dodatkowe bajty w rozkazie) wystÄ™puje jedynie wówczas. gdy r/m = 110: w tym przypadku adres efektywny stanowiÄ… wprost dwa kolejne bajty roz-kazu (addrhigh. addrjow); w przeciwnym razie tzn., gdy r/m 110, przemieszczenie nie wystÄ™puje; mod = 01 - jeden z argumentów jest w pamiÄ™ci, wystÄ™puje jedynie mniej znaczÄ…cy bajt przemieszczeni* przemieszczenie to jest rozszerzene do liczby 16-bitowej ze znakiem;

mod = 10 - jeden z argumentów jest w pamięci, przemieszczenie jest określone dwoma kolejnymi bajtai

w rozkazie;

mod = 11 - oba argumenty to rejestry.

Tablica 5.3. Adres efektywny jako funkcja mod i r/m

r/m

00

mod

01

10

11

w = 0

w= 1

Standardowy

rejestr

segmentowy

000

[BX] + [SI]

[BX] + [SI) + + liczba 8

[BX] + [SI] + + liczba 16

AL

AX

DS

001

(BXJ + [DI|

[BX] + (DI] + + liczba 8

[BX] + (DI] + -Å‚- liczba 16

CL

CX

DS

010

[BP] + [SI]

[BP] + [SI] + + liczba 8

[BP] + [SI] + -f liczba 16

DL

DX

SS

011

[BP] + [DI]

[BP] + [DI| + +liczba 8

[BP] + [DI] + -Hiczba 16

BL

BX

SS !

100

[SI]

[SI] + liczba_8

[SI] + liczba_16

AH

SP

DS

101

[DI]

[DI] -f liczba 8

[DI] + Iiczba_16

CH

BP

DS

110

liczba 16

[BP] + liczba 8

[BP] + liczba_16

DH

SI

SS

111

[BX]

[BX] + liczba_8

[BX] + iiczba_16

BH

DI

DS

liczba_8b - przemieszczenie wyrażone liczbą 8-bitową. liczba__16b - przemieszczenie wyrażone liczbą 16-bitową.



5.1. Informacje ogólne

Znaczenie kodów poszczególnych pól mody reg i r/m pokaJ Adres efektywny argumentu w pamiÄ™ci operacyjnej jest funkcjÄ… mod i r/m i jest obliczany w sposób podany w tabl. 5.3. Do obliczenia adresu fizycznego w pamiÄ™ci operacyjnej, ukÅ‚ad BI U wykorzystuje obliczony adres efektyw ny (offset ) oraz zawartość odpowiedniego rejestru segmentowego. Standardowe przyporzÄ…dkowanie rejestrów segmentowych jest takie, jak pokazano w tabl. 5.3. Można zauważyć, że jest uwzglÄ™dniany prawie zawsze rejestr DS, z wyjÄ…tkiem sytuacji, gdy w obliczaniu adresu efektywnego uczestniczy rejestr BP. W tym przypadku standardowym rejestrem segmentowym jest SS. Jeżeli do obliczenia adresu efektywnego chcemy użyć innego niż standardowego rejestru segmentowego, deklarujemy to w postaci odpowiedniego przedrostka umieszczonego przed argumentem.

Tablica 5.4. Kody rejestrów segmentowych

Sreg

Rejestr segmentowy

00

ES

01

CS

10

SS

11

DS

Przykład

ES:ZMIENNA[BP] DS:[BP] + [SI] CS:lBX + SI+6]    4

Przedrostek ten określa rejestr segmentowy i wytwarza dodatkowy bajt w kodzie rozkazu (ang. segment override prefbc) o następującym formacie

OOlSrcgllO    ,    r'' W*®**

przy czym Sreg oznacza 2-bitowy kod rejestru segmentowego (tabl. 5.4).

5.1.2. Czas wykonywania rozkazów

Czas wykonania rozkazu zależy nie tylko od czÄ™stotliwoÅ›ci zegara, ale także od liczby taktów potrzebnych na wykonanie danego rozkazu oraz liczby taktów dodatkowych, potrzebnych na obliczenie (jeżeli potrzeba) efektywnego adresu argumentu. Liczba dodatkowych taktów zależy od sposobu obliczania adresu efektywnego (tabl. 5.5). Dla .zegara 5 (4.77) MHz czas realizacji jednego taktu maszynowego wynosi okoÅ‚o 200 ns (210 ns), natomiast dla zegara 8 MHz - ok. 125 ns.

Tablica S.5 Takty dodatkowe przy

tresowanie argumentu

Przykład

Liczba dodatkowych taktów

bezpośredniego 16-bitowego offsetu

P A

MOV AL ZMIENNA MOV TABLICA. BX

6

oÅ›redmo przez rejestr azowy lub indeksowy brednio przez rcjest bazowy lub '/'deksowy z przemieszczeniem Â°Å›rednio przez rejestr az°wy i indeksowy

MOV DX, MOV CH.

[DI]

[BX|

5

MOV DX. MOV CH,

ZMIENNA[DI) TABLICA[ BX]

9

MOV DX, MOV CII.

[BP SI] [BX + DI|

7 lub 8


Wyszukiwarka

Podobne podstrony:
assembler?86? 0 20 2. Mikroprocesory 8086/8088 Znacznik kierunku DF jest wykorzystywany przy wykon
assembler?86? 1 122 5. Rozkazy mikroprocesorów 8086/8088 OR DX, STALA_EQU OR CL, 8   &nb
assembler?86? 1 142 5. Rozkazy mikroprocesorów 8086/8088 MOV AL, STD ; DF«-1 SCASB JE STOP CM
assembler?86? 1 162 5. Rozkazy mikroprocesorów 8086/8088 INT - skok do podprogramu obsługi przerwa
assembler?86? 1 22 2. Mikroprocesory 8086/8088 jest niezależny od innych segmentów i jest programo
assembler?86? 0 5. Rozkazy mikroprocesorów 8086/80885.1. Informacje ogólne Mikroprocesory 8086 i 8
assembler?86? 2 84 5. Rozkazy mikroprocesorów 8086/8088 Pośrednio przez rejestr bazowy i indeksowy
assembler?86? 3 86 5. Rozkazy mikroprocesorów 8086/8088 LES - załadowanie adresu logicznego do wsk
assembler?86? 4 88 5. Rozkazy mikroprocesorów 8086/8088 MOV ZMIENNAfSI], ES MOV X[BP + DI + 1], SS
assembler?86? 5 W 90    5. Rozkazy mikroprocesorów 8086/8088 PrzykÅ‚ady PUSH ZMIENNA
assembler?86? 6 92    5. Rozkazy mikroprocesorów 8086/8088 Zamiana miejscami zawart
assembler?86? 8 % 5. Rozkazy> mikroprocesorów 8086/8088 Przykład LA HF NOT AH SAHF; znaczniki s
assembler?86? 9 98 5. Rozkazy mikroprocesorów 8086/8088 Pojęcie rozpakowanego i normalnego kodu BC
assembler?86? 2 104 5. Rozkazy mikroprocesorów 8086/8088 Przykłady 104 5. Rozkazy mikroprocesorów
assembler?86? 3 106 5. Rozkazy1 mikroprocesorów 8086/8088 SBB (ang. subtract byle or word with bor
assembler?86? 4 108 5. Rozkazy mikroprocesorów 8086/8088 PrzykÅ‚ady DEC SI DEC AX    
assembler?86? 7 114    5. Rozkazy mikroprocesorów 8086/8088 Mnożenie zawartoÅ›ci aku
assembler?86? 9 118 5. Rozkazy mikroprocesorów 8086/8088 MOV AL, 8FH CBW ???? ???? 1111 1111 1000
assembler?86? 2 124 5. Rozkazy mikroprocesorów 8086/8088 Rozkaz realizuje logiczne mnożenie odpowi

więcej podobnych podstron