mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik 68000 Adressierung


Autor: Artur Lauk (arser05)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Welchen haben sie denn?

Autor: Udo R. S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sofern mich meine jetzt 20 Jahre alten ungenutzten Kenntnisse nicht 
trügen ist das '#' Zeichen für immediate Werte und die Adressierung ist 
immer
MOVE Source, Destination

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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)

Autor: juh (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Artur Lauk (arser05)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Prozessor ist der 68000 von Motorola(Freescale).
Falls Sie den Simulator meinen, ist es der hier:

http://www.xrmx.com/solutions/software/68k-fe/


@ Udo:

Ich habe mich wahrscheinlich missverständlich ausgedrückt - ich meine 
dass die Register unterschiedlichen Inhalt haben, obwohl mit ihnen im 
Grunde die gleichen Operationen durchgeführt werden.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, und, welche?

Autor: Artur Lauk (arser05)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Den Inhalt einer Speicherstelle in eine andere kopieren. Aber das 
scheint bei Adressen und Registern unterschiedlich zu funktionieren.

Autor: Jörg Lehmann (nuckey)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
lass ma route # weg

ick wees zwar nich watn fürn assembler verwendest,aba soweit wie ick ma 
erinnere aus meener amiga zeit gab dit keen # um konstanten oda adressen 
in de register zu schreiben.


mfg jörg

Autor: Jörg Lehmann (nuckey)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
sry gibt dit anscheinend doch

Autor: Artur Lauk (arser05)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@juh:

der Inhalt der Register am Anfang des Programms ist 0.

Es stimmt: In Register D0 steht die $00000011 und in D1 die $00000044

Danke, jedenfalls.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.