Hallo, ich bin noch Anfänger und programmiere in Assembler. Nun stehe ich vor folgendem Problem: Ich habe eine Variable Daten (Daten: DS 6) In dieser Variablen sind Werte abgespeichert, die ich nun Byteweise (nach jedem Aufruf einer Call-Routine) einer anderen Variablen übergeben möchte. Wie kann ich das machen? (Wie kann ich die Adresse der Variablen Daten hochzählen???) Vielen Dank
zb. indem du dir die Startadresse deiner Daten in ein Register (Registerpärchen) holst, und dort dann immer 1 dazuzählst. Es hängt jetzt allerdings wirklich vom Code und was du konkret erreichen willst ab, wie das zu lösen ist.
OK, wie kann ich mir dann konkret die Startadresse in ein Register holen? @ oder # oder???
Wenn die Daten im Programmspeicher liegen sollte dir die Variable Z weiterhelfen. Ist zumindest bei AVR so. Ansonsten X und Y. -wiebel
Michael Waiblinger wrote: > Wenn die Daten im Programmspeicher liegen sollte dir die Variable Z > weiterhelfen. Ist zumindest bei AVR so. Ansonsten X und Y. -wiebel Gibt es AFAIR so beim 8051er nicht. @Assembleranfänger: Schau Dir mal die ganzen indirekten Adressier-Methoden des MOV[...]-Befehls und seiner Verwandten an (da gabs unterschiedliche, weiß jetzt nicht mehr, welcher für indirekte Adressierung zuständig ist). Da findest Du voraussichtlich das was Du brauchst. EDIT: Wenn ich mich zurückerinnere (ist ne Weile her, dass ich mit 8051ern gearbeitet hab), besitzt die 8051er Architektur einen Data Pointer (Special Function Register), den man direkt inkrementieren kann.
moin moin, Buffer: DS 6 . . . mov R0, #Buffer ;R0 auf Bufferanfang mov A, @R0 ;Byt vom Buffer lesen inc R0 ;next Buffer mfg Pieter
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.