Ich habe Dein eigentliches Problem noch nicht ganz verstanden, aber ich will es versuchen...
Zitat Zitat von BlackDevil
Uns wurde gesagt "BLOß KEINE FESTEN ADRESSEN FÜR DAS HAUPTPROGRAM!!!" und wenn ich das richtig sehe vergebe ich doch eine feste Adresse für das Hauptprogramm? Und für die Interrupts ebenso...
...könnte heißen, Du sollst nicht schreiben:
rjmp 0x56;
denn das wäre Blödsinn, weil sich die Adresse natürlich mit dem Code ändert, der dazwischen steht. Das kann nur der Compiler und der macht das sehr gut, wenn Du Labels (also variable Adressen) verwendest.

Zitat Zitat von BlackDevil
Aber: Man benutzt doch einen Adressraum im Speicher für das Hauptprogramm, oder nicht? Von $0000 bis $0002 wenn ich das richtig sehe...
Wenn ich mich recht errinnerne: Nein! Das sind die Adressen für die IRQs. DIe werden "hardwaremäßig" angesprungen, wenn der entsprechende IRQ ausgelöst wird. Mit .org reservierst Du zunächst Platz bis zum nächsten .org. Diesen Platz nutzt Du für den RJPM Befehl + Sprungsdresse, mehr nicht!. Würdest Du hier zeilenweise Code einfügen, dann würdest Du von einer IRQ Adresse zur nächsten schreiben und so ein riesen Chaos anrichten (sofern Deine Reservierung dem Standard entspricht). Deshalb wird bei größeren µCs 2Words und bei kleinerern nur 1Word reserviert, denn bei größeren ist der Adressraum größer.
Gruß