Z80 - Little Endian

allgemeines Geplapper und Bla-Fasel
Antworten
Benutzeravatar
tokabln
User
Beiträge: 1463
Registriert: 10.11.2013, 00:24
Wohnort: D, Berlin (Mariendorf)

Z80 - Little Endian

Beitrag von tokabln » 28.05.2018, 16:17

Moin, Moin,

wahrscheinlich setzt die Wärme gerade meiner Gehirnprothese zu, aber ich bin gerade nach Little Endian / Big Endian / LSB und MSB total verwirrt. Daher entschuldigt Bitte die sicher dusselige Frage. Nachfolgendes Bild stellt meine Gedankenmuster zur Z80 Adressleitungszuordnung dar.

Stimmt das oder wenn nein wie ist es richtig:
Z80 Little endian.GIF
Z80 Little endian.GIF (4.92 KiB) 701 mal betrachtet
Lieben Gruß Torsten
BMZ MFA, ZX80Core, AX81, ZX81, ZX81NU, Spectrum+, Harlequin, VG8010, Amstrad NC100, Cambridge Z88, C64, C128D, Amiga 500 & 1200, Atari Portfolio, HP200LX, IBM PC5155, TP755c, T41, PS/2 (Model 40SX), PS/2E, Accura 101, Apple //e

Benutzeravatar
tofro
User
Beiträge: 985
Registriert: 14.06.2012, 16:45

Re: Z80 - Little Endian

Beitrag von tofro » 28.05.2018, 16:47

Entweder ich verstehe dein Bild nicht, oder du bist im Wald:

Es gibt keine Zuordnung zwischen den Adressleitungen und dem Bitwert, der da zu finden wäre. Adressleitungen adressieren Bytes, nicht Bits.

Beim Z80 stehen die höherwertigen Bits eines Bytes "links", das höherwertige Byte eines Words "rechts". Deswegen schreibt man die Adressleitungen normalerweise von 15 nach 0, die Datenbits von 7 nach 0, 16-bit-Werte mit dem niederwertigen Byte zuerst.

Dein Wert 125eH steht also als 5e12H im Speicher und in den Registern. Wenn du die Adressleitungen aber anschaust und in Hex umrechnest, steht da aber von A15-A0 125eh dran, wenn diese Adresse anliegt, oder andersrum, wenn der Z80 die Adressleitungen von 0 hochzählt (z.B. ein lineares Programm nach einem Reset ausführt), verändern sich die Bits "rechts zuerst".

Tobias
Zuletzt geändert von tofro am 28.05.2018, 17:00, insgesamt 1-mal geändert.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo

Benutzeravatar
tokabln
User
Beiträge: 1463
Registriert: 10.11.2013, 00:24
Wohnort: D, Berlin (Mariendorf)

Re: Z80 - Little Endian

Beitrag von tokabln » 28.05.2018, 16:59

Hallo Tobias,

na dann sind wir ja schon zwei :D

Also die Adresse 0x125E soll den einzelnen Adresslines zugeordnet werden.
Sprich: A0 - A3 | A4 - A7 | A8 - A11 | A12 - A15 sollen jeweils entsprechend der Adresse gesetzt werden.
Meine Zuordnung würde demnach wie folgt aussehen

A0 - A3 | A4 - A7 ...
E 5 ...

entsprechend müssten ja die Bits gesetzt werden A0 - A3 -> 0111 für E usw. -> den little endian sagt ja das LSB steht rechts aussen.

Das ist meine Denke...

Sprich bei 0xFFFF -> sind A0 bis A15 alle auf "1" gesetzt.
Lieben Gruß Torsten
BMZ MFA, ZX80Core, AX81, ZX81, ZX81NU, Spectrum+, Harlequin, VG8010, Amstrad NC100, Cambridge Z88, C64, C128D, Amiga 500 & 1200, Atari Portfolio, HP200LX, IBM PC5155, TP755c, T41, PS/2 (Model 40SX), PS/2E, Accura 101, Apple //e

Benutzeravatar
tofro
User
Beiträge: 985
Registriert: 14.06.2012, 16:45

Re: Z80 - Little Endian

Beitrag von tofro » 28.05.2018, 17:08

Ahjetztja. Deine Beispiele sind zu einfach....

A15-A0 geben genau die Binärzahl wieder, die als Adresse anliegt - Adresse "1" ist nur A0 gesetzt, Adresse "8000H" nur A15.

Stehen Adressen im Speicher óder in Registern, sind low- und hi-Byte dagegen vertauscht: für Adresse "1" steht im Register oder Speicher "00000001 00000000", für Adresse "8000H" eben "00000000 10000000"

Hilft das? Der Bus ist nicht little-endian. Sondern genauso, wie wenn du eine Binärzahl hinschreiben würdest.

Tobias
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo

Benutzeravatar
tokabln
User
Beiträge: 1463
Registriert: 10.11.2013, 00:24
Wohnort: D, Berlin (Mariendorf)

Re: Z80 - Little Endian

Beitrag von tokabln » 28.05.2018, 18:01

Genau das wollte ich wissen, daß der Bus nicht little endian ist. Dann stimmt meine gerade angefangene Schaltung schon mal an diesem Punkt.
Das wird ja dann für die Datenleitungen genauso sein.

Klasse und Danke...

Torsten
Lieben Gruß Torsten
BMZ MFA, ZX80Core, AX81, ZX81, ZX81NU, Spectrum+, Harlequin, VG8010, Amstrad NC100, Cambridge Z88, C64, C128D, Amiga 500 & 1200, Atari Portfolio, HP200LX, IBM PC5155, TP755c, T41, PS/2 (Model 40SX), PS/2E, Accura 101, Apple //e

Benutzeravatar
tokabln
User
Beiträge: 1463
Registriert: 10.11.2013, 00:24
Wohnort: D, Berlin (Mariendorf)

Re: Z80 - Little Endian

Beitrag von tokabln » 28.05.2018, 18:42

Sodele...

nur noch zum Abschluß falls andere da auch drüber stolpern wie ich es heute tat.

Adress- / Datalines und ihre dazugehörigen Bits sind nicht nach little endian belegt sondern wie folgt.
Als Beispiel wird hier die Adresse 0x8001 und das Datenbyte 0x81 verwendet. Danach ist ein Beispiel
gegeben um die Verarbeitung von Datenbytes im little endian Format aufgezeigt.

Z80 Address & Data Line Bit values.GIF
Kleine Korrektur und Ergänzung: 29.05.2018 / 01:49
Z80 Address & Data Line Bit values.GIF (7.76 KiB) 659 mal betrachtet
Lieben Gruß Torsten
BMZ MFA, ZX80Core, AX81, ZX81, ZX81NU, Spectrum+, Harlequin, VG8010, Amstrad NC100, Cambridge Z88, C64, C128D, Amiga 500 & 1200, Atari Portfolio, HP200LX, IBM PC5155, TP755c, T41, PS/2 (Model 40SX), PS/2E, Accura 101, Apple //e

Antworten