Post on 30-Apr-2020
Praktische Informatik II© Prof. Dr. W. Effelsberg
5. Maschinensprache (Assembler) 5-1
5. Programmierung in Maschi- nensprache (Assembler)
5.1 Beschreibung des Prozessors M 68000
5.2 Adressierungsarten des M 68000
5.3 Maschinenbefehle des M 68000
5.4 Unterprogrammtechnik
Praktische Informatik II© Prof. Dr. W. Effelsberg
5. Maschinensprache (Assembler) 5-2
5.1 Beschreibung des Prozessors M 68000
Charakteristische Daten des Motorola 68000
• 56 Maschinenbefehle
• 14 Adressierungsarten• Zweiadressmaschine mit
- acht Datenregistern- neun Adress-/ Stackregistern- einem Befehlszähler (PC)
- einem Statusregister• CPU-intern 32- Bit-Rechnerorganisation• Busbreite 16 Bit
• Taktfrequenz 4-12,5 MHZ (je nach Modell)• “Urvater“ einer sehr erfolgreichen Prozessor-Familie
(68010, 68020, 68030, 68040)
Praktische Informatik II© Prof. Dr. W. Effelsberg
5. Maschinensprache (Assembler) 5-3
Registermodell des M 68000
Praktische Informatik II© Prof. Dr. W. Effelsberg
5. Maschinensprache (Assembler) 5-4
Statusregister
Praktische Informatik II© Prof. Dr. W. Effelsberg
5. Maschinensprache (Assembler) 5-5
User Mode
U ser / S uperviso r-M odus-Ü bergang
Typ ische Anw endung des U ser / Superv isor-W echse ls
Praktische Informatik II© Prof. Dr. W. Effelsberg
5. Maschinensprache (Assembler) 5-6
Supervisor Mode und Privilegierte Befehle
Praktische Informatik II© Prof. Dr. W. Effelsberg
5. Maschinensprache (Assembler) 5-7
Pin-Belegung
Praktische Informatik II© Prof. Dr. W. Effelsberg
5. Maschinensprache (Assembler) 5-8
Mikroprogramm-Steuerung
• ca. 180 Steuersignale in der Ausführungseinheit(Rechenwerk; ALU)
• Steuerspeicher als mikroprogrammiertes ROM
Praktische Informatik II© Prof. Dr. W. Effelsberg
5. Maschinensprache (Assembler) 5-9
5.2 Adressierungstechniken des M 68000
Praktische Informatik II© Prof. Dr. W. Effelsberg
5. Maschinensprache (Assembler) 5-10
Datenformate
0 0 x x15 12 11 6 5 0
M O V E .x <ea > ,<ea >1 2
<ea >2 <ea >1
B - B y te 8 B itW - W ort 16 B itL - Langw ort 3 2 B it
Praktische Informatik II© Prof. Dr. W. Effelsberg
5. Maschinensprache (Assembler) 5-11
Adressierungsart "Register direkt"
Die Operandenadresse ist ein Register (Datenregister,Adressregister, Statusregister).
Praktische Informatik II© Prof. Dr. W. Effelsberg
5. Maschinensprache (Assembler) 5-12
Absolute Adressierung (1)
Die Operandenadresse ist eine absolute Adresse imSpeicher.
Beispiel 1
Praktische Informatik II© Prof. Dr. W. Effelsberg
5. Maschinensprache (Assembler) 5-13
Absolute Adressierung (2)
Beispiel 2
Praktische Informatik II© Prof. Dr. W. Effelsberg
5. Maschinensprache (Assembler) 5-14
Absolute Adressierung (3)
Beispiel 3
Praktische Informatik II© Prof. Dr. W. Effelsberg
5. Maschinensprache (Assembler) 5-15
Konstanten-Adressierung (immediateaddressing)
Der Operand selbst steht im Befehl oder folgt unmittel-bar dem Befehl im nächsten Wort oder den nächstenbeiden Worten des Speichers.
Die Verarbeitung ist wesentlich schneller als bei abso-luter Adressierung von Konstanten, die im Speicherabgelegt sind (nur ein "Fetch").
Häufige Verwendung für kleine Ganzzahl-Konstanten(0, 1, -1).
Praktische Informatik II© Prof. Dr. W. Effelsberg
5. Maschinensprache (Assembler) 5-16
Konstanten-Adressierung
Beispiel 1MOVEQ #$5A,D3 (MOVEQ = MOVE QUICK)
Von der Funktion her in diesem Fall identisch mit demBefehlMOVE.L #$5A,D3jedoch nicht in Bezug auf Länge und Ausführungszeit!
Praktische Informatik II© Prof. Dr. W. Effelsberg
5. Maschinensprache (Assembler) 5-17
Konstanten- Adressierung
Beispiel 2: Langwort- Konstante
Praktische Informatik II© Prof. Dr. W. Effelsberg
5. Maschinensprache (Assembler) 5-18
Register-indirekte Adressierung
Ein Adressregister enthält die Adresse des Operanden.
Praktische Informatik II© Prof. Dr. W. Effelsberg
5. Maschinensprache (Assembler) 5-19
Register-indirekte Adressierung
Beispiel 2: mit Postinkrement
Praktische Informatik II© Prof. Dr. W. Effelsberg
5. Maschinensprache (Assembler) 5-20
Register-indirekte Adressierung
Beispiel 3: mit Prädekrement
Praktische Informatik II© Prof. Dr. W. Effelsberg
5. Maschinensprache (Assembler) 5-21
Register-indirekte Adressierung
Beispiel 4: mit Adressdistanz
Praktische Informatik II© Prof. Dr. W. Effelsberg
5. Maschinensprache (Assembler) 5-22
Register - indirekte Adressierung
Beispiel 5: mit Index, mit oder ohne Adressdistanz
1. B e isp ie l M O V E $04(A 0 ,D 0),$1000
A dress-d is tanz
B asis-adresse
Index e ff. Z ie l-adresse
g le ichbedeu tend m it M O V E .W $(A =,D = .W ),$1000
Praktische Informatik II© Prof. Dr. W. Effelsberg
5. Maschinensprache (Assembler) 5-23
Adressierung relativ zum Programmzähler
Der Programmzähler (PC) dient als Basisregister. Dazukann eine positive oder negative Distanz angegebenwerden sowie ein Indexregister. Dabei wird die Tat-sache ausgenutzt, dass die zu verarbeitenden Datenhäufig in der Nähe der Maschinenbefehle im Speicherstehen (modulare Programmierung!).
Vorteil gegenüber absoluten AdressenIm Mehrbenutzerbetrieb können Programme “reentrant“geschrieben werden: Derselbe Programmcode läuftkorrekt an verschiedenen Speicheradressen, mit je-weils anderen Benutzerdaten.
Vorteile gegenüber expliziter Nennung desBasisregistersDie Verwaltung des Basisregisters bleibt dem Program-mierer erspart. Die Befehle sind kürzer, da die Bit-codierung für das Basisregister entfällt.
Praktische Informatik II© Prof. Dr. W. Effelsberg
5. Maschinensprache (Assembler) 5-24
Adressierung relativ zum Programmzähler
Praktische Informatik II© Prof. Dr. W. Effelsberg
5. Maschinensprache (Assembler) 5-25
Programmbeispiele mit PC als Basisregister
Praktische Informatik II© Prof. Dr. W. Effelsberg
5. Maschinensprache (Assembler) 5-26
Adressierung relativ zum Programmzähler
Mit Indexregister und Distanz
Praktische Informatik II© Prof. Dr. W. Effelsberg
5. Maschinensprache (Assembler) 5-27
Zusammenfassung der Adressierungsarten
(nicht verwendet)
(nicht verwendet)
(nicht verwendet)
#, SR, CCRKonstante, Statusregister
d8(PC,Rx)PC rel. Mit Adressdist. & Index
d16(PC)PC relativ mit Adressdistanz
$XXXXXXXXAbsolut lang
$XXXXAbsolut kurz
d8(An,Rx)ARI mit Adressdistanz und Index
d16(An)ARÌ mit Adressdistanz
-(An)ARI mit Prädekrement
(An)+ARI mit Postinkrement
(An)Adressregister indirekt (ARI)
AnAdressregister direkt
DnDatenregister direkt
MnemonikAdressierungsart
Praktische Informatik II© Prof. Dr. W. Effelsberg
5. Maschinensprache (Assembler) 5-28
5.3 Der Befehlssatz des M68000
Die Tabelle gibt an, wie die Flags im Statusregister vonden Befehlen verändert werden.
Praktische Informatik II© Prof. Dr. W. Effelsberg
5. Maschinensprache (Assembler) 5-29
MOVE (1)
Übertrage Daten von der Quelle zum Ziel
Assembler-Syntax: MOVE.X < ea >, < ea >
Operation: <Quelle> <Ziel>
Welche Flags werden verändert:X Nicht berührtN Auf Eins gesetzt, falls der übertragene Datenwert
negativ ist, sonst auf Null gesetztZ Auf Eins gesetzt, falls der übertragene Datenwert
= 0 ist, sonst auf Null gesetzt.V Immer auf Null gesetzt.C immer auf Null gesetzt.
OperandengrößeMit dem MOVE-Befehl können Byte-, Wort- und Lang-wortdaten vom Quelloperanden zum Zieloperandenübertragen werden. Es kann also am Befehl .B,.W oder .L statt .X stehen.
Praktische Informatik II© Prof. Dr. W. Effelsberg
5. Maschinensprache (Assembler) 5-30
MOVE (2)
Befehlsbeschreibung:Der MOVE-Befehl dient zum Übertragen von Datenvom Quell- zum Zieloperanden. Er ist der universellsteund sicherlich meistverwendete Befehl im M68000. ImBefehlssatz des M68000 gibt es keinen Befehl LDAoder STA zum Laden oder Ablegen von Registern. DerMOVE-Befehl erfüllt auch diese Aufgaben. Er überträgtDaten von überall her und überall hin. Es können dabeiByte-, Wort- oder Langwortdaten übertragen werden.Abhängig von den übertragenen Daten werden dieFlags gesetzt.
Opcode und Erklärung
Praktische Informatik II© Prof. Dr. W. Effelsberg
5. Maschinensprache (Assembler) 5-31
MOVEM (1)
"MOVE MULTIPLE“
Übertrage mehrere Register
Assembler-Syntax:MOVEM.X Registerliste, < ea >MOVEM.X < ea >, Registerliste
Operation:Inhalte der Register in der Registerliste < ea >< ea > Register in der Registerliste
Welche Flags werden verändert? KEINE!
Operandenlänge:Mit dem MOVEM-Befehl kann der 16- oder 32 Bit-Inhalteiner Reihe von spezifischen Registern geholt oderabgelegt werden. Es ist also Wort- oder Langwort-verarbeitung möglich, wobei statt .X am Befehl .W oder.L stehen kann.
Praktische Informatik II© Prof. Dr. W. Effelsberg
5. Maschinensprache (Assembler) 5-32
MOVEM (2)
Befehlsbeschreibung
Mit dem MOVEM-Befehl werden bis zu 16 Register(Datenregister D0 – D7 und Adressregister A0 – A7) in
oder aus dem Speicher übertragen. Man kann dabeieinen Registerauswahl treffen. In der Assembler-Syntax wird dies mit der Registerliste ausgedrückt. Ein
Registerinhalt wird übertragen, wenn das entsprechen-de Bit in der Registermaske (siehe Opcode) gesetzt ist.Außerdem kann man festlegen, ob Wort- oder Lang-
wortverarbeitung durchgeführt wird. Bei einer Über-tragung von Wortdaten in die spezifizierten Registerwird der Quelloperand immer vorzeichenrichtig auf 32
Bit erweitert du dann in die 32 Bit des jeweiligen Regis-ters auch bei Datenregistern geschrieben. Bei Über-tragung von Wortdaten aus den Registern in den Spei-
cher wird nur die untere Hälfte des jeweiligen Registerübertragen
Praktische Informatik II© Prof. Dr. W. Effelsberg
5. Maschinensprache (Assembler) 5-33
MOVEM (3)
Opcode und Erklärung
Praktische Informatik II© Prof. Dr. W. Effelsberg
5. Maschinensprache (Assembler) 5-34
Beispiele zu MOVEM
Praktische Informatik II© Prof. Dr. W. Effelsberg
5. Maschinensprache (Assembler) 5-35
ADD (1)
Binäre Addition
Assembler-Syntax:ADD.X < ea >, DnADD.X Dn, < ea >
Operation:< Quelle > + < Ziel > < Ziel >
Welche Flags werden verändert:X Gesetzt wie das C-Bit.N Auf Eins gesetzt, falls das Ergebnis negativ ist, sonst auf 0 gesetzt.Z Auf Eins gesetzt, falls das Ergebnis = 0 ist, sonst auf 0 gesetzt.V Auf Eins gesetzt, falls ein Überlauf auftritt, sonst auf 0 gesetzt.C Auf Eins gesetzt, falls ein Überlauf auftritt, sonst auf 0 gesetzt.
Operandengröße:Mit diesem Befehl können Byte-, Wort- und Langwort-daten binär addiert werden. .X steht also für .B, .W oder.L.
Praktische Informatik II© Prof. Dr. W. Effelsberg
5. Maschinensprache (Assembler) 5-36
ADD (2)
Befehlsbeschreibung:Der ADD-Befehl dient zur binären Addition des Quell-operanden zum Zieloperanden. Es wird dabei kein evtl.in einer vorher durchgeführten Addition aufgetretenerÜbertrag mit aufaddiert. Will man Daten größer als 32Bits addieren, muss´man anschließend an einen 32-Bit-ADD-Befehl einen ADDX-Befehl anwenden, um einenevtl. Übertrag zu berücksichtigen. Für den ADD-Befehlmuss entweder der Quell- oder Zieloperand in einemDatenregister stehen.
Opcode und Erklärung
Praktische Informatik II© Prof. Dr. W. Effelsberg
5. Maschinensprache (Assembler) 5-37
Beispiele zu ADD (1)
Beispiele
1. Addition von Bytewerten : In Register D1 steht. $xxxxxx53
In Register D3 steht: $xxxxxx23
ADD.B D1, D3 Addition von D1+D3Ergebnis steht in D3:$xxxxxx76
Flags im SR nach Ausführung der Operation:X N Z V C0 0 0 0 0
2: Addition von Wortwerten :In Register D1 steht: $xxxxxx1234In Speicherzelle $1000 steht: $5678
ADD.W $1000,D1 Addition der beiden Zahlen-werte. Ergebnis steht in D1:$68AC
Flags im SR nach Ausführung der Operation:X N Z V C
0 0 0 0 0
Praktische Informatik II© Prof. Dr. W. Effelsberg
5. Maschinensprache (Assembler) 5-38
Beispiele zu ADD (2)
3. Addition von Langwortwerten :In Register D1 steht: $82345678
In Speicherzelle $1000 ff. steht: 484510213
ADD.L $1000,D1 Addition beider ZahlenwerteErgebnis steht in D1:$068588B
Flags im SR nach Ausführung der Operation:X N Z V C
1 0 0 1 1
Praktische Informatik II© Prof. Dr. W. Effelsberg
5. Maschinensprache (Assembler) 5-39
CMP (1)
Vergleiche zwei Operanden nach ihrer Größe undsetze die Flags danach
Assembler Syntax:CMP.X < ea >, Dn
Operation:< Ziel > - < Quelle > Flags danach gesetzt
Welche Flags werden verändert:X Nicht berührtN Auf Eins gesetzt, falls das Ergebnis negativ ist, sonst auf Null gesetztZ Auf Eins gesetzt, falls das Ergebnis = 0 ist, sonst auf Null gesetztV Auf Eins gesetzt, falls ein Überlauf auftritt, sonst auf Null gesetzt.C Auf Eins gesetzt, falls ein „Borgen“ durchgeführt wird, sonst auf Null gesetzt.
Operandengröße:Mit dem CMP-Befehl können zwei Byte- Wort- oderLangwortoperanden verglichen und abhängig von ihrerGröße jeweils die Flags gesetzt werden. Am BefehlCMP kann statt .X also .B, .W oder .L stehen.
Praktische Informatik II© Prof. Dr. W. Effelsberg
5. Maschinensprache (Assembler) 5-40
CMP (2)
Befehlsbeschreibung:Der CMP-Befehl dient zum Vergleichen der Größezweier Operanden. Dieser Vergleich läuftfolgendermaßen ab: Der Quelloperand wird vomZieloperanden subtrahiert, ohne jedoch denZieloperanden selbst zu verändern. In Abhängigkeitvom Ergebnis dieser Operation werden dann die Flagsgesetzt. Diese Subtraktion läuft im M68000 so ab, dassdie ALU die Operation durchführt, das Ergebnis jedochnicht an den Zieloperanden weitergibt.
Opcode und Erklärung
Praktische Informatik II© Prof. Dr. W. Effelsberg
5. Maschinensprache (Assembler) 5-41
LEA (1)
Lade eine effektive Adresse in ein Adressregister
Assembler SyntaxLEA < ea >, An
Operation:Eff. Adresse < An >
Welche Flags werden verändert:KEINE!
Operandenlänge:Nachdem beim LEA-Befehl eine Adresse in einAdressregister geladen wird, arbeitet der Befehl nur mit32bit langen Oparnden. Es gibt kein .X am Befehl, danur Langwortverarbeitung zugelassen ist.
Praktische Informatik II© Prof. Dr. W. Effelsberg
5. Maschinensprache (Assembler) 5-42
LEA (2)
Befehlsbeschreibung:Der LEA-Befehl dient zum Laden einer effektivenAdresse in ein Adressregister. Bei der Durchführungdes LEA-Befehls wird zunächst die effektive Adresseberechnet. Man stelle sich vor, die Adresse laute:5(A0,S5.L). Diese eben berechnete Adresse wird dannin das 32bit-Zieladressregister geladen. Wobei alle 32Bit der Quelladresse in das Adressregister gehen. DerUnterschied zu einem MOVE-Befehl besteht darin,dass beim LEA-Befehl die Adresse desQuelloperanden in das Adressregister geladen wird,beim MOVE-Befehl aber der Inhalt desQuelloperanden.
Opcode und Erklärung
Praktische Informatik II© Prof. Dr. W. Effelsberg
5. Maschinensprache (Assembler) 5-43
Beispiele zu LEA (1)
A0 =$00044400 A0 =$12345678
D0 =$00008000
A3 = xxxxxxxx A3 = xxxxxxxx
LEA 5(A0,D0),A3 LEA (A0),A3
$00044A00
$FFFF8000
+$00000005
$100003CA05
A0 =$00044A00 AO =$12345678
D0 =$00008000
A3 =$0003CA05 A3 =$12345678
Praktische Informatik II© Prof. Dr. W. Effelsberg
5. Maschinensprache (Assembler) 5-44
Beispiele zu LEA (2)
Berechnen einer effektiven Adresse und Ablegen ineinem Adressregister vor Ausführen einer längerenSchleife:
Anwendung:
Will man die Adresse eines Operanden berechnen undfesthalten, so ist der LEA-Befehl genau der richtigeBefehl dafür. Eine sinnvolle Anwendung ist im Beispielgezeigt. Man kann sich dadurch einiges anProgrammlaufzeit und Schreibaufwand sparen.Außerdem wird das Programm übersichtlicher.
LOOP
LEA $25(AO,D3),A5 MOVE.W (A5),D5 ...........,(A5) ....... (A5),.... ....... (A5),....
Berechnen der eff. Adresse Jeweils Adressieren der Speicherzelle über Adressierungsart Adressregister indirekt, wäre auch über Adressangabe $25(A0,03) möglich, würde jedoch länger dauern.
DBRA 05,LOOP