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.
Gast
#1416856
>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?
Gast
#1416863
>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.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.