Assembler: Problem mit Registerpaar

Gast #71600
Lesenswert?
• ▲
▼
Hallo,

auf meinem AVR (AT90S2313) sind lt. Doku die oberen acht Register
jeweils als Registerpaar anzusprechen, also r24/r25 quasi als ein
Register.

Ich habe nun folgenden Code:

.def      pulsesL      = r24
.def      pulsesH      = r25

adiw   pulsesL, 1               ; Zaehlerwert inkrementieren

Wenn ich die Doku zu adiw richtig verstanden habe, dann wird beim
Overflow von r24 dieser nach r25 weitergegeben. Ich müsste also bis
65535 zählen können.

Bei mir wird aber nach 255 wieder auf Null gesprungen. Warum?

Gruß Uwe
Gast #71602
Lesenswert?
• ▲
▼
Hmpf. Hätte man eigentlich selber drauf kommen können. Steht ja auch
genauso in der Befehlsreferenz.

Das wars aber nicht.

Das Problem scheint zu sein, das es trotz das es so in der Doku steht
einfach nicht mit r24/r25 funktioniert.

Ich habe es testweise mal mit XL/XH versucht (also r26/r27), und siehe
da:

adiw r26, 1

macht genau das was es soll. Beim Overflow von r26 wird entsprechend
r27 hochgezählt.

Also werde ich wohl für meine Zwecke r26/r27 missbrauchen, auch wenns
mir nicht so recht gefällt.

Gruß Uwe
Gast #71603
Lesenswert?
• ▲
▼
Ich habe mal beide Versionen mit r24/r25 im Studio simuliert
und es gingen beide.
Der Fehler liegt nicht bei den beiden Registern, sondern woanders.
Womit hast du das Program geschrieben und assembliert?

Gruß,
Arno
Gast #71607
Lesenswert?
• ▲
▼
Könnte es sein, daß der 2313 das nicht kann? Im Datenblatt des 2313 ist
nur die Rede von X,Y,Z. Das Addieren von R24/R25 steht nur im
allgemeinen Instruction Set. Wäre nicht der einzige Befehl, der beim
2313 nicht zur Verfügung steht.
Gast #71610
Lesenswert?
• ▲
▼
Also ich habe nicht ins Datenblatt geschaut, sondern in zwei meiner
Bücher. Und die behaupten auch beide, das es beim 2313 geht. Es werden
wohl kaum beide Autoren falsch abgeschrieben haben ;-)

Na ja, jetzt läufts via XL/XH, bei dem projekt brauche ich die nicht.

Gruß Uwe

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.