|
Überblick
Programmiermodell Da man wohl kaum einen Schaltplan des CPU-Herstellers bekommt und da dieser auch viel zu komplex ist, wird für die Programmierung mit dem sogenannten "Programmiermodell" gearbeitet. Dies umfaßt: - Die Gesamtheit der dem Programmierer zugänglichen Register der CPU
- Die Gesamtheit der vom Programmierer veränderbaren Register der CPU
Der Prozessor 68HC11 ist eine Weiterentwicklung des 6800 (weitgehend befehlskompatibel,erweiterter Befehlssatz, zusätzliche Register). Der 68HC11 besitzt vier 8-Bit-Registerund fünf 16-Bit-Register: - 2 Akkumulatoren A und B (8 Bit)
- Zusammenfassung von A und B zum 16-Bit-Akku D (A: MSB, B: LSB) 16-Bit-Instruktionen
- Beide Akkumulatoren werden gleich behandelt
- Zwei Akkus Vorteile bei der Programmierung(z. B. bei Schleife: A zum Rechnen, B als Schleifenzähler)
- Program Counter PC (Befehlszähler, 16 Bit) 64 K Adreßraum
- Stackpointer S
Für Unterprogrammsprünge, Prozessor-Status bei Interrupt Der Stackpointer kann auch als Index-Register verwendet werden
- 2 Indexregister X und Y (16 Bit)
- Für indizierte Adressierung
- Beide sind gleichwertig (Abarbeitung mit X etwas schneller als mit Y)
- Condition Code Register CC (8 Bit)
Statusregister (3 Bit für Stop/Interrupt-Verarbeitung, 5 Bit für ALU)
- Jedes Bit wirkt wie ein Flip-Flop (1 = gesetzt, 0 = rückges.)
- Welche Bits (= Flags) von den einzelnen Befehlen auf welche Art beeinflusst
werden, ist in der Befehlsliste angegeben.
- Ein Flag bleibt solange unverändert, bis ein Befehl ausgeführt wird,
der es beeinflusst.
- Jedes Bit des CC kann per Befehl gezielt gesetzt/rückgesetzt werden
- Die Bedeutung der Bits:
- C: Carry-Flag
- 1, wenn bei arithmetischen Operationen ein Übertrag vom höchstwertigen
Bit auftritt (bei Subtraktion: wenn "geborgt" wird). Wird ausserdem durch
Schiebe- und Rotationsbefehle beeinflußt.
- V: Overflow-Flag
- 1, wenn ein Arithmetik-Überlauf (Zahlenbereichsüberschreitung) auftritt.
Dies tritt nur bei Konegativen Zahlen auf und ist dann der Fall, wenn bei Addition
oder Subtraktion die beiden Operanden das gleiche Vorzeichen besitzen und das
Vorzeichen des Ergebnisses davon verschieden ist.
- Z: Zero-Flag
- 1, wenn das Ergebnis einer Operation das Ergebnis Null hat.
- N: Negativ-Flag
- 1, wenn das Ergebnis einer Operation negativ ist. Das N-Bit ist gleich dem
höchstwertigen Bit des Ergebnisses.
- H: Half-Carry-Flag
- 1, wenn bei einer 8-Bit-Operation ein Übertrag von Bit 3 nach Bit 4 auftritt.
- I: Interrupt Mask
- Falls 1, werden Interrupt-Anforderungen auf der IRQ-Leitung nicht bedient
(Freigabe des IRQ I-Bit auf 0 setzen). Bleibt
solange gesperrt, solange der Stackpointer nicht initialisiert wurde.
- X: Non Maskable Interrupt Mask
- Falls 1, werden Interrupt-Anforderungen auf der NMI-Leitung nicht bedient.
Eigentlich ein Paradox, denn der NMI sollte ja gerade nicht maskierbar sein.
Der NMI wird jedoch gesperrt, wenn der Stackpointer noch nicht initialisiert wurde
und wenn gerade die NMI-Interrupt-Serviceroutine abgearbeitet wird.
- S: Stop disable
- 1, wenn der STOP-Befehl nicht ausgeführt werden soll.
Einteilung der Befehle
Der 68HC11 kennt 59 verschiedene Grundbefehle überschaubarer Befehlssatz.
Anwendung der Befehle mit unterschiedlichen Registern und Adressierungsarten führt
zu 1464 verschiedenen OP-Codes. Der OP-Code besteht (einschließlich Angabe
über Adressierungart) aus einem, zwei oder drei Bytes:
Der Adreßteil (falls vorhanden) besteht aus einem oder zwei Bytes; es gibt
also 1-, 2-, 3-, 4- und 5-Byte-Befehle. Das Befehlsformat kann also sein:
Das "prebyte" erweitert den Befehlsumfang, so daß mehr als 256 Befehle
möglich sind. Der Nachtei dabei ist, dß die Abarbeitung des Befehls
länger dauert und der Befehl natürlich auch ein Byte mehr an Speicher
braucht.
Adressen werden in zwei aufeinanderfolgenden Speicherbytes
abgelegt und zwar in der Form
Mit "ea" wird die effektive Adresse = echte Adresse = Adresse des Operanden im Speicher
bezeichnet. Je nach Adressierungsart (siehe unten) ist eine Adreßberechnung notwendig.
Das Ergebnis der Adreßrechnung landet im Adreßregister und wird dann
zur Adressierung des Speichers verwendet.
Befehlsklassen:
- Verarbeitungsbefehle
- Transportbefehle
- arithmetische Befehle
- logische Befehle
- Schiebe- und Rotations-Befehle
- Steuerbefehle
- Testbefehle (beeinflussen CC-Register)
- Sprungbefehle
- Unterbrechungsbefehle
- Befehle zur Beeinflussung des Systemzustands
Angaben über gültige Adressierungsarten, Länge, CC-Beeinflussung,
Dauer (Anzahl der Taktzyklen) stehen in der Befehlstabelle.
|
|
|