chris __ schrieb:
> ldi ZL, LOW(Codes*2) ; die Startadresse der Tabelle in den
> ldi ZH, HIGH(Codes*2) ; Z-Pointer laden[/avrasm]
>
> meine frage ist warum steht da "*2"
Weil im Flash-Bereich Wortadressen verwendet werden (Instruktionen sind
immer Vielfache von 2 Bytes lang), beim Datenzugriff auf den
Flashbereich aber Byteadressen erforderlich sind.
> adc ZH, zero
> nur dass das high byte vom Z-pointer auch 0 bleibt und nicht undefiniert
> ist ?
Das High-Byte bleibt nicht Null, sondern behält entweder seinen
vorherigen Wert oder dieser wird um eins erhöht. Die Erhöhung um eins
passiert genau dann, wenn bei vorherigen Addition des niederwertigen
Bytes ein Übertrag anfällt. Es handelt sich einfach um die zweite Hälfte
einer 16Bit-Addition, die, wie bei einem 8Bitter üblich eben in zwei
Hälften zu erledigen ist.