PIC (Serie 18) 12-Bit-Befehlsadressierung?

Ich versuche, die 12-Bit-Adresse in Hex - sowie die verwendete Speicherbank - durch die letzte Anweisung in den unten aufgeführten Sequenzen zu finden.

Bevor ich die Sequenzen aufführe, sollte meines Wissens nach die verwendete 12-Bit-Adresse 00da ffff ffff sein, wobei d entweder 1 (Ergebnis zurück in Register gespeichert) oder 0 (Ergebnis in WREG gespeichert) und a entweder 1 ist (verwendet BSR) oder 0 (ignoriert BSR). Ich habe jedoch auch gelesen, dass die 12-Bit-Adresse aus den 4 BSR-Bits und 8 Bits aus der Anweisung besteht. Also, was ist es? Ist die verwendete Adresse 00da ffff ffff oder bbbb ffff ffff (wobei das b die Bank angibt)?

Die erste Sequenz ist:

MOVLW  H'08'
MOVWF BSR
MOVF  H'10',W

Da ich A (MOVF f, d, a) nicht eingeschlossen habe, glaube ich, dass dies den BSR ignoriert, also würde ich sagen, dass die Adresse 0000 0001 0000 oder 0x010 ist. Dies würde in Bank 0 gespeichert werden.

Die nächste Folge ist

MOVLW H'08'
MOVWF BSR
MOVF  H'10',W,A

Da ich A hier eingefügt habe, sollte dies die BSR-Bits verwenden, um die Bank zu bestimmen, was bedeutet, dass der Befehl Bank 8 verwenden sollte. Bedeutet dies, dass die Adresse 00da ffff ffff = 0001 0001 0000 = 0x110 ist, oder dass die Adresse ist 1000 0001 0000 = 0x810?

Antworten (1)

Die Bits dund asind Felder in der Befehlscodierung , aber nicht Teil des 8-Bit- Adressfelds im Befehl. Wenn wir akademisch sein wollen, könnten wir sagen, dass das aBit ein Adressierungsmodusfeld in der Anweisung ist. Das dBit kann als Zieladressierungsmodus oder als Teil des Opcodes analysiert werden, aber die 00mit Anführungszeichen beginnenden sind überhaupt kein Teil der Adressierung; sie sind einfach die letzten beiden Bits des MOVF-Opcodes.

Die verwendete effektive 12-Bit- Adresse besteht aus den 8 Adressbits aus dem Befehl, denen 4 Bits vorangestellt sind, die entweder vom BSR kommen oder von den ersten paar der expliziten Adressbits abgeleitet sind, wie durch das Feld ausgewählt a. Aber der Wert des aBits selbst wird nicht Teil der Adresse.

Schließlich (aber ich könnte die Dokumentation, die ich hier finden konnte, falsch lesen), ,Ascheint das in der Assembler-Syntax für "use the Access bank" zu stehen, wenn also (Großbuchstaben) in der Assembler-Anweisung vorhandenA ist , bedeutet dies, dass (lower -Fall) in der binären Befehlscodierung ist Null und der BSR wird nicht verwendet.a