Hauptspeicher adressieren

Guten Tag,

Hoffe ich bin hier richtig.
Unzwar habe ich folgende Frage.

Damals hatte der Intel 8086 eine Parameterlänge von 21 bit.

Die frage ist nun wieviel Hauptspeicher man damit adressieren konnte?

desweiteren intressiert mich wieviele maschienen instruktionen möglich gewesen wären wenn der operationscode noch zusätzlich 4 bits gehabt hätte.

habe leider ein wenig den zusammenhang zw. hauptspeicher, prozessor und assembler verlohre…

unzwar dachte ich bis jetzt, dass mir die bit zahl angibt wieviele „wörter“ ich darstellen kann. nun sehe ich, dass dieses mir auch angibt wieviele adressen ich im hauptspeicher habe… heisst müsste doch dann gleich sein. der assembler hat dann die gleiche bit zahl wie prozessor oder andere? was der assembler macht in soweit klar jedoch komme ich mit bits und bytes bischen durcheinander.

mfg

Die frage ist nun wieviel Hauptspeicher man damit adressieren
konnte?

unzwar dachte ich bis jetzt, dass mir die bit zahl angibt
wieviele „wörter“ ich darstellen kann. nun sehe ich, dass
dieses mir auch angibt wieviele adressen ich im hauptspeicher
habe…

Hi,

so etwa ist das auch, deswegen (wegen des benötigten Speichers) gibt es keine 8086er mehr, sondern 32 und 64 bit-Prozessoren. Mit einer 32bit-Adresse kann man 2^32 Byte addressieren (PC-Speicher ist immer noch byte-weise organisiert) und mit einem 64Bitter eben 2^64 Byte. Allerdings gab es anfangs keinen PC mit soviel Speicher, also waren nicht alle 32 Adressen als Output herausgeführt. Dadurch waren dann bestimmte 32bit-Architekturen beschränkt auf weniger als 4 GByte Speicher. Und heute gibt es meines Wissens keine Boards mit allen 64 Adress-Leitungen.

Gruss Reinhard

Hallo Fragewurm,

Damals hatte der Intel 8086 eine Parameterlänge von 21 bit.

Die frage ist nun wieviel Hauptspeicher man damit adressieren
konnte?

Das stimmt so nicht ganz.

Physikalisch hatte der 8086 20 Adressleitungen herausgeführt, konnte als 1 MBiyte Speicher adressieren.

Intern wurde die Adresse mit 24 Bit berechnet.
Und die Adressparameter bei den Befehlen waren 2x 16Bit lang.
Eine Speicheradresse bestand aus 16Bit Offset und 16 Bit Segment.
Das Segment wurde mit 256 Multipliziert und dann der Offset addiert.
Die CPU selbst konnte also eigentlich nur 64KiByte adressieren, der Adressbereich wurde eigentlich nur mit einer einfachen MMU aufgebohrt.

Beim IBM-AT gab es dann ein kleines Problem wegen dem 80286.
Der 286 hatte alle 24 Adressleitungen herausgeführt und konnte somit die ganzen 16MiByte Speicher adressieren.
Wenn beim 8086 bei der Adressberechnung ein Übertrag auf A20 (das 21te Adressbit) erfolgte, adressierte er in Wirklichkeit die ersten 64KiByte. Der 80286 adressierte in diesem Fall den Speicher im Bereich über 1 MiByte.

Beim IBM-AT hat man das dann so gelöst, dass man das „A20-Gate“ eingebaut hatte. über den Keyboard-Controller konnte man damit A20 abschalten.

MfG Peter(TOO)