Forum: Mikrocontroller und Digitale Elektronik Adresse a:b??


von Joachim (Gast)


Lesenswert?

Hi! Ich wollt mal fragen, ob mir jemand sagen kann, was eigentlich die
Adresse a:b ist.
Wiso haisst das a:b und was bedeuted das a und was das b. ? Für eine
adressierung würde doch eine einzige adresse reichen.

MfG Joachim

von Benedikt (Gast)


Lesenswert?

Segment:Adresse
Ist zur kompatibilität zu alten CPUs so gemacht.
Das Segment hat immer 16Byte Schritte und die Adresse 1Byte Schritte.

von Rufus T. Firefly (Gast)


Lesenswert?

Diese Schreibweise gibt es beim x86-Realmode-Assembler. Die
x86-Prozessoren verwenden segmentierten Speicher, bei denen sich
Adressen aus Segment und Offset innerhalb des Segments zusammensetzen.
Segmente sind 64 kByte groß; alle 16 Bytes des physikalischen Speichers
beginnt ein neues Segment.
Mit dem Doppelpunkt werden Segment und Offset voneinander getrennt.

Die Adresse 1234:5678 (hexadezimale Notation angenommen!) verweist also
auf die physikalische Adresse 179B8 (12340 + 5678).

Glücklicherweise wird so ein Murks sonst nirgends angewendet.

von Thomas (Gast)


Lesenswert?

>Glücklicherweise wird so ein Murks sonst nirgends angewendet.

C166 ?
Ist sogar eher noch schlimmer =)

von Rufus T. Firefly (Gast)


Lesenswert?

Argh! Der segmentiert auch? Igittigitt. Würd' ich noch nicht mal mit
'ner PLCC-Zange anfassen. Spei.

von Joachim (Gast)


Lesenswert?

Das heisst ich kann über das segment 0x1234 die Adressen (vom offset
0x1234) 0 - 8 ansprechen (d.h. 0x1234 - 0x123C), bei einer
Adressbusbreite von 3 bit. Das würde bedeuten, dass ich mit der adresse
über die grenzen eines segments hinaus gehen kann.  Oder ?

von Benedikt (Gast)


Lesenswert?

Ist zwar vielleicht etwas Offtopic, aber kennt jemand den C196 ?
Das ist eine Weiterentwicklung vom x86er mit 3 statt 2 Paramtern bei
jedem Befehl. Schönes Teil, nur leider finde ich dazu keinen Assembler.

von Rufus T. Firefly (Gast)


Lesenswert?

@Joachim: Beim x86-Realmodus sieht das etwas anders aus.

Aus zwei 16-Bit-Teilen (Segment und Offset) wird eine 20-Bit-Adresse
gebildet:

Segment:  SSSS-
Offset:   -OOOO

Die Adresse 1234:0008 ist das gleiche wie die Adresse 1200:0348
oder auch 1000:2348, die resultierende physikalische Adresse lautet
12348 (alles in hexadezimaler Notation!).

Wie das beim C166 oder '196 ist, entzieht sich - anscheinend
glücklicherweise - gänzlich meiner Kenntnis.
Mein Beileid denen, die damit was anstellen müssen.

von Thomas (Gast)


Lesenswert?

@Joachim
Adressbusbreite von 3 Bit ? Reden wir hier wir wirklich von x86'ern ?

@Rufus
Also der C166 ist wirklich eher noch hässlicher als die x86er =)
Das Teil kann einen Adressraum von 16MByte, hat aber nur 16 Bit
Register. Er kennt eine unsegmentierte Betriebsart, da wir nur mit 16
Bit Offsets gearbeitet und es steht nur ein Adressraum von 64k zur
Verfügung. Lustig wirds in der segmentierten Betriebsart:
Zunächst einmal ist der Programmzähler aufgeteilt, die unteren 16 Bit
sind im IP, die oberen 8 Bit Im CSP (Code Segment Pointer).
Das geht ja noch, richtig lustig wirds beim Zugriff auf Daten.
Der Adressbereich ist zwar für Code und Daten derselbe, Adressen für
die Daten werden aber völlig anders gebildet:
- Die unteren 16 Bit der Adresse stehen z.B. in einem Register, über
das indirekt Adressiert wird. Davon sind aber nur die Bits 0-13 Teil
der Adresse, Bits 14 und 15 Addressieren dann eines der register DPP0
bis DPP3 (Data Page Pointer). Diese Register enthalten die oberen 10
Bits für die Datenadresse.
Der C166 kennt also 256 64KB grosse Codesegmente, und 1024 16KB grosse
Datapages.
Na, wenn das nicht hässlich ist, dann weiss ich auch nicht =)


Vom C196 hab ich noch nie was gehört.

von Sf2 (Gast)


Lesenswert?

@Thomas
Das war nur ein Beispiel. War leichter zu rechnen und hatte grad kein
taschenrechner neben mir liegen und dem von windows vertraue ich nicht
;)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.