Hey Leute, ich stehe gerade auf dem Schlauch. Ich habe folgenden code .extern cpointer //ist in meinem c-code dann uint_8* cpointer diese lade ich dann in assembler mit LDI ZL,lo8(cpointer) LDI ZH,hi8(cpointer) So nun mach ich LD R18,Z+ und jetzt möchte ich den neuen Wert von Z (wurde ja inkrementiert) wieder auf cpointer zurückschreiben. Wie mach ich das? Vielen Dank! Gruß Toffer
Dein Code macht nicht das, was die Beschreibung sagt. Damit lädst Du nach Z nicht cpointer, sondern &cpointer (die Adresse von cpointer) und liest nicht *cpointer (das, worauf cpointer zeigt), sondern direkt das LSB von cpointer (cpointer & 0xff). Richtig wäre:
1 | lds ZL, cpointer |
2 | lds ZH, cpointer+1 ; Z = cpointer |
3 | ld r18, Z+ ; r18 = *cpointer++ |
4 | sts cpointer, ZL ; cpointer++ zurückspeichern |
5 | sts cpointer+1, ZH |
Ja das war wohl schon ein wenig spät :D Vielen dank für deine Hilfe, so gehts! Gruß Toffer
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.