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ß!