Hi, ich bin neu hier und hoffe in irgend eine Weise Hilfe zu finden.
Ich benutze den Sim8008 also geht es um Assembler auf dem I8008 von
Intel.
Folgende Aufgabe ist gestellt:
-die ersten 8 Byte eines Registers werden als 8x8 Bitmatrix behandelt
-speichern Sie in den darauffolgenden 8 Byte die transponierte Matrix ab
soweit so gut, ich habe den Code fertig und er dürfte auch funktionieren
aber aus irgend einem Grund geht der Prozessor mitten im Code in den
Halt-Status.
Genau dann wenn er die erste Zeile der Matrix als erste Vertikale im in
der T-Matrix abgespeichert hat.
hier der Code:
1
; Matrix Transponieren
2
; E = 8 , B = ZwischenSpeicher für Zeile, C = innere Schleife, D = äußere Schleife
Soweit ich sehe, lädst Du das H-Register nie. Ein schreibender Zugriff
auf M also die Speicheradresse, auf die das Registerpaar HL zeigt, geht
irgendwohin.
Da du mit einem Simulator arbeitest, hast du doch alle Möglichkeiter
nach dem Halt dir den Zustand der CPU anzuschauen. Also die
Halt-Adresse, den Inhalt der Register usw.
Da in deinem Programm offensichtlich auch kein Halt vorkommt, wird es
wohl andere Ursachen haben, z.B. Illegal Instruction.
Die von dir verwendete Mnemonik sieht auch überhaupt nicht nach I8008
aus, sondern eher nach dessen Nachfolger.
Dann wäre es daher auch gut, wenn du das Listing, dass der Assembler
auswirft, hier postest, dann kann man sich bei Antworten direkt auf
bestimmte Adressen beziehen.
Edit:
Muss mich selbst berichtigen: es gibt tatsächlich eine "alte" und eine
"neue" Schreibweise der Mnemonik: http://petsd.net/8008.php
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