6811 Assemblerfrage

Gast #2592665
Hallo,
ich hoffe einer von euch kann sich noch an seine Motorola 6811 Zeit 
erinnern.

Momentan beschäftige ich mich mit IDA Aufgrund von Anpassungen eines 
alten System. Dafür muss züsatzlich zur Logik mich auch mit der Mnemonic 
des Kontrollers vertraut machen.

IDA hat folgende Konstrukte:
1
loc_12B  SBA
2

3
;weiter unten: 
4
         ORAB loc_12B

Habe es einmal in ThrSim11 simuliert. Was ich nicht verstehe, das 
Register B wird mit 10h also dem Opcode geladen und nicht wie ich es 
erwartet hätte: Register B von A Subtrahiert und danach der Inhalt B 
verodert.

Ist das Verhalten vom Simulator so richtig? loc_12B ist doch eine 
Sprungmarke, oder?

Einfacher wäre dann doch:
1
        LDAB #$10
2
        ORAB loc_12B

Vielen Dank!
Persönliche Seite #2592791
Du kannst Dich nicht darauf verlassen, daß die Ausgabe Deines 
Disassemblers logisch korrekt ist. Wenn beispielsweise mitten im Code 
eine Datentabelle auftaucht (was bei handgeschriebenem Assemblercode 
nicht auszuschließen ist), dann versucht der Disassembler zunächst, 
diese zu disassemblieren und liefert folglich merkwürdig aussehenden 
Code. Bei Texten o.ä. oder bei oft referenzierten Stellen hat der 
Disassembler eine Chance, herauszufinden, daß das kein Code ist -- aber 
das ist eben nicht absolut zuverlässig.

Von daher kann das, was Du Dir da ansiehst, vollkommener Quark sein. 
Die Ausgabe des Simulators ist hier wahrscheinlich realistischer, wenn 
der mit dem Reset-Vektor "gezündet" wird und das Programm wirklich von 
Anfang an abarbeitet.
(Firma: TH Köln) Persönliche Seite #2592833
René schrieb:
> loc_12B ist doch eine
> Sprungmarke, oder?

Nein, ist es bei Verwendung mit ORAB nicht, sondern (auch) eine 
Speicheradresse für direkte Adressierung. Wenn der Code aus einem 
Disassembler stammt, vergiss besser das SBA, der kann nicht wissen, wo 
Werte und wo Befehle stehen. Es war/ist nicht unüblich bei diesen 
Prozessoren Code und Daten 'etwas' durcheinander zu legen, wenn man da 
nicht den Originalcode vorliegen hat wird's lustig.
Das ORAB verodert einfach ACCB mit dem Wert an der Adresse loc_12B, dein 
Codevorschlag ergibt da keinen Sinn ($10 oder $10 = $10).

Mark
Gast #2592855
Hallo Mark,
ok, dankeschön! Da liege ich mit meiner Vermutung wohl richtig, dass IDA 
es nicht richtig disassembliert hat und ich im DATEN-Teil bin.

Da werde ich wohl nochmals nachlesen müssen ob es noch irgendwelche 
Optionen zu setzen gibt.

Grüße René
Gast #2592862
Danke auch an Rufus Τ. Firefly!

Ich spiele gerade noch mit dem DHC11 rum. Dieser hat  den RESET @FFFE 
korrekt identifiziert und mir den Einstieg richtig gesetzt. Immerhin 
wird er Stackpointer beim EntryPoint auf 01FF gesetzt, was am Ende des 
RAM´s liegt. Hat auch teilweise "DATA-Arrays" gebildet.

Da heißt es weiterstöbern! ;)

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.