Nummerierung Speicherzelle

Hallo,

ich mach gerade ein Crashkurs in Asembler 32bit. Wie erfolgt die Speicherzellennummerierung (überthema Segmentregister). in dual oder in dezimal system schreibweise?
also logisch klingt für mich dual. weil wie sonst soll man es in ein register einspeichern. aber weil das buch hier keine klare aussage trifft, will ich trotzdem nochmal nachfragen.

so, schonmal danke für die schnelle antwort.

Pascal
 
Zuletzt bearbeitet:
Soweit ich mich erinnere wird das doch in Hexadezimale Schreibweise wiedergegeben.
 
Zu deiner Rechnerei du hast immer 2 Zustände 0 und 1 und musst das immer als Exponent nehmen z.B 2 hoch 8 bit oder 2 hoch 16 bit so kommst du auf die möglichen Zustände.
 
dh die segmentadresse bzw auch die offsetadresse bestehen jeweils nur aus 4 stellen?
steht die eine hexidezimal und die andere dual?
denn letzendlich benötigt man ja nur 65536*16
 
Zuletzt bearbeitet:
segmentadresse:offsetadresse ist eine logische Adresse die beide in Hex stehen und 4 stellig sind.
 
Zuletzt bearbeitet:
ich mach gerade ein Crashkurs in Asembler 32bit. Wie erfolgt die Speicherzellennummerierung (überthema Segmentregister).
Speicherzellennummerierung == Speicheradressierung?

in dual oder in dezimal system schreibweise?
Darstellung ändert nichts an dem eigentlichen Wert ;)
solange Du nicht so ein Teil hast:
keyboard-for-real-coder-big.jpg

in der Schreibweise, die Dein Assembler akzeptiert ;)
denn die ASCII/UTF/Foo-Codes, die in wirklichkeit in Deiner Assembly-Datei stehen, werden eh' vom Assembler in Opcodes umgewandelt, die die CPU "fressen" kann. Und mit einem Patch kann man auch römische Zahlendarstellung einkodieren ;)

dh die segmentadresse bzw. auch die offsetadresse bestehen jeweils nur aus 4 stellen?
Jeweils 16-bits ;)
 
dh da ist bereits ein rechner im einsatz der hex in dual umwandelt. jo, dann hab ichs soweit verstanden.

was mir nur noch spanisch vorkommt ist wie man mit einem 20ger bus jeweils 8bits gleichzeit also 1 byte durchschicken kann.

ps: ach ja noch was. dh bei 16bit und das jeweils 4 für die Segmentadresse und 4 für die Offsetadresse benötigt man mindestens 8 Register als Zeiger(?) oder stehen die Register in hex, somit benötigt man als Zeiger nur 2 Register. Also in meinem schlauen Buch wird von 16bit registern geredet.

http://books.google.de/books?id=hMk...nepage&q=segmentadresse offsetadresse&f=false S.29

ps: ich wünsch mal nen schönen abend und hoff morgen auf antworten
 
Zuletzt bearbeitet:
dh bit ist nicht immer nur 0 und 1.
Also, nochmal:
Wert ist ungleich Darstellung:
sei @ ein Apfel.

Sei dies ein Bild mit Äpfeln:
-------------
@@ @@ @@ @@ @@ @@
------------

das sind 0xC = 0d12 = 0o14 = 0b1100 = XII = Zwölf Äpfel in verschiedenen Darstellungen.
Es ist also erstmal egal, ob man 0xC oder 0d12 (oder 12d, je nach Assembler) schreibt - an der Menge ändert das nichts ;)
 
ps: ach ja noch was. dh bei 16bit und das jeweils 4 für die Segmentadresse und 4 für die Offsetadresse benötigt man mindestens 8 Register als Zeiger(?) oder stehen die Register in hex, somit benötigt man als Zeiger nur 2 Register. Also in meinem schlauen Buch wird von 16bit registern geredet.
Nachts ist kälter als draußen! (die Aussage ergibt keinen Sinn ;) ).

Die kleinste Einheit, aus der ein Register besteht, kann traditionsgemäß 2 Zustände annehmen. Oder umgekehrt: mehrere dieser Einheiten bilden dann ein Register, der X-Werte beihnalten (alternativ: X-Zustände) kann.

8 Einheiten, die je zwei Zustände (also einen Bit) annehmen können ergeben 2*2*2*2*2*2*2*2 = 2 hoch 8 = 256 mögliche Zustände, die dieses Register annehmen kann.
Es wäre, anders gesagt: ein 8-bit Register.
16 Einheiten (aka Bits) = 16-bit Register mit 2^16 (2 hoch 16) möglichen Zuständen.

Daher: ein "Zeiger" bzw. eine Speicheradresse besteht in diesem uralten, fast schon ausgestorbenen Modus, aus Segmentregister (16 Bit) und einem weiteren Register (auch 16 Bits)

Die echte, "reale"/lineare Adresse wird dadurch errechnet, dass der Wert im Segmentregister mit 16 multipliziert (im Dualsystem reicht nämlich ein einfaches "shifting"/Verschiebung um 4 Stellen nach links, was rechentechnich ziemlich günstig ist) und der Wert aud dem anderen Register hinzuaddiert wird.
Dadurch ergeben sich insgesamt 16 + 4 = 20 Bits, die für die Adressierung benutzt werden können. Und ja, das ist eine Krücke ;)

So. Beide Register sind 16-bits breit. Ergo: 16 Einheiten, die je 2 Zustände annehmen, können 2 hoch 16 = 0xFFFF (dez: 65536) Werte darstellen. Wie man die Werte konkret in dem jeweiligen Assembler schreibt ist ziemlich egal (früher war z.B auch oktale Schreibweise "IN").
 
Zurück
Oben