Entwickler-Ecke
Algorithmen, Optimierung und Assembler - Arrays in Assembler (WinALI)
Jojojoxx - Mi 02.05.07 01:03
Titel: Arrays in Assembler (WinALI)
Hallo!
Hier ist ein Ausschnitt meines Assembler-Codes. Dieser Codeabschnitt soll vom Benutzer 9 Zahlen abfragen, die dann in ein Array der Größe 9 gespeichert werden. Leider wird immer nur die erste eingegebene Zahl gespeichert und das in alle 9 Array-Stellen. Ich finde einfach nicht den Fehler darin. Kann mir da jemand helfen?? Hier der Code, leider ist die Formatierung nicht erhalten geblieben...:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| START 0 lda 2,'0' m1 cmp 2,'16' bh m2 INI einfg lda 3,einfg sta 3,Matrix(2) Add 2,'2' b m1 EOJ einfg DS F Matrix DS 9F |
Danke für die Hilfe!
mfg
Jojo
OlafSt - Do 03.05.07 11:27
Wenn ich das richtig begriffen habe, kann man mit der ()-Zugriffsmethode aus Arrays lesen, aber nicht schreiben. Mit einem Zeiger auf das Array wirds sicher besser klappen - und ist wesentlich mehr "Assembler-Like" ;)
Jojojoxx - Do 03.05.07 11:51
Hi!
Das interessante ist aber, dass ich die erste Zahl, die ich reinschreiben will, auch erfolgreich reinkriege, nur eben auf jede Stelle...!?
Wie funktioniert denn die Methode mit einem Zeiger auf das Array?
mfg
Jojo
fuggaz - Sa 17.05.08 19:44
Auch wenn der Thread schon uralt ist.
Der eine oder andere wird wohl nochmals über google darauf treffen und vllt gerne eine Lösung sehen:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| start 0 lda 1,'0' aloop ini matrix(1) add 1,'2' cmp 1,'31' bl aloop ;ausgabe - kann gelöscht werden lda 1,'0' test outi matrix(1) add 1,'2' cmp 1,'31' bl test eoj
matrix ds 16f |
Erklärung dazu:
Man kann den Akkumulator, also das Register 1, nicht für Felder benutzen.
Der Grund ist mir nicht bekannt. Hat mich ziehmlich in Verzweiflung gebracht...
Benutzt man den Akkumulator wird immer an der gleichen Position gespeichert.
Als erstes lade ich in das erste Register die erste Position des Feldes: null
Da der Zähler in WinAli in Zweierschritten vorangeht, muss man auch immer schön mit zwei addieren.
Wenn man nach Delphi bei feld[5] speichern will, dann ist dies bei WinAli an Position 10.
Danach fahre ich nur noch mit der Schleife fort und teste dann nochmals die Eingabe.
mfg fuggaz
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!