Hallo, AVR atmega8 hat zum Beispiel den Befehl sbr Rd,k. Ist atmega8 deswegen bitadressierbar? Wenn es diesen Befehl nicht gäbe, und die einzige Möglichkeit dieses Bit zu setzen wäre, in pseudo-C x = read8(); x |= 1<<k; write8(x); wäre das was man mit nicht-bitadressierbar meint? Danke ;)
Ein Prozessor selbst ist höchstens bitadressierend, nicht bitadressierbar. I/O-Register und Speicherstellen können bitadressierbar sein. So ist also der Mega8 insgesamt nicht bitadressierbar, wohl aber dessen Port-Register.
>So ist also der Mega8 insgesamt nicht bitadressierbar, wohl aber >dessen Port-Register. in sbr Rd,k ist Rd doch nicht zwangsläufig Portregister, oder übersehe ich etwas?
>in sbr Rd,k ist Rd doch nicht zwangsläufig Portregister, >oder übersehe ich etwas? Ja, nur eine handvoll Register ist bitadressierbar (bis 32?). Das RAM jedenfalls nicht.
Yep, du übersiehst etwas. Den Befehl SBR mit einem Bit als zweitem Operanden gibt es bei AVRs nicht. Der real existierende Befehl SBR will zur besseren Verwirrung des Programmierers eine Maske und wird vom Assembler ausserdem in ORI umgesetzt. Es gibt indes schon Bit-Befehle auf Register. Aber das macht auch wieder nur diese Register (eingeschränkt) bitaddressierbar, nicht aber "den atmega8".
Daniel S. schrieb: > x = read8(); > x |= 1<<k; > write8(x); Wobei die Befehle SBI/CBI intern auch nichts anderes machen als dies. Eine wirklich echte Bitadressierung ist mir bislang nur bei der TMS9900 Familie mit ihrem 1-Bit breiten I/O-Bus begegnet.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.