Autor Beitrag
Jojojoxx
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 386



BeitragVerfasst: Mi 02.05.07 01:03 
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...:

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 486
Erhaltene Danke: 99

Win7, Win81, Win10
Tokyo, VS2017
BeitragVerfasst: 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" ;)

_________________
Lies, was da steht. Denk dann drüber nach. Dann erst fragen.
Jojojoxx Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 386



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 106



BeitragVerfasst: 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:

ausblenden 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