44
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

5. Programmierung in Maschi- nensprache (Assembler)pi4.informatik.uni-mannheim.de/pi4.data/content/courses/2000-ss/pi… · 5. Maschinensprache (Assembler) 5-32 MOVEM (2) Befehlsbeschreibung

  • Upload
    others

  • View
    11

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 5. Programmierung in Maschi- nensprache (Assembler)pi4.informatik.uni-mannheim.de/pi4.data/content/courses/2000-ss/pi… · 5. Maschinensprache (Assembler) 5-32 MOVEM (2) Befehlsbeschreibung

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

Page 2: 5. Programmierung in Maschi- nensprache (Assembler)pi4.informatik.uni-mannheim.de/pi4.data/content/courses/2000-ss/pi… · 5. Maschinensprache (Assembler) 5-32 MOVEM (2) Befehlsbeschreibung

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)

Page 3: 5. Programmierung in Maschi- nensprache (Assembler)pi4.informatik.uni-mannheim.de/pi4.data/content/courses/2000-ss/pi… · 5. Maschinensprache (Assembler) 5-32 MOVEM (2) Befehlsbeschreibung

Praktische Informatik II© Prof. Dr. W. Effelsberg

5. Maschinensprache (Assembler) 5-3

Registermodell des M 68000

Page 4: 5. Programmierung in Maschi- nensprache (Assembler)pi4.informatik.uni-mannheim.de/pi4.data/content/courses/2000-ss/pi… · 5. Maschinensprache (Assembler) 5-32 MOVEM (2) Befehlsbeschreibung

Praktische Informatik II© Prof. Dr. W. Effelsberg

5. Maschinensprache (Assembler) 5-4

Statusregister

Page 5: 5. Programmierung in Maschi- nensprache (Assembler)pi4.informatik.uni-mannheim.de/pi4.data/content/courses/2000-ss/pi… · 5. Maschinensprache (Assembler) 5-32 MOVEM (2) Befehlsbeschreibung

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

Page 6: 5. Programmierung in Maschi- nensprache (Assembler)pi4.informatik.uni-mannheim.de/pi4.data/content/courses/2000-ss/pi… · 5. Maschinensprache (Assembler) 5-32 MOVEM (2) Befehlsbeschreibung

Praktische Informatik II© Prof. Dr. W. Effelsberg

5. Maschinensprache (Assembler) 5-6

Supervisor Mode und Privilegierte Befehle

Page 7: 5. Programmierung in Maschi- nensprache (Assembler)pi4.informatik.uni-mannheim.de/pi4.data/content/courses/2000-ss/pi… · 5. Maschinensprache (Assembler) 5-32 MOVEM (2) Befehlsbeschreibung

Praktische Informatik II© Prof. Dr. W. Effelsberg

5. Maschinensprache (Assembler) 5-7

Pin-Belegung

Page 8: 5. Programmierung in Maschi- nensprache (Assembler)pi4.informatik.uni-mannheim.de/pi4.data/content/courses/2000-ss/pi… · 5. Maschinensprache (Assembler) 5-32 MOVEM (2) Befehlsbeschreibung

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

Page 9: 5. Programmierung in Maschi- nensprache (Assembler)pi4.informatik.uni-mannheim.de/pi4.data/content/courses/2000-ss/pi… · 5. Maschinensprache (Assembler) 5-32 MOVEM (2) Befehlsbeschreibung

Praktische Informatik II© Prof. Dr. W. Effelsberg

5. Maschinensprache (Assembler) 5-9

5.2 Adressierungstechniken des M 68000

Page 10: 5. Programmierung in Maschi- nensprache (Assembler)pi4.informatik.uni-mannheim.de/pi4.data/content/courses/2000-ss/pi… · 5. Maschinensprache (Assembler) 5-32 MOVEM (2) Befehlsbeschreibung

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

Page 11: 5. Programmierung in Maschi- nensprache (Assembler)pi4.informatik.uni-mannheim.de/pi4.data/content/courses/2000-ss/pi… · 5. Maschinensprache (Assembler) 5-32 MOVEM (2) Befehlsbeschreibung

Praktische Informatik II© Prof. Dr. W. Effelsberg

5. Maschinensprache (Assembler) 5-11

Adressierungsart "Register direkt"

Die Operandenadresse ist ein Register (Datenregister,Adressregister, Statusregister).

Page 12: 5. Programmierung in Maschi- nensprache (Assembler)pi4.informatik.uni-mannheim.de/pi4.data/content/courses/2000-ss/pi… · 5. Maschinensprache (Assembler) 5-32 MOVEM (2) Befehlsbeschreibung

Praktische Informatik II© Prof. Dr. W. Effelsberg

5. Maschinensprache (Assembler) 5-12

Absolute Adressierung (1)

Die Operandenadresse ist eine absolute Adresse imSpeicher.

Beispiel 1

Page 13: 5. Programmierung in Maschi- nensprache (Assembler)pi4.informatik.uni-mannheim.de/pi4.data/content/courses/2000-ss/pi… · 5. Maschinensprache (Assembler) 5-32 MOVEM (2) Befehlsbeschreibung

Praktische Informatik II© Prof. Dr. W. Effelsberg

5. Maschinensprache (Assembler) 5-13

Absolute Adressierung (2)

Beispiel 2

Page 14: 5. Programmierung in Maschi- nensprache (Assembler)pi4.informatik.uni-mannheim.de/pi4.data/content/courses/2000-ss/pi… · 5. Maschinensprache (Assembler) 5-32 MOVEM (2) Befehlsbeschreibung

Praktische Informatik II© Prof. Dr. W. Effelsberg

5. Maschinensprache (Assembler) 5-14

Absolute Adressierung (3)

Beispiel 3

Page 15: 5. Programmierung in Maschi- nensprache (Assembler)pi4.informatik.uni-mannheim.de/pi4.data/content/courses/2000-ss/pi… · 5. Maschinensprache (Assembler) 5-32 MOVEM (2) Befehlsbeschreibung

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).

Page 16: 5. Programmierung in Maschi- nensprache (Assembler)pi4.informatik.uni-mannheim.de/pi4.data/content/courses/2000-ss/pi… · 5. Maschinensprache (Assembler) 5-32 MOVEM (2) Befehlsbeschreibung

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!

Page 17: 5. Programmierung in Maschi- nensprache (Assembler)pi4.informatik.uni-mannheim.de/pi4.data/content/courses/2000-ss/pi… · 5. Maschinensprache (Assembler) 5-32 MOVEM (2) Befehlsbeschreibung

Praktische Informatik II© Prof. Dr. W. Effelsberg

5. Maschinensprache (Assembler) 5-17

Konstanten- Adressierung

Beispiel 2: Langwort- Konstante

Page 18: 5. Programmierung in Maschi- nensprache (Assembler)pi4.informatik.uni-mannheim.de/pi4.data/content/courses/2000-ss/pi… · 5. Maschinensprache (Assembler) 5-32 MOVEM (2) Befehlsbeschreibung

Praktische Informatik II© Prof. Dr. W. Effelsberg

5. Maschinensprache (Assembler) 5-18

Register-indirekte Adressierung

Ein Adressregister enthält die Adresse des Operanden.

Page 19: 5. Programmierung in Maschi- nensprache (Assembler)pi4.informatik.uni-mannheim.de/pi4.data/content/courses/2000-ss/pi… · 5. Maschinensprache (Assembler) 5-32 MOVEM (2) Befehlsbeschreibung

Praktische Informatik II© Prof. Dr. W. Effelsberg

5. Maschinensprache (Assembler) 5-19

Register-indirekte Adressierung

Beispiel 2: mit Postinkrement

Page 20: 5. Programmierung in Maschi- nensprache (Assembler)pi4.informatik.uni-mannheim.de/pi4.data/content/courses/2000-ss/pi… · 5. Maschinensprache (Assembler) 5-32 MOVEM (2) Befehlsbeschreibung

Praktische Informatik II© Prof. Dr. W. Effelsberg

5. Maschinensprache (Assembler) 5-20

Register-indirekte Adressierung

Beispiel 3: mit Prädekrement

Page 21: 5. Programmierung in Maschi- nensprache (Assembler)pi4.informatik.uni-mannheim.de/pi4.data/content/courses/2000-ss/pi… · 5. Maschinensprache (Assembler) 5-32 MOVEM (2) Befehlsbeschreibung

Praktische Informatik II© Prof. Dr. W. Effelsberg

5. Maschinensprache (Assembler) 5-21

Register-indirekte Adressierung

Beispiel 4: mit Adressdistanz

Page 22: 5. Programmierung in Maschi- nensprache (Assembler)pi4.informatik.uni-mannheim.de/pi4.data/content/courses/2000-ss/pi… · 5. Maschinensprache (Assembler) 5-32 MOVEM (2) Befehlsbeschreibung

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

Page 23: 5. Programmierung in Maschi- nensprache (Assembler)pi4.informatik.uni-mannheim.de/pi4.data/content/courses/2000-ss/pi… · 5. Maschinensprache (Assembler) 5-32 MOVEM (2) Befehlsbeschreibung

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.

Page 24: 5. Programmierung in Maschi- nensprache (Assembler)pi4.informatik.uni-mannheim.de/pi4.data/content/courses/2000-ss/pi… · 5. Maschinensprache (Assembler) 5-32 MOVEM (2) Befehlsbeschreibung

Praktische Informatik II© Prof. Dr. W. Effelsberg

5. Maschinensprache (Assembler) 5-24

Adressierung relativ zum Programmzähler

Page 25: 5. Programmierung in Maschi- nensprache (Assembler)pi4.informatik.uni-mannheim.de/pi4.data/content/courses/2000-ss/pi… · 5. Maschinensprache (Assembler) 5-32 MOVEM (2) Befehlsbeschreibung

Praktische Informatik II© Prof. Dr. W. Effelsberg

5. Maschinensprache (Assembler) 5-25

Programmbeispiele mit PC als Basisregister

Page 26: 5. Programmierung in Maschi- nensprache (Assembler)pi4.informatik.uni-mannheim.de/pi4.data/content/courses/2000-ss/pi… · 5. Maschinensprache (Assembler) 5-32 MOVEM (2) Befehlsbeschreibung

Praktische Informatik II© Prof. Dr. W. Effelsberg

5. Maschinensprache (Assembler) 5-26

Adressierung relativ zum Programmzähler

Mit Indexregister und Distanz

Page 27: 5. Programmierung in Maschi- nensprache (Assembler)pi4.informatik.uni-mannheim.de/pi4.data/content/courses/2000-ss/pi… · 5. Maschinensprache (Assembler) 5-32 MOVEM (2) Befehlsbeschreibung

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

Page 28: 5. Programmierung in Maschi- nensprache (Assembler)pi4.informatik.uni-mannheim.de/pi4.data/content/courses/2000-ss/pi… · 5. Maschinensprache (Assembler) 5-32 MOVEM (2) Befehlsbeschreibung

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.

Page 29: 5. Programmierung in Maschi- nensprache (Assembler)pi4.informatik.uni-mannheim.de/pi4.data/content/courses/2000-ss/pi… · 5. Maschinensprache (Assembler) 5-32 MOVEM (2) Befehlsbeschreibung

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.

Page 30: 5. Programmierung in Maschi- nensprache (Assembler)pi4.informatik.uni-mannheim.de/pi4.data/content/courses/2000-ss/pi… · 5. Maschinensprache (Assembler) 5-32 MOVEM (2) Befehlsbeschreibung

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

Page 31: 5. Programmierung in Maschi- nensprache (Assembler)pi4.informatik.uni-mannheim.de/pi4.data/content/courses/2000-ss/pi… · 5. Maschinensprache (Assembler) 5-32 MOVEM (2) Befehlsbeschreibung

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.

Page 32: 5. Programmierung in Maschi- nensprache (Assembler)pi4.informatik.uni-mannheim.de/pi4.data/content/courses/2000-ss/pi… · 5. Maschinensprache (Assembler) 5-32 MOVEM (2) Befehlsbeschreibung

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

Page 33: 5. Programmierung in Maschi- nensprache (Assembler)pi4.informatik.uni-mannheim.de/pi4.data/content/courses/2000-ss/pi… · 5. Maschinensprache (Assembler) 5-32 MOVEM (2) Befehlsbeschreibung

Praktische Informatik II© Prof. Dr. W. Effelsberg

5. Maschinensprache (Assembler) 5-33

MOVEM (3)

Opcode und Erklärung

Page 34: 5. Programmierung in Maschi- nensprache (Assembler)pi4.informatik.uni-mannheim.de/pi4.data/content/courses/2000-ss/pi… · 5. Maschinensprache (Assembler) 5-32 MOVEM (2) Befehlsbeschreibung

Praktische Informatik II© Prof. Dr. W. Effelsberg

5. Maschinensprache (Assembler) 5-34

Beispiele zu MOVEM

Page 35: 5. Programmierung in Maschi- nensprache (Assembler)pi4.informatik.uni-mannheim.de/pi4.data/content/courses/2000-ss/pi… · 5. Maschinensprache (Assembler) 5-32 MOVEM (2) Befehlsbeschreibung

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.

Page 36: 5. Programmierung in Maschi- nensprache (Assembler)pi4.informatik.uni-mannheim.de/pi4.data/content/courses/2000-ss/pi… · 5. Maschinensprache (Assembler) 5-32 MOVEM (2) Befehlsbeschreibung

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

Page 37: 5. Programmierung in Maschi- nensprache (Assembler)pi4.informatik.uni-mannheim.de/pi4.data/content/courses/2000-ss/pi… · 5. Maschinensprache (Assembler) 5-32 MOVEM (2) Befehlsbeschreibung

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

Page 38: 5. Programmierung in Maschi- nensprache (Assembler)pi4.informatik.uni-mannheim.de/pi4.data/content/courses/2000-ss/pi… · 5. Maschinensprache (Assembler) 5-32 MOVEM (2) Befehlsbeschreibung

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

Page 39: 5. Programmierung in Maschi- nensprache (Assembler)pi4.informatik.uni-mannheim.de/pi4.data/content/courses/2000-ss/pi… · 5. Maschinensprache (Assembler) 5-32 MOVEM (2) Befehlsbeschreibung

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.

Page 40: 5. Programmierung in Maschi- nensprache (Assembler)pi4.informatik.uni-mannheim.de/pi4.data/content/courses/2000-ss/pi… · 5. Maschinensprache (Assembler) 5-32 MOVEM (2) Befehlsbeschreibung

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

Page 41: 5. Programmierung in Maschi- nensprache (Assembler)pi4.informatik.uni-mannheim.de/pi4.data/content/courses/2000-ss/pi… · 5. Maschinensprache (Assembler) 5-32 MOVEM (2) Befehlsbeschreibung

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.

Page 42: 5. Programmierung in Maschi- nensprache (Assembler)pi4.informatik.uni-mannheim.de/pi4.data/content/courses/2000-ss/pi… · 5. Maschinensprache (Assembler) 5-32 MOVEM (2) Befehlsbeschreibung

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

Page 43: 5. Programmierung in Maschi- nensprache (Assembler)pi4.informatik.uni-mannheim.de/pi4.data/content/courses/2000-ss/pi… · 5. Maschinensprache (Assembler) 5-32 MOVEM (2) Befehlsbeschreibung

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

Page 44: 5. Programmierung in Maschi- nensprache (Assembler)pi4.informatik.uni-mannheim.de/pi4.data/content/courses/2000-ss/pi… · 5. Maschinensprache (Assembler) 5-32 MOVEM (2) Befehlsbeschreibung

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