hilfe ein wahnsinniger schrieb:
> Nein, eben nicht, ein SBI, CBI und so geht nur fuer die unteren
> Register.
Na und? In R16..R31 nimmst du statt sbic, sbis, sbi und cbi halt sbrc,
sbrs, sbr und cbr.
Die brauchen alle genau dieselben Takte wie ihre jeweiligen Pendants für
den IO-Bereich. Der einzige Unterschied ist die erweiterte Semantik von
sbr und cbr, aber die ist eher von Vorteil als von Nachteil. Der einzige
substantielle Nachteil ist halt ein wenig mehr Schreibarbeit bei diesen
Befehlen, statt cbi reg,bit muß man halt cbr reg,1<<bit schreiben.
Und wenn einen das zu sehr nervt, dann schreibt man sich halt seine
eigenen Befehle, die Verhalten und Schreibweise von cbi/sbi exakt
nachahmen, aber letztlich cbr und sbr benutzen. Macros machen's möglich:
.macro bset
sbr @0,1<<@1
.endmacro
.macro bclr
cbr @0,1<<@1
.endmacro
Und schon hast du zwei neue Befehle, die in einem CPU-Register zwischen
R16 und R31 genau dasselbe tun und genauso lange dauern wie sbi/cbi in
einer IO-Adresse unter $20.
Ein besonders fähiger Asm-Programmmierer bist du irgendwie nicht. Aber
das wird vielleicht irgendwann noch...