Freie Scripten und Tutorials erstellt von Roland Geyer       Startseite | Gästebuch

Adressierung

Speicher:
Basis: Eine Speicherzelle 1byte = 8bit (256).
Jede Speicherzelle besitzt eine Adresse.

Das Register eines 8086 ist 1 word (= 2 bytes = 4 digits = 16 bit) lang. Damit können 65.536 Adressen angesprochen werden.

Memory (Speicherzelle) ist außerhalb des 8086, die Register innerhalb des Chips.

Wie wird die CPU benutzt:
Zuerst wird die Adresse der Speicherzelle in den 8086 gebracht.
Dann wird dem 8086 angeschafft, was er mit den Inhalt dieser Speicherzelle tun soll.

Um mehr als 65.536 Adressen ansprechen zu können, benützt man als Zwischenglied die Segmente, die jedes für sich auf die Adresse eines Speichers verweisen.

Alle 16 bytes (0 - A) startet eine neue Adresse im Segment. Die Segmentgröße beträgt max. 64kb (16*4*1000).

Beispiel für Segmentnummern der Startadressen

Segment Startadresse
decimal hexadecimal decimal hexadecimal

0

0

0

00

1

1

16

10

2

2

32

20

3

3

48

30

4

4

64

40

200

C8

3200

C80

21694

54BE

347104

54BE0

51377

C8B1

822032

C8B10

Unter "offset" versteht man eine Zahl, die angibt wieviele bytes vom Beginn des Segmentes an vorhanden sind.

ZB: memory address 55 (37h)

55%16=geht 3x,rest 7

Segment Offset
  decimal hex

0

55

37

1

39

27

2

23

17

3

7

7

Die Adresse 55 kommt in 4 unterschiedlichen Segmenten vor, die jede als relative Adresse angesprochen werden kann.

Bei der Programmierung wird ein Segment für Maschinencode, ein Segment für permanente Daten und ein Segment für temporäre Daten verwendet.

Beispiel:
Eine Nummer ist 4 bytes lang: 2D F5 33 0A
Die Speicheradressierung startet mit offset 264.

Dies ergibt 2 Möglichkeiten

Speicheradresse Möglichkeit 1 Möglichkeit 2
hight memory: 267 left-most
(most significant) byte: 0A
right-most
(least significant) byte: 0A

266

F5

33

265

33

F5
low memory: 264 right-most
(least significant) byte: 0A
left-most
(most significant) byte: 0A

Das least significant byte ist immer (intel 8086, 8087) im low memory, bzw. jede Nummer in einer Adresse startet im least significant byte.

Weitere freie Tutorials: Rhetorik & Kommunikation Typografie & Layout Bildbearbeitung mit Photoshop oder GIMP Vektorgrafik mit Illustrator, FreeHand, Corel Draw oder Inkscape Layout mit Indesign oder Scribus Druckvorstufe GoLive Html JavaScript Flash & ActionScript Director & Lingo Assembler DOS Java objektorientiert Perl Word Excel Access PowerPoint Outlook Betriebssystem