68000 Adressierung

OP #1564329
Lesenswert?
• ▲
▼
Hallo,

Ich habe einen 68000-Simulator gefunden und versuche gerade die 
Adressierung beim Motorola-Prozessor zu verstehen.

Mein Testprogramm sieht so aus:
************************************************

        ORG     $1000

        MOVE.L  #$11223344,$2000
        MOVE.L  #$11223344,D7
        MOVE.B  $2000,D0
        MOVE.B  D7,D1

************************************************

Wenn ich mir nun nach Ablauf des Programms die Register D0 & D1 ansehe, 
haben sie unterschiedlichen Inhalt.

Warum ist das so?
Persönliche Seite #1564355
Lesenswert?
• ▲
▼
Das sehe ich auch so.

Also:

  MOVE.L  #$11223344,$2000

0x11223344 wird in Adresse 0x2000 gespeichert

  MOVE.L  #$11223344,D7

0x11223344 wird im Register D7 gespeichert

  MOVE.B  $2000,D0

Der Inhalt des Bytes(!) an Adresse 0x2000 wird
im Register D0 gespeichert.

Das müsste 0x11 sein.

  MOVE.B  D7,D1

Das niederwertige Byte aus Register D7 wird im
Register D1 gespeichert.

Auch hier müsste es 0x11 sein.


(Ich mag mich irren; 's ist fast 20 Jahre her, daß ich das letzte mal 
was mit 68k-Assembler zu tun hatte)
Gast #1564360
Lesenswert?
• ▲
▼
Hallo,

der erste Befehl transferiert das Langwort (4 Bytes) $11223344
in den Speicher ab Adresse $2000 bis $2003,
wobei das höchstwertige byte ($11) in $2000
und das 'least signif.' ($44)      in $2003 'landet'.

Dies ist so, da der gute alte 68K eine solche Speicherfolge verwendet,
anders als z. B. seine Zeitgenossen x86, die die Bytes in umgekehrter 
Reihenfolge im Speicher ablegen.

wenn nun später das EINE Byte von $2000 in den unteren Teil des 
Registers D0 geladen wird, landet dort die $11, (im Vergleich zu $44 in 
D7->D1)

und dann können sich natürlich auch die durch die Byte-Operationen 
unbeeinflussten oberen 24 Bit der Register D0 u. D1 ja vorher sowieso 
schon unterschieden haben...

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.