Datenverarbeitung


Stand: 2004-03

Thomas Mertin
Netzwerk- und Elektrotechnik

D-41334 Nettetal

16-Bit-Systeme (PC-Technik)

Prozessortypen:

 

8086

8088

80286

Datenbus

16 Bit

8 Bit

16 Bit

Adreßbus

20 Bit

20 Bit

24 Bit

Bemerkung

Multiprozessorfähig

XT, DOS Einsatz

AT, Multitaskingfähig, Protected Mode

nach oben

1. Anschluß des 8086 Prozessor

Pin

Signal

Funktion

Ein-/Ausgang

16...2, 39

AD0...AD15

Adreß- und Datenbus

Zweiweg, Tristate

38, 37

A16/S3, A17/S4

Adresse und Segment

Output, Tristate

36

A18/S5

Adresse und Interruptfreigabe

Output, Tristate

35

A19/S6

Adresse und Status

Output, Tristate

34

/S7

Speicherblock und Status

Output, Tristate

32

Lesesignal

Output, Tristate

22

READY

WAIT-Anforderung

Input

23

Abfrage

Input

18

INTR

Interruptanforderung

Input

17

NMI

Interruptanforderung

Input

21

RESET

Reset

Input

19

CLK

Clock

Input

+) 

MN/

0 Volt

 

+) 

Status

Output, Tristate

+) 

Buszugriff

Zweiweg, Tristate

+) 

QS0, QS1

Warteschlange

Output

+) 

Buszugriff

Output, Tristate

33

MN/

+5 Volt

 

28

M/

Speicherzugriff / Ein-/Ausgabe

Output, Tristate

29

Schreibsignal

Output, Tristate

25

ALE

Address Latch Enable

Output

27

DT/

Data Transmit / Receive

Output, Tristate

26

Data Enable

Output, Tristate

24

Interrupt Acknowledge

Output, Tristate

31

HOLD

HOLD-Anforderung

Input

30

HLDA

Hold Acknowledge

Output

40, 20/1

Vcc, GND

+5 Volt, 0V

Output, Tristate

+) Signale im Maximum Mode

AD0...AD15: 16-Bit gemultiplexter Adreß-/ Datenbus
ALE: Adress Latch Enable
A16...A19: 20-Bit Adreßbus
, , M/: Steuersignale
HOLD, HLDA: wie 8085 (DMA-Betrieb)
CLK: wie 8085 (wird angesteuert vom Taktgenerator 8284)
RESET: wie 8085 (Startadresse: FFFF0H)
READY: wie 8085 (Wait-State, Wartezyklen für langsamen RAM)
INTR, : ähnlich 8085
NMI: Non Maskable Interrupt (entspricht TRAP beim 8085)

Neue Pins
: Nur bei Multiprozessorbetrieb
: Data Enable, Freigabe für Datenbustreiber
DT/: Data Transmit / Receive, Umschaltung der Datenrichtung
MN/: Minimum / Maximum Mode
: Bus High Enable
Dieses Signal wird Low, wenn ein Zugriff über die Datenleitungen D8 bis D15 erfolgt (High Byte); steuert den Zugriff auf den Speicher und auf Ein- und Ausgabeeinheiten. Es wird beschaltet wie ein zusätzliche Adreßleitung.

Funktionsblockschaltbild

BIU = Bus Interface Unit
EU = Execution Unit

Queue = "Warteschlange" für nächste Befehle

Pipeline = "parallel" Abarbeitung von Befehlen (je Befehl 1 Taktzyklus)


nach oben

2. Register des 8086 Prozessor

Der 8086 verfügt über vier 16 Bit breite Hauptregister, zwei 16 Bit Zeigerregister, zwei 16 Bit Indexregister, einen 16 Bit Programmzähler, vier 16 Bit Segmentregister und ein 16 Bit Statusregister. Diese dem Programmierer zugängliche Teile des inneren Aufbaus lassen sich durch das folgende Schema weitergeben:

8085

8 Bit

8 Bit

16 Bit

A

AH

AL

AX

H, L

BH

BL

BX

B, C

CH

CL

CX

D, E

DH

DL

DX

SP

SP

Stapelzeiger

 

BP

Base-Pointer

 

 

 

 

SI

Source Index

 

DI

Destination Index

 

 

 

PC

PC

Programmzähler

 

 

 

 

CS

Codesegmentregister

 

DS

Datensegmentregister

 

SS

Stapelsegmentregister

 

ES

Extrasegmentregister

 

 

 

 

PSW

Statusregister

Zuweisung: MOV AX,1234 = MOV AL,34; MOV AH,12
direkte Adressierung: MOV AL,[0200]
8-Bit, indirekt: MOV AL,[BX]
16-Bit, indirekt: MOV AX, [BX]

Die Hauptregister (Allzweckregister)

16 Bit

8 Bit

8 Bit

AX

AH

AL

BX

BH

BL

CX

CH

CL

DX

DH

DL

Der Begriff Hauptregister soll besagen, daß arithmetische, logische und Ein-/Ausgabeoperationen hauptsächlich die Inhalte dieser Register manipulieren. Daneben hat jedes der Register noch eine oder mehrere Sonderfunktionen. Jedes dieser vier 16-Bit Register stellt eine Kombination von zwei 8-Bit Registern dar.

Durch diese Aufteilung lassen sich 8-Bit Operationen mit 8-Bit Operanden durchführen, ohne daß auf die 16-Bit Arithmetik zurückgegriffen werden muß. Der Vorteil besteht darin, daß 8-Bit Operationen in der Regel weniger Zeit benötigen und daß Speicherplätze eingespart werden. Soll z.B. ein Zähler von 200 bis 0 abwärts gezählt werden, dann genügt für den Vorgang ein 8-Bit Register.

Das AX-Register dient vorwiegend als Akkumulator. Es hat folgende besonderen Eigenschaften:

  1. Ein- und Ausgabedaten wandern durch das AX-Register.
  2. Stehen in Befehlen unmittelbar adressierte Operanden, dann bringt die Abwicklung der jeweiligen Operation über das AX-Register in der Regel eine Einsparung an Speicherplätzen.
  3. Einige arithmetische Operationen und einige Stringoperationen können nur über das AX-Register abgewickelt werden.

Das BX-Register fungiert u.a. als Basis-Adressregister, d.h. sein Inhalt wird u.a. bei der Bildung von Speicheradressen verwendet.

Das CX-Register wird u.a. auch als Zählerregister verwendet. Der Inhalt dieses Registers wird bei der Ausführung von Stringbefehlen, die wiederholt werden, und bei Verschiebeoperationen um mehr als eine Bitposition abwärts gezählt.

Das DX-Register enthält bei einigen Ein- und Ausgabeoperationen die Adresse des jeweiligen Ein-/Ausgabekanals. Diese Funktion kann kein anderes Register übernehmen. Die zweite Sonderaufgabe des DX-Registers besteht in der Aufnahme von Operanden und Ergebnisse bei Multiplikationen und Divisionen.

Die Zeigerregister

Über die Zeigerregister SP und BP werden die Speicherplätze im Stapelsegment adressiert. SP steht für Stack Pointer, BP steht für Base Pointer. Außerdem können in ihnen Operanden für 16-Bit breite arithmetische und logische Operationen gespeichert werden.

Das SP-Register, der Stapelzeiger, ermöglicht im Speicher den Aufbau eines Stapels. Die Adressierung der Speicherplätze, welche den Stapel enthalten, erfolgt durch das SP-Register in Verbindung mit dem SS-Register.

Das BP-Register erlaubt den Zugriff zu Daten im Stapelsegment, typischerweise zu Parametern, die über den Stapel weitergegeben werden. Der Inhalt des BP-Registers wird typischerweise ebenfalls mit dem Inhalt des SS-Registers kombiniert.

Die Indexregister

Über die Indexregister SI und DI werden typischerweise Speicherplätze adressiert, welche Stringelemente enthalten. SI steht für Source Index, DI steht für Destination Index. Außerdem können in den Indexregistern wie den Zeigerregistern Operanden für 16-Bit breite arithmetische und logische Operationen gespeichert werden.

Der Programmzähler

Der Programmzähler enthält immer die Adresse desjenigen Befehls im durch das CS-Register definierten Codesegment, der als nächster ausgeführt wird. PC steht für Program Counter (auch der Begriff Instruction Pointer ist geläufig):

Die Segmentregister

Bei der Berechnung einer Speicheradresse wird, außer bei der Adressierung von Interruptvektoren, der Inhalt eines der vier Segmentregister einbezogen. Jedes Segmentregister definiert im Speicher des 8086 einen 64k-Bereich.

CS ist die Abkürzung für Codesegment. Vor dem Einlesen eines Befehls wird der Inhalt des CS-Registers mit dem Inhalt des Programmzählers kombiniert um die Adresse des Speicherplatzes, welcher den Befehl enthält, zu ermitteln.

DS steht als Abkürzung für Datensegment. Mit wenigen Ausnahmen werden alle Operanden relativ zum Inhalt dieses Registers adressiert. Die Ausnahmen sind:

  1. Adressen im Stapel werden mittels des Inhalts des SS-Registers gebildet.
  2. Stringbefehle, welche zur Bildung von Operandenadressen den Inhalt des DI-Registers verwenden, verwenden als Segmentbasisadresse den Inhalt des ES-Registers.

SS ist die Abkürzung für Stack Segment. In allen Operationen, welche Adressen unter Verwendung des Inhaltes des SP-Registers oder des BP-Registers bilden, wird bei der Bildung des absoluten Adresse der Inhalt des SS-Registers verwendet. Deshalb werden alle stapelorientierten Befehle PUSH, POP, CALL, RET und INT in Verbindung mit dem SS-Register ausgeführt.

ES ist die Abkürzung für Extra Segment. Gewisse Stringbefehle verwenden bei der Berechnung der Operandenadresse den Inhalt des DI-Registers. Die so berechneten Adressen werden relativ zum Inhalt des ES-Registers verwendet.

Typischerweise beinhaltet die Ausführung eines bestimmten Befehls die Einbeziehung eines bestimmten Segment Registers. Doch gibt es ein Verfahren, das es ermöglicht, diese Regel in vielen Fällen außer Kraft zu setzen.

Das Statusregister

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

0

Bit Nr.

 

 

 

 

O

D

I

T

S

Z

 

A

 

P

 

C

Statusregister

O = Overflow (Überlauf)
D = Direction (D-Status)
I = Interrupt (I-Status)
T = Trap (T-Status)
S = Sign (Vorzeichen)
Z = Zero (Null)
A = Auxiliary Carry (Hilfsübertrag
P = Parity (Parität)
C = Carry (Übertrag)

Die Statusbit für Null, Übertrag, Hilfsübertrag, Überlauf und Vorzeichen funktionieren wie allgemein üblich:
Das Übertragstatusbit C zeigt einen Übertrag aus dem höchstwertigen Bit nach arithmetischen Operationen an. Außerdem wird sein Wert durch einige Verschiebebefehle verändert. Das Überlaufstatusbit O verknüpft nach arithmetischen Operationen Überträge aus den höchstwertigen Bit durch exklusives ODER. Es zeigt an, daß bei arithmetischen Operationen, welche die Vorzeichen der Operanden berücksichtigen, dem Betrage nach zu große Zahlen verwendet wurden.

Das Vorzeichenstatusbit S gibt nach arithmetischen Operationen das Vorzeichen an, d.h. den Wert des höchstwertigen Bit. Unter der Annahme, daß eine die Vorzeichen berücksichtigende arithmetische Operation ausgeführt wurde, bedeutet 0 ein positives und 1 ein negatives Resultat.

Das Hilfsübertragstatusbit A zeigt einen Übertrag aus Bit 3 an nach 8 Bit breiten Operationen.
Subtraktionen werden in Zweierkomplement Arithmetik ausgeführt. Die Bedeutung des Übertragstatusbit wird dabei invertiert. D.h., nach einer Subtraktion enthält das Übertragstatusbit den Wert 1, wenn kein Übertrag aus den höchstwertigen Bit erfolgte, und den Wert 0, wenn ein Übertrag aus dem höchstwertigen Bit erfolgte. In diesem Fall signalisiert eine 1 also, daß geborgt wurde.

Das Paritätstatusbit P wird auf 1 gesetzt, wenn als Ergebnis irgendeiner Operation die acht niederwertigen Binärstellen durch eine gerade Zahl von Einsen besetzt sind. Eine ungerade Zahl von Einsen bewirkt, daß das Paritätstatusbit auf 0 gesetzt wird..

Das Nullstatusbit Z wird auf 1 gesetzt, wenn das Ergebnis einer Operation der Zahlenwert 0 ist. Ist ein Ergebnis ungleich 0, dann wird das Statusbit auf 0 gesetzt.

Der Wert des D-Statusbit bestimmt, ob bei der wiederholten Ausführung von Stringbefehlen die Inhalte des SI-Registers und/oder des DI-Registers automatisch aufwärts oder abwärts gezählt werden. D = 0 bedeutet, daß die Inhalte aufwärts gezählt werden. Die Elemente einer Zeichenkette werden also bei dem Element in dem Speicherplatz mit der niederwertigsten Adresse beginnend verarbeitet. D = 1 bedeutet, daß die Inhalte der Indexregister automatisch abwärts gezählt werden. Das bedeutet, daß die Elemente einer Zeichenkette bei der höchsten Speicheradresse beginnend verarbeitet werden.

Das I-Statusbit stellt einen Schalter für einen Teil der Interruptlogik dar. Damit sperrbare Interrupt akzeptiert werden können, muß sein Wert 1 sein. Hat das Interruptstatusbit den Wert 0, dann werden sperrbare Unterbrechungsanforderungen nicht zugelassen.

Das T-Statusbit wird als Hilfe beim Testen und Korrigieren von Programmen verwendet. Es schaltet sozusagen die Betriebsart "Einzelschrittweise Ausführung" ein.

nach oben

3. Bussystem des 8086 (Minimum Mode)

Belegung des Slots beim PC (8 Bit)

Signal

Rückwand

Signal

0V

B1

A1

RESET

B2

A2

D7

+5V

B3

A3

D6

IRQ2

B4

A4

D5

-5V

B5

A5

D4

DRQ2

B6

A6

D3

-12V

B7

A7

D2

0WS od. Frei

B8

A8

D1

+12V

B9

A9

D0

0V

B10

A10

I/O-READY

B11

A11

AEN

B12

A12

A19

B13

A13

A18

B14

A14

A17

B15

A15

A16

DRQ3

B16

A16

A15

B17

A17

A14

DRQ1

B18

A18

A13

B19

A19

A12

CLK

B20

A20

A11

IRQ7

B21

A21

A10

IRQ6

B22

A22

A9

IRQ5

B23

A23

A8

IRQ4

B24

A24

A7

IRQ3

B25

A25

A6

B26

A26

A5

T/C

B27

A27

A4

ALE

B28

A28

A3

+5V

B29

A29

A2

Osc

B30

A30

A1

0V

B31

A31

A0

Belegung des Erweiterungs-Slots beim PC (16 Bit)

Signal

 

Signal

D1

C1

BHE

D2

C2

A23

IRQ10

D3

C3

A22

IRQ11

D4

C4

A21

IRQ12

D5

C5

A20

IRQ15

D6

C6

A19

IRQ14

D7

C7

A18

D8

C8

A17

DRQ0

D9

C9

D10

C10

DRQ5

D11

C11

D8

D12

C12

D99

DRQ6

D13

C13

D10

D14

C14

D11

DRQ7

D15

C15

D12

+5V

D16

C16

D13

Master

D17

C17

D14

0V

D18

C18

D15

nach oben

4. Speichersystem

Speicherbereich

Aufteilung des Speichers (physikalisch)

Zugriffsmöglichkeiten:

nach oben

5. Ein- und Ausgabeports

Adressbereich

Für die Port Adressierung werden 16 Adressleitungen verwendet (A0...A15). Verwendet werden nur A9...A9.

Beispiele:

direkte Adressierung:
MOV AL,0D
OUT 00,AL

IN AX,02

indirekte Adressierung (Port Adresse muß immer im DX-Register stehen):
MOV DX,0200
MOV AX,0A0D
OUT DX,AX

MOV DX,0002
IN AX,DX

Ausgabeport

16-Bit Ausgabeport mit Port-Adresse 0200H und 0201H

 

A15...A12

A11...A8

A7...A4

A3...A0

0200H =

0

0

0

0

0

0

1

0

0

0

0

0

0

0

0

x

Eingabeport

16-Bit Eingabeport mit Port-Adresse 0300H und 0301H

 

A15...A12

A11...A8

A7...A4

A3...A0

0300H =

0

0

0

0

0

0

1

1

0

0

0

0

0

0

0

x


  nach oben  
Seite zurück Inhalt Ende
  Startseite  


Nachricht an: webmaster@mertech.de