Martin K. wrote:
> haben diese beiden den gleichen Assemblerbefehlssatz?
Nicht ganz. Der Mega16 hat mehr als 8 KiB Flash. Deshalb gibts bei ihm
z.B. die Befehle jmp und call, weil rjmp und rcall nur bis 8 KiB
addressieren können.
Aus dem Grund sind auch (*ACHTUNG*: Häufiger Umsteiger-Fehler) die
Interrupt-Vektoren beim Mega16 doppelt so lang wie beim Mega8, weil jmp
32 Bit (2 Wörter) lang ist, rjmp aber nur 16 Bit. Deshalb reicht es bei
leeren Interrupt-Vektoren (also Vektoren nicht genutzter Interrupts)
nicht, einfach ein reti reinzuschreiben, weil reti auch nur 16 Bit hat
und dadurch die Vektortabelle durcheinandergerät. Entweder mit Adressen
arbeiten (.org) oder "nop reti" reinschreiben.