Also Thomas!
Ja klar! *lol*So wie ich das jetzt verstanden habe, sind die Adressen selbst auch 16 Bit.
Das Adressregister ist 16Bit, da man sonst die ganzen Flashbytes nicht aufrufen könnte, sondern nur 255, das wäre etwas wenig! ;o)
Genau richtig!Der ATmega8 kann aber nur 8-Bit-Zahlen vergleichen. (richtig so?) Deswegen verglechen wir erstmal Low-Bytes von der Adressen und dann High-Bytes.
Nochmal ganz langsam:
ldi temp , LOW ((daten * 2) + daten_laenge)
daten ist die Adresse, zu der gesprungen werden soll.
Das nimmt man wie gewohnt mal zwei.
Dazu addieren wir dann 6 (Bytes), um das Ende festzulegen.
Das vergleichen wir dann mit der Funktion cp mit ZL, dem LOWbyte.
Das ganze dann nochmal mit dem Highbyte.
Fertig, das ist alles!
Lesezeichen