AVR Z-Register Zahl addieren

Gast #4999331
Hallo, ich habe im Z-Register folgenden Wert:

<avrasm>
LDI ZH, HIGH(511)
LDI ZL, LOW(511)
</avrasm>

Nun möchte ich den Wert eines anderen Registers addieren. Beispielsweise 
R16 mit 2. Wie mache ich das richtig, so dass auch beim Setzen des 
C-Flags das Highbyte um eins erhöht wird?

Ist
<avrasm>
LDI R16, 2
ADD Z, R16
</avrasm>
korrekt?

Ich habe auch


Wenn nicht, wo kann ich wo kann ich das nachlesen?


mfg
Diether
Gast #4999338
Diether schrieb:
> Hallo, ich habe im Z-Register folgenden Wert:
>
> <avrasm>
> LDI ZH, HIGH(511)
> LDI ZL, LOW(511)
> </avrasm>
>
> Nun möchte ich den Wert eines anderen Registers addieren. Beispielsweise
> R16 mit 2. Wie mache ich das richtig, so dass auch beim Setzen des
> C-Flags das Highbyte um eins erhöht wird?
>
> Ist
> <avrasm>
> LDI R16, 2
> ADD Z, R16
Diesen Befehl, - Addition eines 8-Bit-Registers zu einem 
16-Bit-Registers -, gibt es nicht im AVR Befehlssatz

> </avrasm>
> korrekt?

Also: Nein.

> Wenn nicht, wo kann ich wo kann ich das nachlesen?

Was nicht geht, wird natürlich nirgends beschrieben. Da müsste man ja 
alles beschreiben, einschliesslich des Befehls, der einer Mücke die 
Wurzel zieht. Eintrag: ZEMDW: Gibt es nicht.

:-)


In der Beschreibung des Befehlssatzes steht aber, welche Befehle es 
gibt: http://www.atmel.com/atmel/acrobat/doc2503.pdf


Du wirst die Addition aus den Additionen von zuerst des Low-Teiles von Z 
(also R30) und dann von 0 (also eines Registers, das 0 enthält) 
einschliesslich Carry zu dem High-Teil von Z (R31) zusammensetzen 
müssen. Wahlweise auch als Increment, falls das Carry-Bit gesetzt ist. 
Da kann man kreativ sein.

Viel Spaß!
Gast #4999431
generell addierst Du Register zu zwei anderen mit

add zl,r16
adc zh,r17

wobei r17 hier Null sein muß wenn nur r16 und nicht ein ganzer 16-bit 
Wert hinzuaddiert werden soll. im C-Flag findest Du stets den Übertrag, 
der dann im adc-Befehl weiterverwertet werden kann.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 9 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.