Hallo, kann mir bitte jemand erklären, wie ich in einer externen Assemblerfunktion auf die Adresse einer Variable zugreifen kann? Es geht konkret um eine Assembler-ISR für INT0, die bei Aufruf den aktuellen TCNT1-Wert in eine Variable schreiben soll. In etwa so ("Variable" ist unsigned int): Aufruf der ISR: ... in r16, TCNT1L in r17, TCNT1H st low(Variable),r16 // speichern von r16 in Variable st high(Variable), r17 // speichern von r17 in Variable ... Hoffe, mich halbwegs verständlich ausgedrückt zu haben. Herzlichen Dank! Peter P.S.: Bitte nicht mit RTFM antworten, ich sitze jetzt schon seit 4 Stunden über der Einbindung von Assemblerdateien und komme nicht mehr weiter.
Hallo, hat sich erledigt, mit lo8(Variable) und hi8(Variable) ins Z-Register geht's. Kann man so auch auf struct-Variablen zugreifen? in etwa: ... ldi ZL,lo8(Variable.Var1) ldi ZH,hi8(Variable.Var1) in r16, TCNT1L in r17, TCNT1H st Z+, r16 st Z+, r17 ... (In dieser Form funktioniert es allerdings nicht) Danke! Peter
Hallo Jörg, danke für die Antwort! Ist es aber vielleicht möglich, auf Arrayelemente zugreifen zu können? Danke, Peter
Wenn Du deren Adresse resp. deren Offset zur Startadresse des Arrays selber berechnest, dann ja.
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.