Home
68000 Assembler – J. Teepe
Contents
1. Bit 5 0 Die Effektive Adresse w hlt den Zieloperand an Die folgenden Adressierungsarten sind erlaubt Adr Art Mode Req Adr Art Mode Re Dn 000 R Dn xxx W 111 000 An nicht erlaubt xxx L 111 001 An 010 R An d16 PC nicht erlaubt An 011 R An d8 PC Xi nicht erlaubt An 100 R An lt data gt nicht erlaubt d16 An 101 R An Erl uterung siehe d8 An Xi 110 R An Kapitel 5 Argumentwort Bit 7 6 00 gt Datenfeld ist die niederwertig H lfte des 1 Argumentwortes Bit 7 6 01 gt Datenfeld ist das 1 Argumentwort Bit 7 6 10 gt Datenfeld ist 1 2 Argumentwort Siehe auch CMP CMPA CMPM 212 J Teepe 68000 Assembler Vergleiche Speicherinhalt compare memory Ziel Quelle Operandgr e CMPM B Byte 8 Bit CMPM W dort 16 Bit CMPM L Langwort 32 Assembler CMPM x nit An Syntax x entspricht B Beschreibung Der Quelloperand wird bin r subtrahiert und das Condition Code entsprechend gesetzt Di ter Adressierung adressiert Operanden werden mit der Adressregister B Befehls bersicht DT CMM IL Bit Quelle Ziel d L vom Zieloperand Register wird indirek siehe Der Zieloperand wird nicht ge nder Die Gr e der Konstante entspricht
2. Gr e der Adressdifferenz Wort 16 Bit Assembler Syntax DBcc Dn Marke Beschreibung Die Bezeichnung DBcc im Kopf dieser Seit ist stellvertretend f r die Befehle DBCC DBCS DBEO DBGE DBGT DBHI DBLE DBLS DBLT DEMI DBNE DBPL DBVC DBVS DBF und DBT Wir fassen alle diese Befehle hier zusammen Die Befehle DBcc sind gedacht f r die Programmierung von Schleifen Bei den Befehlen werden di Bits N Negative Z Zero V oVerflow und C Carry des Condition Code Registers benutzt Die Bedingungen die gepr ft werden sind hnlich den Bedingungen f r bedingte Spr ng siehe bei Bcc enn die zu pr fende Bedingung wahr ist passiert gar nichts die Schleife ist damit beendet Der n chste Befehl ist dann der der im Speicher direkt auf den DBcc Befehl folgt 68000 Assembler J Teepe 215 B Befehls bersicht rm pr fe dekrementiere und springe DBce test condition decrement and branch le Aber wenn die Bedingung unwahr ist tritt der DBcc Befehl in Aktion Es passiert dann folgendes Das niederwertige Wort des angew hlten Daten registers das sich also in Bit 15 0 befindet wird um eins 1 vermindert Wenn es bei der Verminderung nicht den Wert 1 erh lt findet ein Sprung zu der spezifizierten Marke statt Das Datenregister wird als Schl
3. rotate right without extend ROR IL Ziel rotiert durch lt Zahl gt gt Ziel Operandgr e ROR B Byte 8 Bit ROR W Wort 16 Bit POR Langwort 32 Bit ROR Wort 16 Bit Assembler ROR x Dn Dn Quelle Ziel Syntax ROR x lt data gt Dn x entspricht B W L ROR lt ea gt Beschreibung Die Bits des Operanden werden nach rechts rotiert Bei jedem Rotationsschritt passiert folgendes a Bit 0 gibt seinen Wert an das C Bit ab Der Wert wird au erdem zwischengespeichert O Danach gibt Bit 1 seinen Wert an Bit 0 und Bit 2 seinen Wert an Bit 1 usw bis das hochwertige Bit seinen Wert an seinen rechten Nachbarn abgibt CG Zum Schlu erh lt das hochwertige Bit den Wert der vorher in Bit 0 war Das X Bit ist von der Rotation nicht betroffen F r die Gesamtzahl der Rotationsschritte siehe auf der n chsten Seite 68000 Assembler J Teepe 323 B Befehls bersicht Rotiere rechts ohne Extend Bit emm ROR rotate right without extend IL lt lt v A Senaren Operand gt gt C le MMN je i MSB LSB Es gibt drei Befehlsformen CO Der Befehl ROR x lt data gt Dn x entspricht B W L rotiert ein Datenregister nach rechts um soviele Positionen wie in der Konstante angegeben ist Die Maximalzahl ist acht CO Der Befehl
4. Adressierungsarten von Befehlen 57 Datenregister direkte Adressierung Di re fee el een 59 Adressregister direkte Adressierung IN Bora ae ee Er E 60 Adressregister indirekte Adressierung Ali Sun Ben ne EE 62 Adressregister indirekte Adressierung mit Post Inkrement RE RE aan EE 64 Adressregister indirekte Adressierung mit Pr Decrement AN ra aan ne er e ge eet EE 67 Adressregister indirekte Adressierung mit Adressendifferenz dl6 An Na Bee ee E Ee 70 Adressregister indirekte Adressierung mit Index HUE Any KLN Ye de Nee NEE ne 12 Absolute kurze Adressierung el wien Be een e Mee Seeerei eala 76 Absolute lange Adressierung SER ee ee alien te ee nee 79 Programmz hler mit Adressendifferenz OPEN echt e ee rn beet au 82 Programmz hler mit Index GELBE RT ea E ep ee Fan a eeh 86 Konstante Unmittelbare Daten lt datar essen hier sc 91 Inhaltsverzeichnis Kapitel 6 Stacks Exceptions und Interrupts 95 6 1 DEE Ora irn eet 2 Ela 95 61 4 1 EIHTURFUNG ae Den 95 E Die Arbeitsweis ines Stacks u a 96 GT Abl ge von Daten an edr ET SNE aa 96 6 1 2 2 Ablage von R ckkehradressen 99 6 1 2 3 Achtung Stackfehler ensure 101 bales Jichtige Eigenschaften des
5. Bit 2 0 Feld Datenregister spezifiziert welches Adressregister f r die Adress register indirekte Adressierung mit Adressdifferen dl6 An benutzt werden soll Feld Adress differenz spezifiziert die Adressdifferenz beim Ermitteln der Operandadresse Benutzen Sie MOVE wenn jede Speicheradress angespochen werden soll 288 J Teepe 68000 Assembler B Befehls bersicht kopiere Konstante quick 8 Bit Fc move quick MovEQ Ill Konstante gt Ziel Operandgr e Langwort 32 Bit Assembler MOVEO lt data gt Dn Syntax Beschreibung Der unmittelbare Wert im Operand die Konstante wird zum Ziel Datenregister bertragen Die Konstante mu zwischen 128 127 liegen F r die Bin rzahl mit Vorzeichen steht im Operand ein Feld von 8 Bit zur Verf gung Das Vorzeichen wird auf 32 Bit erweitert bevor die bertragung zum Daten register stattfindet Et be a EE a ae I Condition Code Register C wird zur ckgesetzt V wird zur ckgesetzt Z wird gesetzt wenn das Ergebnis gleich Null ist Wird sonst zur ckgesetz N wird gesetzt wenn das Wird sonst zur ckgesetz X bleibt unver ndert rgebnis negativ ist ara s 68000 Assembler J Teepe 289 B Befehls bersicht r kopiere Konstante quick 8 Bit MovEQ move quick
6. Die Werte des Adressregisters des Indexregisters und die Konstante werden zusammenaddiert Das Ergebnis bildet die Adresse des Operanden Der Operand befindet sich an der Speicherstelle wohin der Summenwert zeigt 68000 Assembler J Teepe 13 5 Adressierungsarten von Befehlen Adr Art Mode Re Assembler Syntax d8 An Xi 110 R An d8 An Dn W oder d8 An Dn W d8 An Dn L oder d8 An Dn L d8 An An W oder Op An An WI Vorgang d8 An An L oder d8 An An L Adresse Operand d8 ist ein 8 Bit Wort An Xi d8 n in 0 7 Diese Adressierungsart bietet die M glichkeit auch die Datenregister f r Adressierungen zu ben tzen Das ist ein Vorteil weil mit Datenregistern mehr Rechen operationen erlaubt sind als mit Adressregistern Sie k nnen auch auf den Einsat eines Indexwertes verzichten mit der Adressierung MOVE 0 A2 DO D1 benutzen Sie dann als Adresse die Summe zweier Register BEISPIEL enn das Registerfeld die Bits 010 Wert 2 enth lt im Adressregister A2 der Wert 1000 abgespeichert ist und das Datenregister DO den Wert 10 enth lt dann bezieht sich 8 A2 DO auf die Speicherstell 1018 Befehl vorher nachher MOVE L 8 A2 DO D1 A2 00001000 A2 00001000 DO 00000010 DO 00000010 D1 11111111 D1 12345678 auf 00001018 ist
7. BRA Springe unbedingt relativ BSR Aufruf Unterprogramm relativ JMP Springe unbedingt JSR Aufruf Unterprogramm NOP Tue nichts DER EB R CKKEHRBEFEHLE RTR R ckkehr Unterprogramm R ckladen CCR RTS R ckkehr vom Unterprogramm RTE R ckkehr von Exception P 4 2 8 SYSTEM STEUERBEFEHLE 4 2 8 1 PRIVILEGIERTE SYSTEM STEUERBEFEHLE ANDI zum SR UND mit Konstante zum SR P EOR um SR Exclusives ODER mit Konstante zum SR P MOVE vom SR Kopiere vom Status Register P MOVE zum SR Kopiere zum Status Register P MOVE USP Kopiere vom zum User Stack Pointer P ORI zum SR ODER mit Konstante zum SR P RESET R cksetzen Eingabe Ausgabe P STOP Lade Status Register und Halt P RTE R ckkehr von Exception P P privilegierter Befehl 68000 Assembler J Teepe 55 4 Befehlssatz EXCEPTION AUSL SENDE SYSTEM STEUERBEFEHLE ich Register mit Grenzen 4 2 8 2 CHK Vergl LLEGAL L se Illegal Exception aus TRAP Trap TRAPV Trap wenn berlauf Dar ber hinaus l sen auch die folgenden Situationen eine O O O O O O jeden nicht jede nicht Exception aus rlaubtes Befehl rlaubte Adressie
8. X N Z C er E el Kc I 1 I C ndert sich wenn Bi Bleibt sonst unver n V ndert sich wenn Bi Bleibt sonst unver n Z ndert sich wenn Bi Bleibt sonst unver n N ndert sich wenn Bi Bleibt sonst unver n x ndert sich wenn Bi Bleibt sonst unver n it 4 Byte dert dert der 68000 Assembler J Teepe Ko Ko Ko Ko Ko nstante gesetzt ist nstante gesetzt ist nstante gesetzt ist nstante gesetzt ist nstante gesetzt ist 235 B Befehls bersicht m Exclusives ODER mit Konstante EORI exclusive or immediate zum CCR ll Format des Befehlswortes 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 0101I0 I01I0 I01I010 Konstante 8 Bit Benutzen Sie EOR um SR wenn Sie auch das System Byte Exclusiv ODER E verkn pfen m chten ANDI zum CCR wenn Sie das CCR UND E verkn pfen m chten ORI zum CCR wenn Sie das CCR ODER verkn pfen m chten MOVE zum CCR wenn Sie das CCR ohne R cksicht auf die bestehen den Bits ndern m chten Siehe auch ANDI zum SR ORI zum SR 236 J Teepe 68000 Assembler B Befehls bersicht Exclusives ODER mit Konstante Tee exclusive or immediate EORI privilegi
9. Tewes BSET test a bit and set IL Es gibt vier Befehlsformen o Der Befehl BSET L lt data gt Dn pr ft ein Bit des Datenregisters Dn Die Konstante lt data gt w hlt das Bit an oO Der Befehl BSET L Dp Dn pr ft ein Bit des Datenregisters Dn Das Datenregister Dp w hlt das Bit an o Der Befehl BSET B lt data gt lt ea gt pr ft ein Bit in einem Byte im Speicher Die Konstante lt data gt w hlt das Bit an oO Der Befehl BSET B Dp lt ea gt pr ft ein Bit in einem Byte im Speicher Das Datenregister Dp w hlt das Bit an Assembler Syntax BSET L lt data gt Dn Dazu geh rt das folgende Format des Befehlswortes 15 14 13 12 11 10 9 8 7 0 olo O 1 0 0 0 l le of E OS eier See fe ln HE Se N Bit 2 0 Feld Datenregister Dn w hlt das Datenregister mit dem Operand an Hierin befindet sich das Bit das gepr ft werden soll F Feld Bitzahl gibt an welches E f Bi Bi wird Bit von Dn gepr Es werden nur die ts 0 4 der Es wird also Bit Bitzahl mod 32 192 ana zahl benutzt von Dn gepr ft J Teepe 68000 Assembler B Befehls bersicht Pr fe Bit und setze A test a bit and set BSET IL Assembler Syntax BSET L Dp Dn Dazu geh rt das folgende Format des Befehlswortes 152 14 EA 274 VO 09 8 7 6 5 4 3 2 i 0 101101
10. TE OEN E S 10 O Z hl 0 Gr e i O 0 Daten Register Register Bit 11 9 Z hlregister Feld Wenn i 0 Die Bits 11 9 geben an um wieviele Positionen die Bits des Zieloperanden nach rechts verscho ben werden Dabei entspricht 001 einer Position usw bis 111 sieben Positionen entspricht 000 entspricht aber acht Positionen Konstante Wenn i 1 Die Bits 11 9 w hlen ein Datenregister Dn an Die niederwertigen 6 Bits des Datenregisters Dn geben an um wieviele Positionen die Bits des Zieloperanden nach rechts verschoben werden Bit 7 6 Gr e Feld 00 Byte Befehl ASR B 01 Vort Befehl ASR W 10 Langwort Befehl ASR W Bit 5 i Feld 0 Die Bits 11 9 beziehen sich auf eine Konstante 1 Die Bits 11 9 beziehen sich auf ein Datenregister Bit 2 0 Register Feld w hlt ein Datenregister als Zieloperand an 172 J Teepe 68000 Assembler B Befehls bersicht Arithmetisches Schieben nach rechts MM 1 arithmetic shift right ASR Assembler Syntax ASR lt ea gt Die 16 Bits des angew hlten Speicherwortes werden um eine Position nach rechts verschoben Dazu geh rt das folgende Format des Befehlswortes 15 T4 3 3 232755 10 9 8 7 6 5 4 3 2 4 0 H Wa ET 30a TD L Ter al Effektive Adress
11. Dn nicht erlaubt XXX W 11 000 An nicht erlaubt xxx L 111 001 An 010 R An d16 PC 114 010 An 011 R An d8 PC Xi 11 011 An 100 R An lt data gt nicht erlaubt d16 An 101 R An Erl uterung siehe d8 An Xi 110 R An Kapitel 5 Feld Bitzahl gibt an welches Bit des Operanden gepr ft wird Es werden nur die Bit s 0 2 der Bitzahl benutzt Bit Es wird also Bit zahl gepr ft 68000 Assembler J Teepe mod 8 des Operanden 189 B Befehls bersicht Pr fe Bit und l sche L BCLR test a bit and clear Ill Assembler Syntax BCLR B Dp lt ea gt Dazu geh rt das folgende Format des Befehlswortes 15 714 13 1712 11 710 9 8 3 6 5 4 3 2 1 0 ID ID ID ID Register 1 1 0 Effektive Adress Dp ode Register Bit 11 9 Feld Datenregister Dp Gibt an welches Bit des Operanden gepr ft wird Es werden nur die Bits 0 2 dieses Registers benutzt Es wird also Bit Bit Zahl mod 8 des Operanden gepr ft Bit 5 0 w hlt die Effektive Adresse des Operanden an Die folgenden Adressierungsarten sind erlaubt Adr Art Mode Reg Adr Art Mode Reg Dn nicht erlaubt xXxx W Li 000 An nicht erlaubt XXX L 11 001 An 010 R An d16 PC 111 0
12. MOVE L lt reg gt lt mode gt lt mode gt lt reg gt 27C1 ee SR e 1 gt lt Q u ee LL ez 1 19 Or 1I I0 I0 010 10 0I01I0 I0 01 10 all DEE ME E BE Bee LE SEE EEE BEER ERBE a D A l lt reg gt W L 0 0 0 lt i n d e x gt 9809 1000 27C1 MOVE L 8 Al PC D1 Befehl 1002 9808 Argumentwort 90 J Teepe 68000 Assembler 5 Adressierungsarten von Befehlen Assembler Syntax Adr Art Mode Re xxxx lt data gt 111 011 xxxx ist ein 8 16 oder 32 Bit Wort Vorgang Operand xxxx 912 KONSTANTE UNMITTELBARE DATEN lt data gt Die Bitkombination 100 im Registerfeld w hlt nicht ein Register an er dient vielmehr dazu um zusammen mit dem Wert im Mode Feld di Adressie rungsart festzulegen Mit dieser Adressierungsart werden diese Daten die im Speicher unmittelbar dem Befehlswort folgen als Operand genommen Wenn Sie sch n anst ndig programmieren und keine selbst modifizierende Programme schreiben dann k nnen Sie diese Daten also als Konstante betrachten BEISPIEL Der Befehl MOVE L 512345678 D1 kopiert den Wert 12345678 in das Register D1 Befehl vorher nachher MOVE L 12345678 D D1 11111 11 D1 12345678 68000 Assembler J Teepe 91 5 Adressierungsarten von Befehlen Adr Art Mode Re Assembler
13. 382 J Teepe 68000 Assembler C Mitgelieferte Programmdiskette 6 Editieren Beim Eingeben eines Direktbefehls oder beim Editieren von Zeilen sollten Sie folgendes beachten Die Editierzeile ist stets 72 Zeichen lang Sollten Sie versuchen ber di Zeil hinauszuschreiben so wird der Cursor wieder auf den Anfang der Zeile gesetzt Mit den Cursortasten k nnen Sie den Cursor nach rechts und nach links bewegen Mit der Taste er Home l t sich die Zeile l schen Um Zeichen einzuschieben odpr zu l schen k nnen Sie von Insert Delete und Backspace Gebrauch machen Um die Eingabe zu beenden dr cken sie Return wollen Sie da die ge nderte Zeil ignoriert wird so dr cken Sie Undo Bei EDIT INS und ADD kehren Sie dadurch automatisch in den Direktmodus zur ck Hier sei auch erw hnt da Sie Listvorg nge mit Druck auf die Leertaste anhalten und wieder fortsetzen und mit Return abbrechen k nnen 7 Zahlensysteme berall wo Si Wert angeben m ssen sei es im Assemblerlisting oder im Direktmodus haben Sie verschiedene M glichkeiten der Darstellung zur Auswahl Dezimal XXXX Hexadezimal XXXX Bin r SXXXX Label LABEL Character Ae String bis zu 4 Zeichen SL enee Au erdem k nnen Sie mehrere solcher Werte au er Character und Stringwerten mit den R
14. MIT ADRESSENDIFFERENZ d16 An 31 0 Adressregister An SPEICHER ADRESSE y 15 0 Adressdifferenz d16 gt 31 v 0 Speicherstell O PERAND Mit den drei Bits des Registerfeldes werden die Adressregister A0 A7 angew hlt Di Wert des angew hlten Adressregisters und die Konstante werden zusammenaddiert Das Ergebnis bildet di ffektive Adresse des Operanden Der Operand befindet sich also an der Speicherstelle wohin das Adressregister zeigt 70 J Teepe 68000 Assembler 5 Adressierungsarten von Befehlen Assembler Syntax Adr Art Mode Re d16 An oder d16 An d16 An 101 R An 416 ist ein 16 Bit Wort n in 0 7 Vorgang Adresse Operand An d16 BEISPIEL enn das Registerfeld die Bits 010 Wert 2 enth lt und im Adressregister A2 der Wert 1000 abgespeichert ist dann bezieht sich 8 A2 auf di Speicherstel 1008 Umgekehrt bezieht sich 8 A2 auf di Speicherstel SOFF8 Dies Adressierart ist ein vielbenutztes Verfahren um innerhalb von verschiedenen Tabellen schnell die entsprechenden Wert u adressieren Befehl vorher nachher MOVE L 8 A2 Dl A2 00001000 A2 00001000 D1 11111111 DI 12345678 lauf 00001008 ist 12345678 12345678 68000 Assembler J Teepe 71 5 Adressierungsarten von Befehlen Adr Art Mode Re Ass
15. BEISPIEL enn das Registerfeld die Bits 010 Wert 2 enth lt und im Adressregister A2 der Wert 1004 abgespeichert ist dann wird bei der Ausf hrung des Befehls MOVE L A2 Dl zuerst der Wert von A2 um vier verringert Der Wer ndert sich von 1004 auf 1000 Danach wird der Wert auf der Adresse 1000 als Operand genommen aa Befehl vorher nachher MOVE L A2 D1 A2 00001004 A2 00001000 D1 11111111 DI 12345678 auf 00001000 ist 12345678 12345678 68 J Teepe 68000 Assembler 5 Adressierungsarten von Befehlen Assembler Syntax Adr Art Mode Re An n in 0 7 An 100 R An Vorgang An An K K 1 2 oder 4 Adresse Operand An Das Adressregister A7 der Stack Pointer verh lt sich geringf gig anders als die anderen Adressregister Beim Byte Befehl sBs MOVE B A7 DO wird A7 um zwei statt um eins verringert Damit ist gew hrleistet da der Stack Pointer immer zu einer geraden Adresse zeigt 68000 Assembler J Teepe 69 5 Adressierungsarten von Befehlen Adr Art Mode Re Assembler Syntax d16 An 101 R An d16 An oder d16 An 416 ist ein 16 Bit Wort n in 0 7 Vorgang Adresse Operand An d16 Sg ADRESSREGISTER INDIREKTE ADRESSIERUNG
16. erlaubt dann Adressierungsart bedeutet in dem vorgesehen Der weise findet ist entsprechende Maschi mit einem anderen in TLI N xxx L 11 001 adl6 PC 11 010 N d8 PC Xi 111 01 lt data gt 111 100 Erl uterung siehe Kapitel 5 nicht das B nur Befehlssatz des 68000 nicht fehl gal 68000 Assembler J Teepe da diese nenkode ist m glicher bel Exception statt gt oder es 57 5 Adressierungsarten von Befehlen Die hier erw hnten zw lf Adressierungsarten werden wir hier nacheinander erl utern Sie sind in numerischer Reihenfolge gegliedert Manche Befehle nehmen implizit Bezug auf den Programmz hler den Stack Pointer oder das Status Register Sie werden in diesem Kapitel nicht besprochen Die effektive Adresse In den meisten Befehlen wird auf dem Operand mit iner effektiven Adresse Bezug genommen Diese ffektive Adress ist eine Bitkombination innerhalb des Maschinenbefehls aus dem sich der Operand determinieren l t Dieses Kapitel zeigt wie Di ffektiv Adresse ist meistens an der nieder wertigen Seite des Befehlswortes abgelegt Manche Befehle wi B MOVE haben zwei ffektiv Adressen ine f r den Quelloperanden und eine f r den Zieloperanden
17. Daten Anschl sse DO D15 besitzt Auf Ihrer P x entspricht B W L Der Befehl MOVEP ist eine bequeme Methode um auf 8 Bit Eingabe Ausgabe Kan le Input Output zuzugrei Das bedeutet konkret da der Microprozessor IC 68000 der sich in Ihrem Computer befindet unter anderem 16 atine werden diese Daten Anschl sse dann vom IC Sockel ber r ICs Leiterbahnen mit den dort vorhandenen Speich verbunden Ob Ihre Speicherbaustein ine Datenbreite von l 4 8 oder 16 Bit haben ist dabei unerheb lich Es werden soviel Speicherbaustein genommen da alle 16 Datenleitungen des Prozessors an irgendeinen Speicher IC ange schlossen sind 282 J Teepe 68000 Assembler B Befehls bersicht Eingabe Ausgabe zur von Peripherie move periperal data E al MOVEP Auf dem Bild auf der n chsten Seite ist eine Darstellung f r Speicherbausteine mit 8 Bit Datenbreite gegeben Die ICs f r Ein und Ausgabe sind an die gleichen Datenleitungen wie die Speicher ICs angeschlossen Viele ICs f r Ein und Ausgabe haben aber eine Datenbus Breite von 8 Bit Das ist teils aus histori schen Gr nden teils auch um Anschl sse zu sparen Die ICs sind dadurch kleiner und Ihr Computer auch Ein C mit 8 Datenanschl ssen DO D7 kann ich auf zwei Arten anschlie e
18. 1 5 10 9 8 I Tee Te TI ef 72 1 EL TO l Interrupt Mask Supervisor State Trace Mode Bild 2 4 Statusregister Bit Zuordnung des System Bytes Die Bits 2 und Io bilden eine Interrupt Maske die bestimmt welche Hardware Interrupts bedient werden und welche nicht Mehr ber Interrupts bei der Besprechung von Exceptions in Kap 6 Das S Bit Supervisor Bit bestimmt ob der Prozessor sich in Supervisor Mode S 1 oder in User Mode S 0 befindet Der Unterschied zwischen Supervisor Mode und User Mode wird in Kap 2 1 besprochen Das T Bit Trace Bit bestimmt ob der Prozessor nach jeder Instruktion eine Exception macht T 1 oder nicht T 0 Durch die Benutzung des Trace Bit wird es einfach inen Debugger zu schreiben Mehr Information ber Exceptions in Kap 6 30 J Teepe 68000 Assembler 3 Datenstrukturen Kapitel 3 Datenstrukturen 3 1 DER ADRESSBEREICH Die 68000 Familie verf gt ber einen Adressraum von 32 Bits so da ein Adressbereich von 2 Bytes also 4 294 967 296 zur Verf gung steht Innerhalb von diesem Speicherplat sind s mtlich Befehle s mtliche Daten und alle Eingabe Ausgabe Kan le untergebracht 15 14 13 12 11 10 9 8 amp 8 7 6 5 4 3 2 1 0 Adresse 00000000 Byte 00000000 Byte 00000001 Adresse 00000002 Byte 00000002 Byte 00000003 Adresse
19. Bit 7 6 Gr e Feld 00 Byte Befehl LSL B 01 Vort Befehl LSL W 10 Langwort Befehl LSL W Bit 5 i Feld 0 Die Bits 11 9 beziehen sich auf eine Konstante l Die Bits 11 9 beziehen sich auf ein Datenregister Bit 2 0 Register Feld w hlt ein Datenregister als Zieloperand an 68000 Assembler J Teepe 255 B Befehls bersicht Pi Logisches Schieben nach links LSL logical shift left IL Assembler Syntax LSL lt ea gt Die 16 Bits des angew hlten Speicherwortes werden um eine Position nach links verschoben Dazu geh rt das folgende Format des Befehlswortes 15 14 13 12 11 10 9 8 7 6 5 4 3 2 d O E DER OS Ad 0 VO E ee HA E E Effektive Adress Mode Register Bit 5 0 W hlt die Effektive Adress des Quell operanden an Die folgenden Adressierungsarten sind erlaubt Adr Art Mode Reg Adr Art Mode Reg Dn nicht erlaubt xxx W 111 000 An nicht erlaubt xxxX L 111 001 An 010 R An dl6 PC nicht erlaubt An 011 R An d8 PC Xi Inicht erlaubt An 100 R An lt data gt nicht erlaubt d16 An 101 R An Erl uterung siehe d8 An Xi 110 R An Kapitel 5 F r die Adressierungsart Dn siehe auf der vorherigen Seite Benutzen Sie LSR wenn nach rechts geschoben werden soll A
20. 68000 Assembler J Teepe 201 B Befehls bersicht mm Pr fe Bit BTST test a bit Assembler Syntax BTST B Dp lt ea gt Dazu geh rt das folgende Format des Befehlswortes 15 714 13 1712 11 710 9 8 3 6 5 4 3 2 1 0 101101 0 O Register 1 0 0 Effektive Adress Dp ode Register Bit 11 9 Feld Datenregister Dp Gibt an welches Bit des Operanden gepr ft wird Es werden nur die Bits 0 2 dieses Registers benutzt Es wird also Bit Bit Zahl mod 8 des Operanden gepr ft Bit 5 0 w hlt die Effektive Adresse des Operanden an Die folgenden Adressierungsarten sind erlaubt Adr Art Mode Reg Adr Art Mode Reg Dn nicht erlaubt XXX W 111 000 An nicht erlaubt XXX L 111 001 An 010 R An d16 PC 111 010 An 011 R An d8 PC Xi 1374 011 An 100 R An lt data gt 111 100 d16 An 101 R An Erl uterung siehe d8 An Xi 110 R An Kapitel 5 Benutzen Sie wenn das angew hlte Bit BCHG getestet und ge ndert werden sol BCLR getestet und gel scht werden sol BSET getestet und gesetzt werden soll 202 J Teepe 68000 Assembler B Befehls bersicht Vergleiche Register mit Grenzen rm check register against bounds CHK Wenn Dn lt Null oder
21. Condition Code Register bleibt unver ndert 248 J Teepe 68000 Assembler B Befehls bersicht Lade effektive Adresse im Register Pi load effective address LEA IL Format des Befehlswortes 15 14 elt E E 8 7 6 5 4 3 2 1 O O 11 0 O Register 1 1 232 Effektive Adress An Mode Register Bit 11 9 Registerfeld W hlt eines der acht Adress register als Zieloperand an BIE SaO W hlt die Effektive Adress des Quell operanden an Die folgenden Adressierungsarten sind erlaubt Adr Art Mode Reg Adr Art Mode Re Dn nicht erlaubt XXX W 111 000 An nicht erlaubt xxX L 111 001 An 010 R An ALSLPEY 4 TIL Lt OTO An nicht erlaubt d8 PC Xi 111 011 An nicht erlaubt lt data gt nicht erlaubt d16 An 101 R An Erl uterung siehe d8 An Xi 110 R An Kapitel 5 Benutzen Sie MOVE wenn der Datentransfer in umgekehrter Richtung stattfinden soll Siehe auch MOVEA PEA 68000 Assembler J Teepe 249 B Befehls bersicht r Reserviere Bereich im Stack LINK link and allocate ILI SP 4 gt SP An gt SP SP gt An SP d16 Operandgr e Assembler Syntax Beschreibung gt SP keine LINK An d16 Adressdifferen Die Wert des angeg
22. ode Register Bit 7 6 Gr e Feld Aufbau der 00 Byte Befehl CLR B Argumentw rter 01 Wort Befehl CLR W siehe Kap 3 8 10 Langwort Befehl CLR L Bit 5 0 Die Effektive Adresse w hlt den Zieloperand an Die folgenden Adressierungsarten sind erlaubt Adr Art Mode Reg Adr Art Mode Reg Dn 000 R Dn xxx W 111 000 An nicht erlaubt xxxX L 111 001 An 010 R An dl6 PC nicht erlaubt An 011 R An d8 PC Xi Inicht erlaubt An 100 R An lt data gt nicht erlaubt d16 An 101 R An Erl uterung siehe d8 An Xi 110 R An Kapitel 5 Argumentwort Bit 7 6 00 gt Datenfeld ist die niederwertig H lfte des 1 Argumentwortes 7 6 01 gt Datenfeld ist das 1 Argumentwort 7 6 10 gt Datenfeld ist 1 2 Argumentwort Bi Bi aa Ia Siehe auch MOVEO MOVI 206 J Teepe 68000 Assembler B Befehls bersicht Vergleiche Ip compare cMP IL Ziel Quelle Operandgr e CMP B Byte 8 Bit CMP W vort 16 Bit CMP L Langwort 32 Bit Assembler CMP x lt ea gt Dn Quelle Ziel Syntax x entspricht B W L Beschreibung Der Quelloperand wird vom angegebenen Datenregister subtrahiert und das Condition Code Register wird entsprechend gesetzt Das Datenregister wird nicht ge ndert Der Operandgr e kann ein Byte
23. Bit 7 6 Gr e Feld 00 Byte Befehl ADDO B 01 Wort Befehl ADDO W 10 Langwort Befehl ADDQ L Bit 5 0 Die Effektive Adresse w hlt den Zieloperand an Die folgenden Adressierungsarten sind erlaubt Adr Art Mode Req Adr Art Mode Re Dn 000 R Dn xxx W 111 000 An Zi 001 R An xxx L 11 001 An 010 R An dl6 PC nicht erlaubt An 011 R An d8 PC Xi Jnicht erlaubt An 100 R An lt data gt nicht erlaubt d16 An 101 R An Erl uterung siehe d8 An Xi 110 R An Kapitel 5 Adressierungsart An nicht f r Byte Befehle erlaubt Benutzen Sie ADDI wenn die Konstante au erhalb des Bereiches 1 8 liegt Siehe auch ABCD ADD ADDA ADDX SUBO 150 J Teepe 68000 Assembler B Befehls bersicht Addiere mit Extend Bit A add extended ADDX IL Quelle Ziel X gt Ziel Operandgr e ADDX B Byte 8 Bit ADDX W dort 16 Bit ADDX L Langwort 32 Bit Assembler ADDX x Dn Dn Syntax ADDX x An An Quelle Ziel x entspricht B W L Beschreibung Der Quelloperand das Extend Bit und der Zieloperand werden addiert Das Ergebnis wird im Zieloperand abgespeichert Die Operanden k nnen in zwei Arten adressiert werden Dn Datenregister zu Datenregister Die
24. C SEELEN oOperand Ser LH I 11 MSB LSB v X lt 252 J Teepe 68000 Assembler B Befehls bersicht Logisches Schieben nach links logical shift left Ein al LSL um n Positionen bedeutet s Bin rzahl ohne multipliziert wird HINW EIS Der Befehl ist weitgehend hnlich zum Befehl Unterschied ist der sobald das hochwertige des Verschieben mi Es gibt drei Be o Vorzeichen aufgefa t u LSL da der Operand mit 2n ASL Der ehlsformen O Der Befehl LSL x t lt data gt Dn x entspricht da das ASL das V Bit Bit des Operanden sich w hrend ndestens einmal ndert B setzt W L schiebt ein Datenregister nach links um soviele Positionen wie in der Konstante angegeben ist Die Maximalzahl ist acht Der Befehl LSL x Dn Dn x entspricht B schiebt ein Datenregister nach links W L Ein zweites Datenregister legt fest um wieviele Positionen geschoben wird Der Befehl LSL lt ea gt icherstell 16 Bit schiebt in Sp Position nach links 68000 Assembler J Teepe um eine 253 B Befehls bersicht Pi Logisches Schieben nach links LSL logical shift left IL er er Condition Code Register C erh lt den Wert der zuletzt aus dem hochwertigen Bit des Operanden h
25. 15 14 13 12 11 10 9 8 7 6 D 4 3 2 10 XIII XII XIII XII Effektive Adresse Mode Register Di ffektive Adresse besteht aus zwei Feldern mit je drei Bit das Mode Feld und das Register Feld Das Mode Feld w hlt die Adressierungsart an und das Registerfeld b ichnet meistens ein Register 58 J Teepe 68000 Assembler 5 Adressierungsarten von Befehlen Assembeler Syntax Adr Art Mode Reg Dn nin0 T Dn 1 000 R Dn Vorgang Operand Dn DATENREGISTER DIREKTE ADRESSIERUNG Dn Der Operand ist das Datenregister spezifiziert im Registerfeld Mit den drei Bits des Registerfeldes werden die Datenregister D0 D7 angew hlt Datenregister Dn 31 0 O PERAND BEISPIE Befehl vorher nachher MOVE B D2 D4 D2 22222222 DZ 22222222 D4 44444444 DA 44444422 ADD W D1 D2 D1 11111111 D1 11111111 D2 22222222 D2 11113333 CLR L D7 D7 7 1 11111 D7 _ 00000000 68000 Assembler J Teepe 59 5 Adressierungsarten von Befehlen Adr Art Mode Re Assembeler Syntax An 001 R An An nin0 7 Vorgang Operand An a ADRESSREGISTER DIREKTE ADRESSIERUNG An Der Operand ist das Adressregister spezifiziert
26. Format des Befehlswortes 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 O Benutzen Sie ANDI zum SR wenn Sie das SR UND verkn pfen m chten ORI zum SR wenn Sie das SR ODER verkn pfen m chten MOVE zum SR wenn Sie das SR ohne R cksicht auf die bestehenden Bits ndern m chten EOR um CCR wenn Sie nur das Condition Code Register ndern m chten Siehe auch EOR um CCR ORI zum SR ANDI zum SR 238 J Teepe 68000 Assembler B Befehls bersicht Vertausche Register un exchange registers EXG L I Quelle lt gt Ziel Operandgr e Langwort 32 Bit Assembler EXG Dn Dn Quelle Ziel Syntax EXG An An EXG Dn An Beschreibung Die Inhalt weier Register werden vertauscht Es werden alle 32 Bits der Register getausch Gr Es gibt drei verschiedene Moden EXG Dn Dn vertausche Datenregister EXG An An vertausche Adressregister EXG Dn An vertausche ein Datenregister und ein Adressregister Condition Code Register keine nderung 68000 Assembler J Teepe 239 B Befehls bersicht eg Vertausche Register EXG exchange registers Taa ata See EE 2029 8 7 6 5 4 3 2 1 0 heL O OA Ziel L Ls Operations Quell Register ode Register Bit 11 9 Registerfeld w hlt eines der
27. Nicht n Fehler Der gew Adressie a i Ter hl FILE iden ierbarer nschte rungsmodus darf an dieser S werden Der Adre existier Es wird telle nicht angewandt ssierungemodus nicht auf ein nicht definier tes Label verwiesen Direktmo Datei ex Fehlerhafte Eingabe im dus istiert nicht J Teepe 68000 Assembler C Mitgelieferte Programmdiskette Double def label Illegal reg Adr out of r nge Value out of range Abort word size Illegal Printer not on line Unknown word size No data register Disk XX Label wur de um zweiten Mal definiert Sie haben i n Verbindung mit inem Adress oder Daten register eine falsche Nummer angegeben 0 7 sind zul ssig Ein Branch Befehl verzweigt zu iner Adresse die nicht in seinem Bereich liegt Dieser Fehler kann auch auftauchen wenn Sie mit einem Branch S Befehl unmittelbar zur n chsten Adresse springen wollen Der Wert kann mit der gew hlten Wortbreite dargestel Sie haben abgebroch lt nicht werden den Assemblier vorgang mit en einem Tastendruck Die gew nschte Wortbreite ist bei dem Befehl nicht erlaubt Der Druck eingescha Gr nden Sie haben er ltet nicht in ist nicht oder aus anderen E
28. T Siehe auch MOVE MOVEA MOVE USP ANDI zum SR ORI zum SR 270 J Teepe 68000 Assembler B Befehls bersicht Kopiere vom zum User Stack Pointer RE move User Stack Pointer Move privilegierter Befehl use IL Wenn Supervisor Mode USP gt An bzw An gt SP Wenn User Mode Ausl sung Exception 8 Kap 6 Verletzung Privilegium Operandgr e Langwort 32 Bit Assembler MOVE USP An Quelle Ziel Syntax MOVE An USP Beschreibung Venn sich der Prozessor im Supervisor Mode befindet wird der Inhalt des User Stack Pointers zum oder vom Adressregister kopiert Wenn der Prozessor sich dagegen in User Mode befindet findet ein Trap statt Der Supervisor Mode wird im Kap 2 beschrieben Condition Code Register keine nderungen 68000 Assembler J Teepe 271 B Befehls bersicht r Kopiere vom zum User Stack Pointer Move move User Stack Pointer use privilegierter Befehl Ill Format des Befehlswortes 15 14 13 22 11 10 9 8 7 ep 4 3 2 0 011jI0jI0 1111111010 11 11 0 d Adress Lo 1 1 1 Register Bit 3 Feld d spezifiziert die Richtung der Operation 0 kopieren vom Adressregister zum User Stack Pointer l kopieren vom User Stack Pointer zum Adressregister Bit 2 0 Registerfeld w hlt das Adressregister an Benutzen Sie MOVE
29. o T e a E o a A 1 1 Adress I 1 1 1 Register x 5 5 7 Bit 2 0 Feld Adressregister spezifiziert welches Adressregister f r den Aufl sungsbefehl benutzt werden soll 68000 Assembler J Teepe 373 B Befehls bersicht 374 J Teepe 68000 Assembler C Mitgelieferte Programmdiskette Anhang C Bedienungsanleitung der mitgelieferten Programmdiskette Im gef Die Les aus Ver Gew F r bef Public Domain Bereich haben wir eine Diskette unden mit einer interaktiven Debugger Software se Diskette legen wir dem Buch bei damit der er das Erlernte schnell auf seinem Atari probieren kann Selbstverst ndlich wird weder vom lag noch vom Autor dieses Buches irgendwelche hrleistung f r die Software bernommen Ihren Comfort haben wir die sich auf der Diskette indliche Dokumentationsdatei hier aufgenommen Beschreibung des Assemblers Allgemeines Dieser Assembler erlaubt das Erstellen von Maschinensprach programmem unter Verwendung der allgemein gebr uchlichen 68000er Befehle Er arbeitet ilenorientiert kann aber auch Dateien die mi einem anderen Editor erstellt wurden verarbeiten Bei der Programmierung wurde auf einfache Handhabung ert gelegt Das Quellisting bleibt stets im Speicher benso wird auch das beim Assemblieren entstandene Programm in den
30. f r die professionelle Programm Erstellung ein Entwicklungspaket mit Editor Assembler Linker und Debugger benutz EDITOR ASSEM BL L ER NK ER DEBUGG ER Sie brauchen einen ED TOR um Ihr Programm einzu tippen Da und meldet Ihn Programms Editor den oder Assembler nochmal auf ormale Objec n keine f bler einen Wen Assem Der L NKER nach bearbeit Ihnen ggf Wenn das so ist di Verbinder der ASSEMBLER Ihr Programm formale Fehler innerhalb des dann m ssen Sie mit dem Fehler verbessern und den rufen rstellt der Fehler auftreten t Code f g diesen Objectcode zusammen mit anderen Code und Programm Auch wenn brauchen Sie den Li schreibt daraus das komplette Linker rstellten vorher Object ablauff hige Sie nur einen Objectcode haben um aus dem Objectcode den Programmcode zu erst Wenn auch der Linker llen sein Arbeit ohne Fehler meldungen getan hat an Sie haben dann formale Fehler ent nicht F 18 ein Programm vorliegen h lt da das Programm dann fehlerfrei f ngt die Arbeit erst richtig das keine Das bedeutet aber noch lange funktioniert J Teepe 68000 Assembler 1 Einf hrun Um das Sie den
31. langsam dagegen Programme von einem Basic Interpreter F r manche Anwendungen wie Bi nterruptbehand lungen innerhalb des Betriebssystems ist eine u lange Rechenzeit direkt fatal weil dann Interrupts verloren gehen 68000 Assembler J Teepe 11 1 Einf hrung 1 2 3 PROGRAMMGR SSI Ia Ein Programm in Assembler ist meistens rheblich k rzer als ein Programm das in in einer h heren Sprache erstellt wurde Extremes Beispiel Ein Programm das nur den Text HALLO WIE GEHT S auf den Bildschirm bringen soll braucht in Assembler etwa 30 Byte in C etwa 6 kByte und in Pascal ca 12 kByte 1 2 4 EIN UND AUSGABE Nicht alle Ein und Ausgabem glichkeiten die die Hardware erlaubt werden von allen h heren Sprachen unterst tzt Beispiele E CO Anwahl der Farbe auf Ihrem Bildschirm CO Abfragen und Setzen der Systemzeit CO Umschalten der Druck Ausgaben eines Programms von einem Printerausgang auf den anderen CO Finschalten Ihrer Kaffeemaschine die Sie gerad ber eine selbstgestrickte Platine an Ihren Computer angeschlossen haben Wenn Sie innerhalb Ihres Programms solche Eigen schaften brauchen m ssen Si aber nicht auf die Anwendung von h heren Sprachen verzichten Sie k nnen die ben tigten Routinen zuerst in Assembler schreiben und austesten
32. adressiert Registern Z Register wird ten Adresse oder 4 bis um min ur ist nur ein Datentra Speicher abgespeichert an der Operandl ten Adress us der niedrigs folge vom Abspei bis AO und Nach Beendigu register di ng Adress chern ist des Bef ns erlaubt An den erste spezifizier E fer von g Das Paj ng e in Bytes 2 Die Reihen von Adres dann von Datenregiste hls th lt des Registers n zuletzt Wenn MOVEM in iner der ander siehe Liste oder geladen ab h chsten Adresse von Datenregist werden di n Moden adressiert sregister A7 r D7 bis DO das Adress gespeicherten EE 2 der angegebe Die Reihenfolge der Daten ist Register n Adr er DO Adressregister A0 bis A7 278 bis D7 u gespeichert esse bis zur nd dann von J Teepe 68000 Assembler B Befehls bersicht Kopiere mehrere Register rm move multiple registers MOvEM Ill Condition Code Register keine nderungen Format des Befehlswortes kr S E e aa A 211 KEE 8 7 6 5 4 3 2 1 O IOLA Ee DR Era BC He EES D GE N A 3215 Effektive Adress Mode Register Maske mit Registerlist Bit 10 d Feld bestimmt die Richtung der Daten bertragung 0 von Register zu Speicher 1 von Sp
33. 68000 Assembler J Teepe 53 4 Befehlssatz 4 2 4 SCHIEBE UND ROTIERBEFEHLE ASL Arithmetisches Schieben nach links ASR Arithmetisches Schieben nach rechts LSL Logisches Schieben nach links LSR Logisches Schieben nach rechts ROL Rotiere links ohne Extend Bit ROR Rotiere rechts ohne Extend Bit ROXL Rotiere links mit Extend Bit ROXR Rotiere rechts mit Extend Bit SWAP Vertausche Register H lften 4 2 5 BIT BEFEHLE BCHG Pr fe Bit und ndere BCLR Pr fe Bit und l sche BSET Pr fe Bit und setze BTST Pr fe Bit TAS Pr fe und setze Operand 4 2 6 BCD BEFEHLE ABCD Addiere BCD Zahl mit Extend Bit NBCD Negiere BCD Zahl mit Extend Bit SBCD Subtrahiere BCD Zahl mit Extend Bit 4 2 7 PROGRAMMSTEUERBEFEHLE 4 2 7 1 BEDINGTE PROGRAMMSTEUERBEFEHLE Bcc Springe bedingt DBcc pr fe dekrementiere und springe Scc Setze Byte aufgrund Bedingung Dieses cc steht stellvertretend f r die entspre chende Bedingung F r die komplette Befehlsverzeich nis siehe bei Bcc DBcc oder Scc nach 54 J Teepe 68000 Assembler 4 Befehlssatz 4 2 7 2 UNBEDINGTE PROGRAMMSTEUERBEFEHLE
34. 68000 Assembler J Teepe 141 B Befehls bersicht rm Addiere bin r ADD add IL MR a E e e ul es Condition Code Register de eji WE DEE C wird gesetzt wenn ein bertrag generiert wird rd sonst zur ckgesetzt V wird gesetzt wenn ein berlauf generiert wird rd sonst zur ckgesetzt Z wird gesetzt wenn das Ergebnis gleich Null ist rd sonst zur ckgesetzt N wird gesetzt wenn das Ergebnis negativ ist rd sonst zur ckgesetzt X Erh lt den gleichen Wert als das C Bit Format des Befehlswortes 15 L 13 12 IK 10 9 8 7 6 5 4 3 2 L Q 1 11 O 1 Register Operations Effektive Adress Dn Mode Mode Register Bit 11 9 Registerfeld w hlt eines der acht Daten register an Bit 8 6 Feld Operationsmode ADD B ADD W ADD L Operation 000 001 010 lt ea gt Dn gt Dn 100 10 110 Dn lt ea gt gt lt ea gt 142 J Teepe 68000 Assembler Addiere bin r add Bit ist 5 0 Wenn di also lt ea gt Dn gt Dn B Befehls bersicht emm ADD II Effektiv Adresse der Quelloperand sind die folgenden Adressierungsarten erlaubt Adr Art Mode Req Adr Art Mode Re Dn 000 R Dn xXxx W 111 000 An x 001 R An
35. Kap 5 1 5 Es der Operandgr e X N Z V E 7 Condition Code Register Lo l I I C wird gesetzt wenn ein Leihen generiert wird rd sonst zur ckgesetzt V wird gesetzt wenn ein berlauf generiert wird rd sonst zur ckgesetzt Z wird gesetzt wenn das Ergebnis gleich Null ist rd sonst zur ckgesetzt N wird gesetzt wenn das Ergebnis negativ ist rd sonst zur ckgesetzt X bleibt unver ndert 68000 Assembler J Teepe 213 B Befehls bersicht rm Vergleiche Speicherinhalt CMM compare memory IL Format des Befehlswortes 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 O TOL tz TE TE Ziel 1 Gr e 0 0 1 Quell Register Register Bit 11 9 w hlt einer der acht Adressregister als zielregister an Bit 7 6 Gr e Feld Aufbau der 00 Byte Befehl CMPM B Argumentw rter 01 Wort Befehl CMPM W siehe Kap 3 8 10 Langwort Befehl CMPM L Bit 2 0 w hlt einer der acht Adressregister als Quellegister an Siehe auch CMP CMPA CMPM 214 J Teepe 68000 Assembler pr fe dekrementiere und springe test condition decrement and branch B Befehls bersicht DBcc ist ein berbegriff siehe Befehlsliste Wenn Bedingung unwahr dann Dn 1 gt Dn Fc DBce IL wenn Dn 1 dann PC d gt PC
36. Mode Register Bit 5 0 w hlt di Effektive Adress des Quell operanden an Die folgenden Adressierungsarten sind erlaubt Adr Art Mode Reg Adr Art Mode Reg Dn nicht erlaubt XXX W ELI 000 An nicht erlaubt xxxX L 111 001 An 010 R An dl6 PC nicht erlaubt An 011 R An d8 PC Xi Inicht erlaubt An 100 R An lt data gt nicht erlaubt d16 An 101 R An Erl uterung siehe d8 An Xi 110 R An Kapitel 5 F r die Adressierungsart Dn siehe auf der vorherigen Seite Benutzen Sie ASL wenn nach links geschoben werden soll LSR Wenn das hochwertige Bit den Wert 0 erhalten soll Siehe auch LSR ROL ROR ROXL ROXR SWAP 68000 Assembler J Teepe 173 B Befehls bersicht emm Bee I Springe branch conditionally bedingt Bcc ist ein berbegriff siehe Befehlsliste Wenn Bedingung wahr dann PC d gt PC Gr e der Adressdifferenz d Bcec S 8 Bit Bcc Ww 16 Bit Assembler Syntax Bcc S Marke Marke innerhalb 128 Byte vom PC Bcec W Marke Marke innerhalb 32 kByte Byte vom PC Beschreibung Die Bezeichnung Bcc im Kopf dieser Seite ist stell vertretend f r die Befehle BCC BCSf BEO BGE BGT BHI BLE BLS BLT BMI BN
37. 1 5 14 3 322 211 ET Se 8 7 6 5 4 3 2 1 0 1 E11 E VC WU OA Ziel Hei 1 0 EG EI VE ARENS DEES Quell Register Register Bit 11 9 Registerfeld w hlt eines der acht Daten oder Adressregistern als Zieloperand an Bit 3 Das A bit w hlt die Adressierungsart an 0 Adressierungsart Dn Die Operation erfolgt von Datenregister zu Datenregister db Adressierungsart An Die Operation erfolgt von Speicherpla u Speicherplatz Die Operanden werden durch das Adressregister in Pr dekrement mode adressiert Siehe Kap 5 Bit 2 0 Registerfeld w hlt einer der acht Datenoder Adressregistern als Quelloperand an Siehe auch ADDX NBCD SBCD 140 J Teepe 68000 Assembler B Befehls bersicht Addiere bin r r add ADD IL Quelle Ziel gt Ziel Operandgr e ADD B Byte 8 Bit ADD W dort 16 Bit ADD L Langwort 32 Bit Assembler Syntax Operation ADD x lt ea gt Dn lt ea gt Dn gt Dn ADD x Dn lt ea gt Dn t lt ea gt gt lt ea gt x entspricht B W L Beschreibung Der Quelloperand wird bin r zum Zieloperand addiert und das Ergebnis wird im Zieloperand abgespeichert Einer der beiden Operanden mu ein Datenregister sein Die Gr e des Operanden sowie die Angabe welcher Operand das Datenregister ist sind im Mode Feld enthalten
38. 33 Datenl nge auf Stack 102 Datenregister 23 24 Datentypen Bezeichnung 33 BBEE aa rn 215 DBCG eri d aa ira EE 215 DIR nase ea 215 BS De Dre are 215 DBE soat 5008 Wenns 215 DBGE au aus ee 215 DBSE u Bean 215 BIS EE 215 DBES ya 22 aa 24 5 DBEE a a a 215 DEME wi an 215 DBNE Zain ee 215 DBPL ss ARE SEN RE DE 215 DBT Aa a n TA a 215 DEV EE 215 DBEVSPA SEHEN ESSEN EEE 215 Debugger 13 18 30 Disassembler 14 Diskette mitgeliefert 19 375 Divident 223 227 Division durch Null 115 DIVLESOr var 223 227 DIVS ra 105 222 DIVUS a ie 105 226 J Teepe 68000 Assembler F Stichwortverzeichnis Eingabe Ausgabe 12 31 INEELLUDES midi 125 Ee be Seh 18 Invertieren 40 Effektive Adress 58 TPL er ars res 127 EOR see ZA 230 Interrupt Priority EORI 4 0 3 0 20 0 nen 2 33 LEVEL nun anne 127 EOR um CR ged 235 EOR Dt E aaa 2 37 Exception 56 104 106 JME ana are 244 Exception Behandlungs JOR Arne en a 246 routinen u a 122 Exceptions Umbiegen von 123 DANgWOTE arena 33 RG EE 239 RE er Ben ee en 248 EXI aa rare er 241 ELEQ ce aune e a ale a t02 Exklusives ODER 230 ine 1010 Emulator i7 Bxtend Bit e eee 29 ine 1111 Emulator 7 ENK er ae 250 Tinker nee 18 Fac
39. 68000 Assembler J Teepe 389 E Befehlscode in numerischer Reihenfolge Bit 0 13 TL 15 Y vY YV YV V Y V YV VY V YV YV YV V Vv Yy ORI x 0 0 x x x x x x 0 0 x x x x x x x 0 0 x 0 0 x x x x x x 0 0 x x x x x x ORI zum CCR ORI zum SR BTST EP mm E mm Bi PI BCHG BCLR BS MOVE ANDI ANDI zum CCR AND1 zum SR d 1 SUBI ADDI BTST BCHG BCLR BS EORI Fi D EORI zum CCR B EORI zum SR EN E 2 VOM SR em P OV OVE EGX i E OVE CHK EA CLR 0 0 x x x x x x x x LE OVE zum CCR OT OVE zum SR BCD SWAP PEA EXT X X X x x J Teepe 68000 Assembler 390 E Befehlscode in numerischer Reihenfolge Bit 0 M GC Di M M Di MOV TST TAS x x x 0 x x x x OV OVE zum USP OVE vom USP ILLEGAL OP TRAP LINK UNLK RESET STOP RTS TRAPV RTR JSR x x x 0 1 x x ADDO Scc 18 15 k YYYY YYYY YYYY v v v X x DBcc SUBO Bcc BSR OVEQ OR DIVU SBCD DIVS SUB x x x x x x x x x SUBA SUBX x x x x x x x x x x Exception 10 CMP CMPA 391 68000 Assembler J Teepe E Befehlscode in numerischer Reih
40. N BCHG Ill Pr fe Bit und ndere test a bit and change Assembler Syntax BCHG B lt data gt lt ea gt Dazu geh rt das folgende Format des Befehlswortes 15 14 13 12 11 10 9 8 0 0 0 0 1 0 0 0 7 6 5 4 3 2 1 0 Effektiv ode Adress Register Bitzahl ee ee E EE Feld Bitzahl Bit 540 w hlt di Effektive Adresse des Operanden Die folgenden Adressierungsarten sind erlaubt Adr Art Mode Reg Adr Art Mode Reg Dn nicht erlaubt XXX W 111 000 An nicht erlaubt XXX L 114 001 An 010 R An d16 PC 111 010 An 011 R An d8 PC Xi 11 011 An 100 R An lt data gt Jnicht erlaubt d16 An 101 R An Erl uterung siehe d8 An Xi 110 R An Kapitel 5 gibt an welches Bit des Operanden gepr ft wird Es werden nur die Bits 0 2 der Bitzahl benutzt Es wird also Bit Bit Zahl mod 8 des Operanden gepr ft 184 J Teepe 68000 Assembler B Befehls bersicht Pr fe Bit und ndere r test a bit and change BCHG IL Assembler Syntax BCHG B Dp lt ea gt Dazu geh rt das folgende Format des Befehlswortes 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 l 0 al 0O Register t K 0 ilk Tl Effektive Adress Dp ode Register Bit 11 9 Feld Datenre
41. lt ea gt Quelle Ziel Syntax x entspricht B W L Beschreibung Der Quelloperand wird in den Zieloperand kopiert Die Daten werden gepr ft und das Condition Code Register wird entsprechend gesetzt Die Operandgr e kann Byte Wort oder Langwort sein kesak Eee Condition Code Register C wird zur ckgesetz V wird zur ckgesetzt Z wird gesetzt wenn das Ergebnis gleich Null ist Wird sonst zur ckgesetz N wird gesetzt wenn das Wird sonst zur ckgesetz X bleibt unver ndert ki rgebnis negativ ist CT Di S 262 J Teepe 68000 Assembler Kopiere Daten move date Format des Befehlswortes E 14 213 12 44 70229 8 B Befehls bersicht L Move IL 7 6 5 4 3 2 1 0 1 1 Gr e ziel Om e EL Ek e l Register Mode l Mode Register Bit 13 12 Gr e Feld 01 Byte Befehl MOVE B 11 Wort Befehl MOVE W 10 Langwort Befehl MOVE L Bit 11 6 Effektive Adress E des Zieloperanden 68000 Assembler J Teepe folgenden Adressierungsarten sind erlaubt Adr Art Mode Req Adr Art Mode Re Dn 000 R Dn xxx W EK 000 An nicht erlaubt xxx L 711 001 An 010 R An dl6 PC nicht erlaubt An 011 R An d8 PC Xi Jnicht erlaubt An 100 R An lt data gt nicht
42. 3 Datenstrukturen 3 5 ADRESSIERUNG VON BYTES W RTERN UND LANGW RTERN 3 5 1 DARSTELLUNG IN 8 BIT Obwohl der 68000 ein 16 bit Prozessor ist stellen wir ihn aus didaktischen Gr nden zun chst vor als w r r ein 8 Bit Prozessor Bedenken Sie dabei da Sie ohne Ihren Computer zu ffnen und auf die Platine u schauen niemals feststellen k nnen ob sich darin nun ein 8 Bit oder ein 16 Bit Datenbus befindet da das logische Verhalten der beiden Prozessoren Typen voll identisch ist Die hier gegebene 8 Bit Vorstellung ist tats chlich f r den 8 Bit Prozessor der 68000 Familie den 68008 zutreffend wir benutzen hier die Adresse 1000 als Beispiel f r die Lage der Adressen im Speicher So umgehen wir die Benutzung von irref hrenden W rtern wie oben und unten 7 6 5 4 3 2 1 O 1000 Byte 0 1001 Byte 1 1002 Byte 2 1003 Byte 3 1004 Byte 4 1005 Byte 5 1006 Byte 6 1007 Byte 7 MSB LSB Bild 3 3 Adressierung nachfolgender Bytes 8 Bit MSB most significant bit hochwertig LSB least significant bit niederwertig 34 J Teepe 68000 Assembler Datenstrukturen 000 B B R 002 Byte 0 hochwertiges Byte Wort _ Byte 1 niederwert B
43. 304 J Teepe 68000 Assembler B Befehls bersicht Logisches Komplement FT logical complement NoT IL Format des Befehlswortes T55 14 E E Ee EA 8 7 6 5 4 3 2 1 O 10111 011 0 0 321 121 O Gr e Effektive Adress Mode Register Bit 7 6 Gr e Feld Aufbau der 00 Byte Befehl NOT B Argumentw rter sl 01 Wort Befehl NOT 10 Langwort Befehl NOT L siehe Kap 3 8 Bit 5 0 Die Effektive Adresse w hlt den Zieloperand an Die folgenden Adressierungsarten sind erlaubt Adr Art Mode Reg Adr Art Mode Reg Dn 000 R Dn xxx W 111 000 An nicht erlaubt xxx L 111 001 An 010 R An d16 PC nicht erlaubt An 011 R An d8 PC Xi nicht erlaubt An 100 R An lt data gt nicht erlaubt d16 An 101 R An Erl uterung siehe d8 An Xi 110 R An Kapitel 5 Benutzen Sie NEG wenn Sie das Zweierkomplement des Operanden suchen Siehe auch OR EOR NOT TST 68000 Assembler J Teepe 305 B Befehls bersicht rm Logisches ODER OR inclusive or logical L Quelle v Ziel gt Ziel Operandgr e OR B Byte 8 Bit OR W dort 16 Bit D OR L Langwort 32 Bit Assembler Syntax Operation OR x lt ea gt Dn lt ea gt v Dn gt Dn OR x Dn lt ea gt Dn v lt ea gt
44. 32 0080 TRAP Befehl 0 33 0084 TRAP Befehl 1 34 0088 TRAP Befehl 2 46 00B8 TRAP Befehl 14 47 00BC TRAP Befehl 15 Fin TRAP Befeh erzeugt einer der obenstehenden Exceptions Weitere Details finden Sie bei der Beschreibung des TRAP Befehls Interrupts entsprechenden Anwender Interrupt ausgel st wird Weitere Det Besprechung von Kap 68000 Assembler J Teepe Der Trap Befehl dient typisch um z B Betriebssystem Funktionen unterzubringen Die Vektoren 48 bis 63 sind reserviert Vektor Adresse Zuordnung 64 0100 Anwender Interrupt 0 65 0104 Anwender Interrupt 1 66 0108 Anwender Interrupt 2 254 03F8 Anwender Interrupt 190 255 O3FC Anwender Interrupt 191 Diese Vektoren werden angesprungen wenn der von der Hardware tails werden bei der 6 3 erw hnt 121 6 Stacks Exceptions und Interrupts 6 2 4 EXCEPTION BEHANDLUNGSROUTINEN In solchen Routinen legen Sie fest welcher Vorgang im Computer ingeleitet werden soll wenn eine Exception auftritt Sie k nnen ALLE Vorgaben des Betriebssystems ab ndern Wie wird auf der n chsten Seite erw hnt Wie die Exceptions abgefangen werden m ssen h ngt selbstverst ndlich davon ab was die Aufgaben des Programms sind wird Sie m Wenn testen Abbruch feststelle lief O u N
45. Adr Art Mode Reg Adr Art Mode Reg Dn nicht erlaubt ZZ RM JET 000 An nicht erlaubt xxxX L 111 001 An 010 R An dl6 PC nicht erlaubt An 011 R An d8 PC Xi IJnicht erlaubt An 100 R An lt data gt nicht erlaubt d16 An 101 R An Erl uterung siehe d8 An Xi 110 R An Kapitel 5 F r die Adressierungsart Dn siehe auf der vorherigen Seite Benutzen Sie ROL wenn nach links rotiert werden soll ROXR Wenn die Rotation auch durch das X Bit laufen soll Siehe auch ASL ASR LSL LSR ROXL SWAP 68000 Assembler J Teepe 327 B Befehls bersicht Rotiere links mit Extend Bit Tee ROXL rotate left with extend IL Ziel rotiert durch lt Zahl gt gt Ziel Operandgr e ROXL B Byte 8 Bit ROXL W Jort 16 Bit ROXL L Langwort 32 Bit ROXL Wort 16 Bit Assembler ROXL x Dn Dn Quelle Ziel Syntax ROXL x lt data gt Dn x entspricht B W L ROXL lt ea gt Beschreibung Die Bits des Operanden werden nach links rotiert Bei jedem Rot tationsschritt passiert folgendes CG Das C Bit erh lt den Wert des hochwertigen Bits Der Wert wird au erdem zwischengespeichert OG Danach bekommt das hochwertige Bit den Wert des Bits rechts daneben Dieses Bit wiederum den ert seines rechten Nachbarns usw bis Bit 1 den ert von Bit 0 erh lt CG Dann erh lt Bit 0 d
46. An 100 R An lt data gt Jnicht erlaubt d16 An 101 R An Erl uterung siehe d8 An Xi 110 R An Kapitel 5 Argumentwort Bit 7 6 00 gt Datenfeld ist die niederwertig H lfte des 1 Argumentwortes Bit 7 6 01 gt Datenfeld ist das 1 Argumentwort Bit 7 6 10 gt Datenfeld ist 1 2 Argumentwort Siehe auch AND ORI EORI NOT TST 68000 Assembler J Teepe 159 B Befehls bersicht r UND mit Konstante zum CCR ANDI and immediate to condition codes zum CCR ll Konstante CCR gt CCR Operandgr e Byte 8 Bit Assembler ANDI lt data gt CCR Quelle Ziel Syntax Beschreibung Die Konstante die im Speicher unmittelbar dem Befehlswort folgt wird mit dem Condition Code Register bitweise UND verkn pft Das Ergebnis wird im Condition Code Register abgespeichert Die Operandgr e ist ein Byte Fr re Condition Code Register ale or ET EE C wird zur ckgesetzt wenn Bit 0 der Konstante zur ckgesetzt ist Bleibt sonst unver ndert V wird zur ckgesetzt wenn Bit 1 der Konstante zur ckgesetzt ist Bleibt sonst unver ndert Z wird zur ckgesetzt wenn Bit 2 der Konstante zur ckgesetzt ist Bleibt sonst unver ndert N wird zur ckgesetzt wenn Bit 3 der Konstante zur ckgesetzt ist Bleibt sonst unver ndert X wird zur ckgesetzt wenn Bit 4 der Konstante zur
47. CO Das T Bit wird zur ckgesetzt ein eventuell eingeschalteter Trace Mode Englisch Trace Spur wird abgeschaltet o Die Interruptmaske wird auf den ert des auftretenden Interrupts gesetzt damit zwischenzeitlich auftretende Interrupts mit niedriger Priorit t warten m ssen o ber die Datenleitungen Ihres Computers ermittelt der Prozessor die Vektornummer der Interrupt Behandlungsroutine Dann wird ein Sprung zu der entsprechenden Interrupt Behandlungsroutine gemacht Normalerweise wird diese Routine mit einem RTE Befehl beendet damit die Bearbeitung des Programms das durch den Interrupt unterbrochen wurde wieder fortgestezt werden kann J Teepe 68000 Assembler 6 Stacks Exceptions und Interrupts 6 3 4 WO BEFINDET SICH DIE INTERRUPTROUTINE Der Interrupt wird dadurch verursacht da irgendeine Schaltung im Computer etwas von dem Prozessor will Er setzt dann auf di drei Leitungen IPLO IPL1 und IPL2 seine Interruptnummer ab Daran erkennt der Computer welche Schaltung der Interrupt erzeugt hat Das bedeutet aber nicht da nur sieben Schaltungen interruptf hig sind denn mehrere Schaltungen k nnen sich eine Interruptebene teilen Das erreicht man durch eine entsprechen de Verdrahtung Daisy Chaining die bewirkt da der Computer pro Interruptebene nur die jeweils aktive Schaltung
48. OFFE PC niederw Wort SSP 5 gt 2 1000 eat 1000 1002 1002 112 J Teepe 68000 Assembler 6 Stacks Exceptions und Interrupts Auf dem Stack befindet sich ab der Position des Stack Pointers nacheinander die folgende Information CO Der Fehlerkod Erkl rung siehe weiter unten o Hoch und niederwertiges Teil der Adresse bei der der Fehler aufgetreten ist Oo Der Inhalt des Befehlswortes das den Fehler verursachte O Status Register zur Fehlerzeit o Hoch und niederwertiges Teil der Adresse des ur Zeit des n chsten Befehls im Speicher Fehlers FEHLERKOD al zugriff Fehlerkode R W 0 gt Fehler trat auf beim Schreiben R W 1 gt Fehler trat auf beim Lesen I N 0 gt Fehler trat auf w hrend eines Befehls I N 1 gt Fehler trat auf w hrend Eingabe Ausgabe zugriff 000 gt nicht zugeordnet zugriff 001 gt User Mode Zugriff auf Daten zugriff 010 gt User Mode Zugriff auf Programm zugriff 011 gt nicht zugeordnet zugriff 100 gt nicht zugeordnet zugriff 101 gt Supervisor Mode Zugriff auf Daten zugriff 110 gt Supervisor Mode Zugriff auf Programm zugriff 111 gt nicht zugeordnet 68000 Assembler J Teepe 113 6 Stacks Exceptions u
49. Z i e 1 gt lt Q u e 1 1 e gt 1002 0020 84 1000 23C1 move l 20 PC D1 01010101010 T 11010101110 Befehl Argumentwort J Teepe 68000 Assembler 5 Adressierungsarten von Befehlen Assembler Syntax Adr Art Mode Re d16 PC oder d16 PC d16 PC 111 010 Vorgang Adresse Operand PC d16 relokatierbares Programmieren Das interessante bei dieser Adressierungsart ist da der Programmcode nicht auf der absoluten Lage des Programms im Speicher Bezug nimmt sondern auf der Adressdifferen Das bedeutet das wenn ich das Programm nicht auf der Adresse 1000 sondern auf der Adresse 2000 laden w rde der Programmcode genau der gleiche w r Auch die Spr nge innerhalb des Programms k nnen wir unabh ngig von der Lage im Speicher machen und zwar mit einem der Branch Befehle Ich k nnte also das Programm byteweise zu jeder beliebigen Speicherstelle hin kopieren es w re ohne nderungen ablauff hig So ein Programm das unabh ngig von der Speicherlag ablauff hig ist nennen wie relokatierbar bzw relocatable F r manche Programme ist es vorteilhaft wenn sie relokatierbar geschrieben sind 68000 Assembler J Teepe 85 5 Adressierungsarten von Befehlen Adr Art Mode Re Assembler Syntax d8 PC Xi 111 011 d8 PC Dn W oder d8 PC Dn W d8 PC Dn L oder d8 PC Dn L d8 PC
50. Ziel gt Ziel 16 t gt 32 Operandgr e Eingangswerte Wort 16 Bit Ergebniswert Langwort 32 Bit Assembler MULU lt ea gt Dn Quelle Ziel Syntax Beschreibung Zwei Bin rzahlen ohne Vorzeichen werden multipli ziert Das Ergebnis ist das Produkt der beiden Zahlen ohne Ber cksichtigung des Vorzeichens Der Multiplikator und der Multiplikant sind beide W rter 16 Bit das Ergebnis ist ein Langwort 32 Bit Vom Register Operand Dn wird nur di niederwertig H lfte angewandt das Ergebnis belegt alle 32 Bits des Register Operanden Dn Et be a EE EC Condition Code Register C wird zur ckgesetzt V wird zur ckgesetzt Z wird gesetzt wenn das Ergebnis gleich Null ist Wird sonst zur ckgesetzt N wird gesetzt wenn das Wird sonst zur ckgesetz X bleibt unver ndert e rgebnis negativ ist t Di 68000 Assembler J Teepe 293 B Befehls bersicht rm Multipliziere ohne Vorzeichen MULU unsigned multiply Ill Format des Befehlswortes je 15514 2732 2 E E09 8 7 6 5 4 3 2 1 O 1 12 1001 Daten 0 det Effektive Adress Register Mode Register Bit 11 9 Registerfeld w hlt eines der acht Daten register als Zieloperand an Bit 5 0 w hlt die Effektive Adresse des Quell operanden an Die f
51. der Praxis die Compiler auf d leider nicht nen eines wurde zwischen 2 und SR di M PR NZ s Maschinen unabh ngig auf dem P auch auf dem Atari l uft habe das M PR NZ BM PC P gro geschrieben Programme so da es 10 S o H D das auf Maschine der urspr voll identis auf Maschine Das bedeutet in Pascal gel st da eine weil in n verschied ch sind A B l uft nglichen zeit des Programms auf Maschine A 68000 Assembler J Teepe Die Anpassung dauert typisc Entwicklungs nen Maschi ausgeteste N 1 Einf hrung 1 1 3 K NSTLICHE INTELIGENZ Die K nstliche Intelligenz ist eine Sprach Gruppe die vom Anwender mitgestaltet wird Sie liegt noch n her zum Menschen und weiter von der Maschine entfernt als die h heren Sprachen Ein wesentlicher Unterschied zu den h heren Sprachen ist da man dem Computer mitteilt welches Ergebnis verlangt wird anstelle ihm mitzuteilen wie er zu diesem Ergebnis kommen soll 1 2 WARUM ASSEMBLER Was ist der Grund warum wir heute noch Programme in Assembler rstellen Ist Assembler nicht etwas derma en antiquiertes da wir die Kenntnisse nur n a och aus historischen oder nostalgischen Gr nden ufheben m chten Ganz im Gegenteil Es gibt g
52. wahr dann 11111111 gt Ziel sonst 00000000 gt Ziel Operandgr e Byte 8 Bit Assembler Syntax Scc lt ea gt Beschreibung Die Bezeichnung Scc im Kopf dieser Seit ist stellvertretend f r die Befehle SCC SCS SEQ SGE SGT SHI SLE SLS SLT SMIr SNE SPL SVC SVS SF und ST Wir fass Mit den Befehl Vergleichen WAHR oder UNWAHR sog Boolean Variablen en all diese Befehl hier zusammen en Scc k nnen Sie Ergebnisse von im Speicher oder in ein Datenregister abspeichern Es wird dann abgesp f r WAHR TRUE 11111111 bi eichert n r oder FF hexadezimal wir bezeich f r UNWAHR FALS 00000000 b wir bezeich 68000 Assembler nen das als SETZEN eines Bytes E in r oder 00 hexadezimal nen das als ZUR CKSETZEN eines Bytes J Teepe 343 B Befehls bersicht Setze Byte aufgrund Bedingung sce set according to condition GE Bei den Befehlen werden di Bits N Negative Z Zero V oVerflow und C Carry des Condition Code Registers benutzt Die Bedingungen die gepr ft werden sind hnlich den Bedingungen f r bedingte Spr ng siehe bei Bcc HINWEISE Wenn Sie f r UNWAHR FALSE die Zahl 100000000 bin r bzw 80 bevorzugen erzeugen Sie das Ergebnis indem Si dem Befehl Scc lt ea gt noch den Befehl
53. 0 0O Register 1 1 11 010 0 Register Dp Dn Bit 11 9 Feld Datenregister Dp gibt an welches Bit von Dn gepr ft wird Es werden nur die Bits 0 4 von Dp benutzt Es wird also Bit Dp mod 32 von Dn gepr ft Bit 2 0 Feld Datenregister Dn hlt das Datenregister mit dem Operand an Hierin befindet sich das Bit das gepr ft werden soll 68000 Assembler J Teepe 193 B Befehls bersicht Pr fe Bit und setze Tewes BSET test a bit and set ER Assembler Syntax BSET B lt data gt f lt ea gt Dazu geh rt das folgende Format des Befehlswortes 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 0 0 0 0 1 0 hh Effektive Adress ode Register EE Bit 5 0 w hlt die Effektive Adresse des Operanden an Die folgenden Adressierungsarten sind erlaubt Adr Art Mode Reg Adr Art Mode Reg Dn nicht erlaubt xxx W 111 000 An nicht erlaubt xxx L 111 001 An 010 R An d16 PC T11 010 An 011 R An d8 PC Xi E1 011 An 100 R An lt data gt nicht erlaubt d16 An 101 R An Erl uterung siehe d9 An Xi 110 R An Kapitel 5 Feld Bitzahl gibt an welches Bit des Operanden gepr ft wird Es werden nur die Bits 0 2 der Bitzahl benutzt Es wird also Bit Bit Zahl mod 8 des Operanden ge
54. 2 Architektur 1 5 8 7 0 CCOR EE System Byte gt lt User Byte CCR gt 1 5 13 10 9 8 4 3 2 1 0 pip Eai e I2 I1 I0 AIX IN Z IV IC DN N LTL Carry oVerflow I Zero Negative eXtend Interrupt Mask Supervisor State Trace Mode tHHHHRH gerastert unterlegt Register ist nur in Supervisor Mode erreichbar Bild 2 2 Das Status Register des Prozessors 68000 68000 Assembler J Teepe 27 2 Architektur 27 PAE DAS USER BYTE CONDITION CODE REGISTER Das User Byte innerhalb des Status Wortes besteht aus dem Status Bits Carry Overflow Zero Negative und Extend Das User Byte wird auch als Condition Code Register CCR bezeichnet und die einzelnen Bits als Condition Code 4 3 2 1 0 Condition XINIZIVICI Code Carry oVerflow I y y y y y Zero I Negative eXtend Bild 2 3 Statusregister Bit Zuordnung des User Bytes Das C Bit Carry bertrag f hrt das h chstwertige Bit einer arithmetischen Operation Wenn z B zwei Zahlen von 10 Bit addiert werden erh lt das C Register den Wert von Bit 11 des Ergebnis ses Das Carry Bit empf ngt auch das hinaus geschobene Bit bei Schiebe Operationen Das V Bit
55. Ausl sung Exception 8 Kap 6 Verletzung Privilegium Operandgr e Wort 16 Bit Assembler ORI lt data gt SR Quelle Ziel Syntax Beschreibung emm der Prozessor sich im Supervisor Mode befindet wird die Konstante die im Speicher unmittelbar dem Befehlswort folgt mit dem Status Register bitweise ODER verkn pft Das Ergebnis wird im Status Register abgespeichert Wenn der Prozessor dagegen im User Mode ist wird eine Exception ausgel st Das Status Register wird in Kap 2 beschrieben Die Operandgr e ist ein Wort 16 Bit 314 J Teepe 68000 Assembler B Befehls bersicht ODER mit Konstante zum SR PS inclusive or immediate to SR ORI privilegierter Befehl zum SR IL I a a a o a a Condition Code Register le fe E C wird gesetzt wenn Bit 0 der Konstante gesetzt ist Bleibt sonst unver ndert V wird gesetzt wenn Bit 1 der Konstante gesetzt ist Bleibt sonst unver ndert Z wird gesetzt wenn Bit 2 der Konstante gesetzt ist Bleibt sonst unver ndert N wird gesetzt wenn Bit 3 der Konstante gesetzt ist Bleibt sonst unver ndert X wird gesetzt wenn Bit 4 der Konstante gesetzt ist Bleibt sonst unver ndert Format des Befehlswortes L ZS 14 13 72 11 280 9 8 7 6 5 4 3 2 1 0 Benutzen Sie A
56. Danach rstellen Si mit 12 J Teepe 68000 Assembler 1 Einf hrung Hilfe des Assemblers ein Maschinencode Modul da Sie von der Hochsprache aus aufrufen Programmteile di direkt auf das Betriebssystem oder auf die Hardware des Rechners zugreifen statt ber Routinen der Hochsprache sind betriebssystem bzw maschinen abh ngig Programme di direkt auf das Betriebssystem des Atari zugreifen laufen nicht auf dem IBM PC Programme die direkt auf die ICs des Atari XXX zu greifen laufen nicht unbedingt auf einem Atari XXY ER TEST M GLICHKEITEN Ein unverzichtbares Werkzeug im Werkzeugkasten des Assembler Programmierers ist der Debugger Mit diesem Werkzeug hat er ein sehr kr ftiges Mittel in der Hand um in ALLEN Programmen herumzustochern egal wer diese Programme geschrieben hat und in welcher Computersprach Weitere Details in Kap 1 3 3 1 31 DER DEBUGGER Mit dem Debugger Entwanzer kann er die Fehler Bugs Wanzen in seinem Programm lokalisieren und beheben Der Programmierer kann sein Programm starten und es zun chst an einem Breakpoint kurz vor der verd chtig ten Stelle des Programms anhalten lassen Danach l t er das Programm schrittweise weiter laufen bei jedem Schritt werden die Registerinhalte auf dem Bildschir
57. IL Format des Befehlswortes 15 14 13 12 11 10 9 ST 6 5 4 3 2 1 O 79 Hl ENTE Daten IO D a e e n Register Bit 11 9 Registerfeld w hlt das Datenregister Dn an zu dem die Konstante bertragen werden soll Bit 7 0 Datenfeld hier stehen die Daten die zum Datenregister bertragen werden sollen Das Vorzeichen wird vor der bertragung auf 32 Bit erweitert Benutzen Sie MOVE wenn die Konstante gr er als 8 Bit ist oder wenn Sie Register oder Speicherinhalte kopieren m chten Siehe auch MOVEM MOVEP MOV Ba O 290 J Teepe 68000 Assembler B Befehls bersicht Multipliziere mit Vorzeichen Fc signed multiply MULS IL Quelle Ziel gt Ziel 16 16 gt 32 Operandgr e Eingangswerte Wort 16 Bit Ergebniswert Langwort 32 Bit Assembler Syntax MULS lt ea gt Dn Quelle Ziel Beschreibung Zwei Bin rzahlen mit Vorzeichen werden multipliziert Das Ergebnis ist das Produkt der beiden Zahlen unter Ber cksichtigung des Vorzeichens Der Multiplikator und der Multiplikant sind beide rter 16 Bit das Ergebnis ist ein Langwort 32 Bit Vom Register Operand Dn wird nur di niederwertig H lfte angewandt das Ergebnis belegt alle 32 Bits des Register Operanden Dn en u I u Jr er Condition Code Regist
58. ROR x Dn Dn x entspricht B W L rotiert ein Datenregister nach rechts Ein zweites Datenregister legt fest um wieviele Positionen rotiert wird O Der Befehl ROR lt ea gt rotiert eine Speicherstell 16 Bit um eine Position nach rechts 324 J Teepe 68000 Assembler B Befehls bersicht Rotiere rechts ohne Extend Bit r rotate right without extend ROR IL SCD S aa a i Condition Code Register C erh lt den Wert der zuletzt aus dem hochwertigen Bit des Operanden herausgeschoben wurde Jird zur ckgesetzt beim Rotieren um Null Positione V wird zur Z wird gesetzt wenn das Ergebnis gleich Null ist rd sonst zur ckgesetzt ei d S S ckgesetzt N wird gesetzt wenn das hochwertige Bit des Ergebnisses gesetzt ist rd sonst zur ckgesetzt X ndert sich nicht 68000 Assembler J Teepe 325 B Befehls bersicht Rotiere rechts ohne Extend Bit Nr 1 ROR rotate right without extend IL Assembler Syntax ROR x Dn Dn ROR x lt data gt Dn x entspricht B W L Dazu geh rt das folgende Format des Befehlswortes 15 14 13 III 10 9 8 7 6 5 4 3 2 1 0 tl i a ig Z hl I O Gr e li I 1 I 1 Daten Register Register Bit 11 9 Z hlregister Feld Wenn i 0 Die Bits 11 9 geben an um wieviele Positionen die Bits des Zielope
59. Sonst wird das Byte in lt ea gt zur ckgesetzt SPL ist f r Bin rzahlen mit t Vorzeichen gedacht SVC Setze lt ea gt wenn kein berlauf Set lt ea gt on oVerflow Clear Das Byte in lt ea gt wird gesetzt wenn das V Bit zur ckgesetzt zur ckgesetzt SVS Setze lt ea gt wenn berlauf Set lt ea gt on oVerflow Set ist Sonst wird das Byte in lt ea gt Das Byte in lt ea gt wird gesetzt wenn das V Bit gesetzt ist Sonst wird das Byte in lt ea gt zur ckgesetzt SF Setze lt ea gt nie never set lt ea gt Das Byte in lt ea gt wird zur ckgesetzt unabh ngig von irgendwelcher Bedingung ST Setze lt ea gt immer always set lt ea gt Das Byte in lt ea gt wird gesetzt unabh ngig von irgendwelcher Bedingung Condition Code Register bleibt 348 J unver ndert Teepe 68000 Assembler B Befehls bersicht Setze Byte aufgrund Bedingung rm set according to condition sce IL Format des Befehlswortes 15 14 Mel Ek E 8 7 6 5 4 3 2 1 O l Ol HR OS WS EA Bedingung LEI Du Effektive Adress l l l l l ode Register Bit 11 8 Bedingungsfeld Bedingung Befehl Bedingung Befehl 0000 ST 1000 SVC 0001 SF 1001 SVS 0010 SHI 1010 SPL 0011
60. Teepe TT 5 Adressierungsarten von Befehlen Adr Art Mode Re xxx W 111 000 Assembler Syntax xxXX W xxx ist eine 16 Bit Adresse Vorgang Adresse Operand xxx W Als Beispiel eigen wir Ihnen die Anordnung des Befehls wobei der MOVE Befehl im ersten Wort und das Argument 1111 im zweiten Wort steht F r weitere Details des MOVE Befehls siehe Anhang B Die Begriffe Argument und Argumentwort werden in Kap 3 8 erl utert 15 rA 733 EE ee Fe Der er n0 i 20 T IO 9 0 NN 110101010 1 MOVE L lt reg gt lt mode gt lt mode gt lt reg gt 21C1 lt 2 i e 1 lt Q u e l1 1 e gt 1111 Befehlswort Argumentwort 78 2 MOVE L 1111 W D1 11 J Teepe 68000 Assembler 5 Adressierungsarten von Befehlen Assembler Syntax Adr Art Mode Re xxx L xxx L 111 001 xxx ist eine 32 Bit Adresse Vorgang Adresse Operand xxx L Sg ABSOLUTE LANGE ADRESSIERUNG xxx L Die Bitkombination 001 im Registerfeld w hlt nicht ein Register an er dient vielmehr dazu um zusammen mit dem Wert im Mode Feld di Adressierungsart festzulegen Mit der Adressierungsart absolute lang Adressi rung kann ich im Gegensat u der Adressierungsart absolute
61. Teepe 307 B Befehls bersicht Logisches ODER OR inclusive or logical GEET Bit 5 0 Wenn die Effektive Adresse der Quelloperand ist also lt ea gt v Dn gt Dn sind die folgenden Adressierungsarten erlaubt Adr Art Mode Req Adr Art Mode Re Dn 000 R Dn xxx W 111 000 An nicht erlaubt xxx L 111 001 An 010 R An d16 PC 111 010 An 011 R An d8 PC Xi 111 011 An 100 R An lt data gt 111 100 d16 An 101 R An Erl uterung siehe d8 An Xi 110 R An Kapitel 5 Bit 5 0 Wenn die Effektive Adresse der Zieloperand ist also Dn v lt ea gt gt lt ea gt sind die folgenden Adressierungsarten erlaubt Adr Art Mode Reg Adr Art Mode Re Dn nicht erlaubt xxx W dal 000 An nicht erlaubt xxx L 111 001 An 010 R An dl6 PC nicht erlaubt An 011 R An d8 PC Xi Jnicht erlaubt An 100 R An lt data gt nicht erlaubt d16 An 101 R An Erl uterung siehe d8 An Xi 110 R An Kapitel 5 Wenn der Zieloperand ein Datenregister sein soll kann er nicht mit der Adressierungsart lt ea gt angew hlt werden sondern nur mit der Adressierungsart Dn 308 J Teepe 68000 Assembler B Befehls bersicht Logisches ODER ri inclusive or logical oR IL Benutzen S
62. Wort 16 Bit Assembler SWAP Dn Syntax Beschreibung Die H lften eines Datenregisters werden vertauscht I a De e ee Be Condition Code Register C wird zur ckgesetz V wird zur ckgesetz Z wird gesetzt wenn alle Bits des Ergebnisses Null sind Wird sonst zur ckgesetzt N wird gesetzt wenn Bit 31 des Ergebnisses gesetzt ist Wird sonst zur ckgesetzt X ndert sich nicht cr Format des Befehlswortes 4155 TA 13 TA Ir 10 9 E ed 0111I01I0111I010101011101 10 0 Daten I 1 1 1 Register Bit 2 0 Register Feld w hlt ein Datenregister als Operand an Siehe auch EXG LSL LSR MOVE ROL ROR 68000 Assembler J Teepe 365 B Befehls bersicht eg Pr fe und setze Operand Tas test and set an Operand IL Ziel wird gepr ft gt Condition Code Register l gt Bit 7 des Zieloperanden Operandgr e Byte 8 Bit Assembler Syntax TAS lt ea gt Beschreibung Der Zieloperand wird gepr ft und das Condition Code wird entsprechend gesetzt Danach wird Bit 7 des Zieloperanden gesetzt Der Befehl TAS ist unteilbar In einem System mit mehreren Prozessoren kann TAS auch benutzt werden um die Prozessoren zu synchronisieren Eve d est S W ae ee Condition Code Register C wird zur ckgesetz V wird zur ckgesetzt Z wird gesetzt wenn der Operand
63. gt lt ea gt x entspricht B W L Beschreibung Der Quelloperand wird mit dem Zieloperand bitweise ODER verkn pft und das Ergebnis wird im Zieloperand abgespeichert Zur Erinnerung die ODER Verkn pfungen Ov 0 0 Ovl 1 lv0 1 lvl 1 Das Ergebnisbit wird gesetzt wenn das eine oder das andere Eingangsbit gesetzt sind Einer der beiden Operanden mu ein Datenregister sein Die Gr des Operanden sowie die Angabe welcher Operand das Datenregister ist sind im Mode Feld enthalten 306 J Teepe 68000 Assembler B Befehls bersicht Logisches ODER Fr inclusive or logical oR IL E S E Sg i0 1 Condition Code Register C wird zur ckgesetz V wird zur ckgesetz Z wird gesetzt wenn das Ergebnis gleich Null ist rd sonst zur ckgesetzt N wird gesetzt wenn das hochwertige Bit des Ergebnisses gesetzt ist zeigt ein negatives Ergebnis rd sonst zur ckgesetzt X bleibt unver ndert SE ch Format des Befehlswortes 15 14 13 12 11 10 9 8 7 6 D 4 3 2 1 O EI S OTA SG OU A OEA Daten Operations Effektive Adress Register Mode Mode Register Bit 11 9 Registerfeld w hlt eines der acht Daten register an Bit 8 6 Feld Operationsmode OR B OR W OR L Operation 000 001 010 lt ea gt v Dn gt Dn 100 101 110 Dn v lt ea gt gt lt ea gt 68000 Assembler J
64. lt data gt nicht erlaubt d16 An 101 R An Erl uterung siehe d8 An Xi 110 R An Kapitel 5 Argumentwort Bit 7 6 00 gt Datenfeld ist die niederwertig H lfte des 1 Argumentwortes Bit 7 6 01 gt Datenfeld ist das 1 Argumentwort Bit 7 6 10 gt Datenfeld ist 1 2 Argumentwort Siehe auch ADDI SBCD SUBX SUBA SUBO SUBX 68000 Assembler J Teepe 359 B Befehls bersicht r Subtrahiere Konstante quick 1 8 suBQ subtract quick Lo Ziel Konstante gt Ziel Operandgr e SUBO B Byte 8 Bit SUBO W Wort 16 Bit SUBQ L Langwort 32 Bit Assembler SUBO x lt data gt lt ea gt Quelle Ziel Syntax x entspricht B W L Beschreibung Dieser Befehl subtrahiert die Konstante vom Ziel operand lt ea gt Das Ergebnis wird im Zieloperand lt ea gt abgespeichert Die Konstante mu zwischen 1 und 8 liegen er 2 el Condition Code Register Lo EEE E EE C wird gesetzt wenn ein Leihen generiert wird rd sonst zur ckgesetzt V wird gesetzt wenn ein berlauf generiert wird rd sonst zur ckgesetzt Z wird gesetzt wenn das Ergebnis gleich Null ist rd sonst zur ckgesetzt N wird gesetzt wenn das Ergebnis negativ ist rd sonst zur ckgesetzt X Erh lt den gleichen Wert wie das C Bit HINWEIS Wenn der Zielop
65. nnen auch auf den Einsatz eines Indexwert verzichten mit der Adressierung MOVE O0 PC Al D1 wird die Adresse des Operanden rrechnet aus der Summe des Programmz hlers und eines Registers 68000 Assembler J Teepe 87 5 Adressierungsarten von Befehlen Adr Art d8 PC Xi 111 011 Mode Re Vorgang Adresse Operand PC Xi d8 ISP EL tellen vor Das 1000 27C1 MOVE L 8 A1 1002 9898 1022 1234 DCL n in 0 7 Assembler Syntax d8 PC Dn W d8 PC Dn L d8 PC An W d8 PC An L d8 ist ein oder oder oder oder Op PC Dn wi d8 PC Dn L d8 PC An W d8 PC An L 8 Bit Wort Register Al hat die Wert 2000 1024 5678 Argumentwort seiner Adresse wird Register AI addiert Das Ergebnis Operand wird also auf der Adresse 300A gesuch liegt PC 12345678 auf der r r r Befehl Argumentwort hier Adresse und der ist 1002 2000 8 Sie sich im Programm den folgenden Abschnitt liegt Operand 1002 Zu Indexwert 300A Der Befehl vorher nachher MOVE L 8 PC Al Dl 00002000 A1 00002000 DE 112741177 Di 12345678 auf 0000300A ist 12345678 12345678 88 J Teepe 68000 Assembler 5 Adressierungsarten von Befehlen Assembler Syntax Adr Art Mode Reg d8 PC Dn W oder d8 PC Dn W d8 PC Xi 111 011 d8 PC Dn L oder d8 PC Dn L d
66. oVerflow berlauf wird gesetzt wenn das Ergebnis einer Operation nicht richtig dar gestellt werden kann Wenn z B 7FFF und 03 addiert werden dann ist 8002 nicht die richtige Darstellung des Ergebnisses Denken Sie daran 8002 in der Zweikomplement Darstellung entspricht 32765 dezimal Bei dieser Operation wird das V Bit gesetzt 28 J Teepe 68000 Assembler 2 Architektur Das Z Bit Zero Null wird gesetzt wenn das Ergebnis einer Operation gleich Null ist Das N Bit Negative wird gesetzt wenn das h chstwertige Bit in einer Operation gesetzt wird Das X Bit eXtended erweitert ist eine Kopie des C bits siehe oben Es wird aber nicht immer ver ndert wenn das Carry Bit sich ndert Das X Bit wird nur durch solche Operationen die f r Rechnen mit hoher Genauigkeit gedacht sind beeinflu t 68000 Assembler J Teepe 29 2 Architektur 2 2 4 2 DAS SYSTEM BYTE Das System Byte innerhalb des Status Wortes besteht aus der Interrupt Maske und aus den Status Bits Supervisor State und Trace Mode w hrend das User Byte sieh oben immer zug nglich ist ist das System der Prozessor sich im Supervisor Byte nur dann erreichbar wenn Mode befindet
67. sind im Mode Feld enthalten 352 J Teepe 68000 Assembler B Befehls bersicht Subtrahiere bin r subtract binary suB IL We EE EE ee Condition Code Register A fe el EE C wird gesetzt wenn ein Leihen generiert wird rd sonst zur ckgesetzt V wird gesetzt wenn ein berlauf generiert wird rd sonst zur ckgesetzt Z wird gesetzt wenn das Ergebnis gleich Null ist rd sonst zur ckgesetzt N wird gesetzt wenn das Ergebnis negativ ist rd sonst zur ckgesetzt X Erh lt den gleichen Wert wie das C Bit Format des Befehlswortes 15 14 13 12 11 10 9 8 7 6 5 d LS 2 1 O 11 O O 1 Register Operations Effektive Adress Dn Mode Mode Register Bit 11 9 Registerfeld w hlt eines der acht Daten register an Bit 8 6 Feld Operationsmode SUB B SUB wW SUB L Operation 000 001 010 Dn lt ea gt gt Dn 100 10 110 lt ea gt Dn gt lt ea gt 68000 Assembler J Teepe 353 B Befehls bersicht Fc Subtrahiere bin r suB subtract binary IL Bit 5 0 Wenn die Effektive Adresse der Quelloperand ist also Dn lt ea gt gt Dn sind die folgenden Adressierungsarten erlaubt Adr Art Mode Reg Adr Art Mode R
68. wenn einer der Operanden ein Konstante ist NEX oder NEGX wenn Sie von Null subtrahieren m chten SUBX wenn ein anderes Verhalten des 2 Bits erw nscht ist Siehe auch ADD 68000 Assembler J Teepe 355 B Befehls bersicht rm Subtrahiere Adresse SUBA subtract address ILI Ziel Quell gt Ziel Operandgr e SUBA W Wort 16 Bit SUBA L Langwort 32 Bit Assembler SUBA x lt ea gt An Quelle Ziel Syntax x entspricht W L Beschreibung Der Quelloperand in lt ea gt wird bin r vom Ziel Adressregister An subtrahiert Das Ergebnis wird im Ziel Adressregister An abge speichert enn die Operandgr des OQuelloperanden in Wort ist wird der Quelloperand mit dem gleichen Vorzeichen auf 32 Bit erweitert Vom Zielregister An werden s mtliche Bytes angewendet unabh ngig von der Operandgr e Condition Code Register keine nderungen 356 J Teepe 68000 Assembler B Befehls bersicht Subtrahiere Adresse rm subtract address SUBA IL Format des Befehlswortes E E E E E IE Fr 1 O O 1 Register Operations Effektive Adress An Mode Mode Register Bit 11 9 Registerfeld w hlt eines der acht Adressregister An an Es ist der Zieloperand Bit 8 6 Feld Operations Mode 011 SUBA W Wort Befehl Der Quellopp
69. wird eine Exception ausgel st Das Status Register wird in Kap 2 beschrieben Die Operandgr e ist ein Wort 16 Bit 162 J Teepe 68000 Assembler B Befehls bersicht UND mit Konstante zum SR Pe and immediate to status register ANDI privilegierter Befehl zum SR IL I ee El Condition Code Register le A el C wird zur ckgesetzt wenn Bit 0 der Konstante zur ckgesetzt ist Bleibt sonst unver ndert V wird zur ckgesetzt wenn Bit 1 der Konstante zur ckgesetzt ist Bleibt sonst unver ndert Z wird zur ckgesetzt wenn Bit 2 der Konstante zur ckgesetzt ist Bleibt sonst unver ndert N wird zur ckgesetzt wenn Bit 3 der Konstante zur ckgesetzt ist Bleibt sonst unver ndert X wird zur ckgesetzt wenn Bit 4 der Konstante zur ckgesetzt ist Bleibt sonst unver ndert 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 Benutzen Sie ORI zum SR wenn Sie das SR ODER verkn pfen m chten EOR um SR wenn Sie das SR Exclusiv ODER verkn pfen m chten MOVE zum SR wenn Sie das SR ohne R cksicht auf die bestehenden Bits ndern m chten ANDI zum CCR wenn Sie nur das Condition Code Register ndern m chten 68000 Assembler J Teepe 163 B Befehls bersicht emm as LH Arithmetis
70. 01 Wort Befehl TST W siehe Kap 3 8 10 Langwort Befehl TST L Bit 5 0 Die Effektive Adresse w hlt den Zieloperand an Die folgenden Adressierungsarten sind erlaubt Adr Art Mode Reg Adr Art Mode Reg Dn 000 R Dn xxx W 111 000 An nicht erlaubt xxxX L 111 001 An 010 R An dl6 PC nicht erlaubt An 011 R An d8 PC Xi IJnicht erlaubt An 100 R An lt data gt nicht erlaubt d16 An 101 R An Erl uterung siehe d8 An Xi 110 R An Kapitel 5 Benutzen Sie TSTI wenn einer der Operanden ein Konstante ist Siehe auch OR EOR NOT TST 372 J Teepe 68000 Assembler B Befehls bersicht L se Reservierung im Stack auf rm unlink UNLK IL An gt SP SP gt An SP 2 gt SP Operandgr e keine Assembler Syntax UNLK An Beschreibung Der Stack Pointer erh lt den Wert des angegebenen Adressregisters Danach erh lt das Adressregisters An den Wert der aus dem Stack gepopped wird Der Befehl UNLK macht genau das entgegengesetzte als der Befehl LINK Der von LINK reservierte Stackbereich das Stack Frame wird wieder Fa freigegeben Auch erh lt das Adressregister An seinen E fr heren Wert wieder Condition Code Register bleibt unver ndert Format des Befehlswortes 2155 TA 13 TA Ir E E ed
71. 10 O Z hl 0 Gr e i 1 0 Daten Register Register Bit 11 9 Z hlregister Feld Wenn i 0 Die Bits 11 9 geben an um wieviele Positionen die Bits des Zieloperanden nach rechts rotiert werden Dabei entspricht 001 einer Position usw bis 111 sieben Positionen entspricht 000 entspricht aber acht Positionen Konstante Wenn i 1 Die Bits 11 9 w hlen ein Datenregister Dn an Die niederwertigen 6 Bits des Datenregisters Dn geben an um wieviele Positionen die Bits des Zieloperanden nach rechts rotiert werden Bit 7 6 Gr e Feld 00 Byte Befehl ROXR B 01 Vort Befehl ROXR W 10 Langwort Befehl ROXR W Bit 5 i Feld 0 Die Bits 11 9 beziehen sich auf eine Konstante l Die Bits 11 9 beziehen sich auf ein Datenregister Bit 2 0 Register Feld w hlt ein Datenregister als Zieloperand an 336 J Teepe 68000 Assembler B Befehls bersicht Rotiere rechts mit Extend Bit r rotate right with extend ROXR L Assembler Syntax ROXR lt ea gt Die 16 Bits des angew hlten Speicherwortes werden um eine Position nach rechts rotiert Dazu geh rt das folgende Format des Befehlswortes 15 714 13 12 11 10 9 8 7 6 5 4 3 2 1 0 FT ET EN
72. 118 122 7117 TONER EE De S O 102 0 VT 01010 d Are de Ek 11010 01011 l l l l l l MOVE L lt reg gt lt mode gt lt mode gt lt reg gt S23CL lt Z i e 1 gt lt Q u e 1 1 e gt r0 h OE OH TUE O et WT 0 010 E tt 0 11010 TE EBEN D HERE E E e D ER 1234 Fesch 0 D AEG wer TCE A 1 1097 0410 91 5678 Befehlswort s23c1 MOVE L 12345678 W D1 1 Argumentwort 1234 2 Argumentwort 5678 68000 Assembler J Teepe 81 5 Adressierungsarten von Befehlen Adr Art Mode Re Assembler Syntax d16 PC 111 010 d16 PC oder d16 PC Vorgang Adresse Operand PC d16 5 10 PROGRAMMZ HLER MIT ADRESSENDIFFERENZ d16 PC Die Bitkombination 010 im Registerfeld w hlt nicht ein Register an er dient vielmehr dazu um zusammen mit dem Wert im Mode Feld di Adressie rungsart festzulegen Hinter dem Befehlswort kommt im Speicher ein Argumentwort Das Argumentwort ist ein 16 Bit Wort wo das Bit 15 als Vorzeichenbit aufgefa t wird Die Adressdifferen wischen Operanden und Argument wort wird im Arqumentwort festgehalten 31 O Programmz hler SPEICHER ADRESSE v 15 O Argumentwort gt 31 v 0 Speicherste
73. 12345678 12345678 74 J Teepe 68000 Assembler 5 Adressierungsarten von Befehlen Assembler Syntax Adr Art Mode Re d8 An Dn W oder ap an Dn gi d8 An Xi 110 R An d8 An Dn L oder d8 An Dn L d8 An An W oder Op An An WI d8 An An L oder dp An An Li Vorgang d8 ist ein 8 Bit Wort Adresse Operand n in 0 7 An Xi d8 Um die Information des Index Registers im Computer unterbringen zu k nnen brauchen wir nach dem Befehlswort ein Argqgumentwort und zwar mit dem folgenden Format 15 14 13 12 11 10 9 8 7 6 5 4 3 2 10 D A Register W L O 0 0 I N D E X Bit 15 besagt ob das Index Register in Bit 14 12 ein Datenregister oder Datenregister 0 in Adressregister ist 1 Adressregister Bit 14 12 ist die Nummer des Daten oder Adress registers Bit 11 Gr e des Index Registers 0 Nur die minderwertigen Bits 0 15 des Index Registers werden benutzt wobei Bit 15 als Vorzeichen genommen wird 1 S mtliche Bits des Index Register werden ber cksichtigt 68000 Assembler J Teepe 15 5 Adressierungsarten von Befehlen Adr Art Mode Re Assembler Syntax xxx W 111 000 xxxX W xxx ist eine 16 Bit Adresse Vorgang Adresse Operand xxx W 5 8 ABSOLUTE KURZE ADRESSIERUNG xxx NW Die Bitkombina
74. 22222222 D2 22222222 AA 44444444 A4 00006666 ADDA W D2 AA D2 DDDDDDDD D2 DDDDDDDD A4 11111111 A4 FFFFEERE MOVE L A1 D3 Al 1111111 Al 1111111 D3 33333333 D3 11111111 CLR L D2 D2 22222222 D2 00000000 Wir haben MOVE als Beispiel genommen Byte Operationen zum Adressregister sind bei MOVE nicht erlaubt siehe Befehlserkl rung von MOVE in Anhang B 68000 Assembler J Teepe 61 5 Adressierungsarten von Befehlen Adr Art Mode Re Assembler Syntax An 010 R An An n in 0 7 Vorgang Adresse Operand An 5 3 ADRESSREGISTER INDIREKTE ADRESSIERUNG An Mit den drei Bits des Registerfeldes werden die Adressregister A0 A7 angew hlt In dem angew hlten Adressregister befindet sich die Adresse des Operanden Der Operand befindet sich also an der Speicherstelle wohin das Adressregister zeigt al 0 Adressregister An SPEICHER ADRESSE y Speicherstell OPERAND 62 J Teepe 68000 Assembler 5 Adressierungsarten von Befehlen Assembler Syntax Adr Art Mode Reg An n in 0 7 An 010 R An Vorgang Adresse Operand An BEISPIEL enn das Registerfeld die Bits 010 Wert 2 enth lt und im Adressregister A2 der Wert 1000 abgespeichert ist dann wird der Wert auf der Adresse 1000 im Speicher als Operand genommen Ob d
75. An W oder d8 PC An W Vorgang d8 PC An L oder d8 PC An L Adresse Operand d8 ist ein 8 Bit Wort PC Xi d8 n in 0 7 PROGRAMMZ HLER MIT INDEX d8 PC Xi Die Bitkombination 011 im Registerfeld w hlt nicht ein Register an er dient vielmehr dazu um zusammen mit dem Wert im Mode Feld die Adressi rungsart festzulegen Sie k nnen aber in Register angeben Die Summe dieses Registers des Programmz hlers PC und einer Konstanten bilden die Adresse des Operanden 31 O Programmz hler Adr Argumentwort y 7 0 Argumentwort gt vy 31 0 Index Register Xi gt 31 v 0 Speicherstell OB KRAN D 86 J Teepe 68000 Assembler 5 Adressierungsarten von Befehlen Assembler Syntax Adr Art Mode Reg d8 PC Dn W oder d8 PC Dn W d8 PC Xi 111 011 d8 PC Dn L oder d8 PC Dn L d8 PC An W oder d8 PC An W d8 PC An L oder d8 PC An L Vorgang d8 ist ein 8 Bit Wort Adresse Operand n in 0 7 PC Xi d8 Diese Adressierungsart ist hnlich der Adressierungs art mit Adressendifferenz Sie gibt Ihnen aber us tzlich die M glichkeit ber ein Register das sowohl ein Daten als auch ein Adressregister sein darf die Adressierung des Operanden mit zu beeinflussen Die Vorteile des relokatierbaren Programmierens wie bei der Adressierungsart mit Adressdifferen besprochen sind hier auch voll nutzbar Sie k
76. Befehls bersicht Subtrahiere mit Extend Bit Per sUBx subtract with extend IT ziel Quell X gt Ziel Operandgr e SUBX Byte 8 Bit SUBX dort 16 Bit SUBX L Langwort 32 Bit Assembler SUBX x Dn Dn Quelle Ziel Syntax SUBX x An An x entspricht B W L Beschreibung Der Quelloperand und das Extend Bit werden vom zieloperand subtrahiert Das Ergebnis wird im zieloperan Die Operan Dn An 362 d abgespeichert den k nnen in zwei Arten adressiert werden Datenregister zu Datenregister Die Operanden sind die niederwertigsten Bytes der Daten register Von Speicherplatz ist gedacht zu subtrahieren um mehrere zu Speicherplat Diese Art Di Bin rzahlen im Speicher Operanden werden durch das adressiert Adressregister in Pr dekrement Mod Da der 68000 Daten mit dem niederwert h chsten Speicherstel h chsten auf der Sie auf mehrere in ab der Bytes automat weiter F r Adresse tisch abzuarbeiten an gt fange Beschreibung siehe bei N tigsten Byte k nnen N um EGX J Teepe 68000 Assembler B Befehls bersicht Subtrahiere mit Extend Bit r subtract with extend SUBx L RSA De GR S A Condition Code Register C wird gesetzt wenn ein bertrag generiert wird rd sonst zur ckgese
77. Beispiel PATH Arpath nam SAVE Filename Speichert das Programm LOAD Filename L dt ein Programm 378 J Teepe 68000 Assembler C Mitgelieferte Programmdiskette MERGE Filename H ngt ein Programm an das Ende des im Speicher stehende an BSAVE Adr Length Filename Sichert inen Bereich des Speichers BLOAD Adr Filename L dt eine Datei ab einer bestimmten Adresse in den Speicher PRGSAVE Dieser Filename Funktion mu ein PRGASM vorausgehen Sie speichert das assemblierte Progamm als ablauff hige vom Des ktop aus ladbare Datei 2 4 Druckeransteuerung PON Schaltet t die Druckerausgabe ein Alle Ausgaben auf dem Bil dschirm werden gleichzitig an den Drucker gesandt POFF Schaltet die Druckerausgabe ab 2 5 Sonstige Befehle DUMP Adr Label Hiermit lassen sich Speicherinhalte ausgeben DIS Adr label Disassembliert den Speicher ab der agegebenen Adresse DEZHEX Expression Zeigt den Ausdruck Berechnungen Labels hexadezimal und dezimal an 68000 Assembler J Teepe 379 C Mitgelieferte Programmdiskette Opcode Hiermit k nnen Si inzelne Maschienensprachbefehle ausprobieren z B 1CLR B A0 Die Wirkung k nnen Sie mit dem Befehl REG berpr fen Nach jedem Aufruf von GO TRACE und Opcode werden s mtliche Registerin
78. Datentypen im Befehls Syntax 33 328 Adressierung von Bytes W rtern und L ngw rtern va 34 3 0 Barstellung in 8 BiE needs 34 3 0 2 Barstell ng in L6 Bit ege NEEN nen 36 EE Vorzeichen von Bytes W rtern und Langw rtern 38 EE Umwandlung von Bin rzahlen mit Vorzeichenbit 41 3 5 4 1 Umwandlung von kleinen zu gf hen Formaten seime sad iais 41 3 5 4 2 Umwandlung von gro en zu kleinen Formaten 42 3 6 Adressierung von BCD Ziffern 43 Ze Adressierung von Strings Zeichenketten d 3 8 Befehlsstruktur im Speicher 45 ER Ga Befehle ohne Arqumentwort e 46 3 842 Befehle mit einem Argumentwort 7 3843 Befehle mit zwei Argumentw rtern 48 3 8 4 Quelle und Ziel besitzen Argumentw rter 49 3 85 zusSammentfass ung EK EEN 50 Kapitel 4 Betrehlssat rn BEN ER DR 51 4 1 Reihenfolge der Parameter 91 4 2 Klassen der Befehl d Ee rannte 52 4 2 1 Daten Kopierbefeh FE EEE RER HEHE EEE E FREENET 52 4 2 2 Integer arithmetische Befehle 53 4 2 3 Logische Befehle decke NEE EEN ea a e e 53 4 2 4 Schiebe und Rotierbefehle 54 422 5 Bit ET sus aid 54 4 2 6 BEB Befehle nsa ea e ee aan 54 4 2 7 Programmsteuerbefehle ee 54 4 2 8 Systemsteuerbefehle sessssessesecee eo 55 4 J Teepe 68000 Assembler Kapitel 5 Sizal Dea 68000 Assembler J Teepe Inhaltsverzeichnis
79. Effektive Adresse der Zieloperand ist also Dn lt ea gt gt lt ea gt sind die folgenden Adressierungsarten erlaubt Adr Art Mode Reg Adr Art Mode Re Dn nicht erlaubt xxx W 111 000 An nicht erlaubt xxxX L 11 001 An 010 R An dl16 PC nicht erlaubt An 011 R An d8 PC Xi Inicht erlaubt An 100 R An lt data gt nicht erlaubt d16 An 101 R An Erl uterung siehe d8 An Xi 110 R An Kapitel 5 HINWEIS Wenn der Zieloperand ein Datenregister sein soll kann er nicht mit der Adressierungsart lt ea gt angew hlt werden sondern nur mit der Adressierungsart Dn 156 J Teepe 68000 Assembler B Befehls bersicht Logisches UND rm and logical AND IL Benutzen Sie ANDI wenn einer der Operanden ein Konstante ist Siehe auch OR EOR NOT TST 68000 Assembler J Teepe 157 B Befehls bersicht rm UND mit Konstante ANDI and immediate IL Konstante Ziel gt Ziel Operandgr e ANDI B Byte 8 Bit ANDI W Vort 16 Bit ANDI L Langwort 32 Bit Assembler ANDI x lt data gt lt ea gt Quelle Ziel Syntax x entspricht B W L Beschreibung Die Konstante die im Speicher unmittelbar dem Befehlswort folgt wird mit dem Zieloperand lt ea gt bitweise UND verkn pft Das Ergebnis wird im Z
80. Exception 5 ausgel st 2 Eine gro e Zahl wird durch ein klein Zah dividiert und das Ergebnis pa t nicht in 16 Bit Das Ergebnis ist ein berlauf In dem Fall ndern sich nur die Werte des Condition Code Registers die Operanden bleiben unver ndert en Ge a E ae Se Condition Code Register C wird zur ckgesetzt V wird gesetzt wenn ein berlau Wird sonst zur ckgesetzt E aufgetreten ist Z wird gesetzt wenn der Quotient gleich Null ist Z ist nicht definiert bei berlauf oder Division durch Null Wird sonst zur ckgesetzt N wird gesetzt wenn das Ergebnis negativ ist N ist nicht definiert bei berlauf oder Division durch Null Wird sonst zur ckgesetzt X bleibt unver ndert 228 J Teepe 68000 Assembler B Befehls bersicht Dividiere ohne Vorzeichen r divide unsigned DIVU IL Format des Befehlswortes 15 14 13 12 11 10 9 Sc 6 D 4 3 2 1 O 11010 TO Daten 1 0 1 11 Effektive Adress Register Mode Register Bit 11 9 Registerfeld w hlt eines der acht Datenregister als Zieloperand an Bit 5 0 w hlt die Effektive Adresse des Quelloperanden an Die folgenden Adressierungsarten sind erlaubt Adr Art Mode Reg Adr Art Mode Reg Dn 000 R Dn xxx W 111 000 A
81. FFFFFFFE Byte SFFFFFFFE Byte SFFFFFFFF E Bild 3 1 Darstellung des Adressierungsbereichs Da wir von dieser Prozessorfamilie in diesem Buch nur den Prozessor 68000 besprechen werden sei erw hnt da die hochwertigen acht Adressbits bei dem 68000 nicht implementiert sind wohl aber bei den gr eren Br dern dem 68020 und dem 68030 68000 Assembler J Teepe 31 3 Datenstrukturen Ver aber auf Kompatibilit t seiner Programme mit den gr eren Prozessoren achtet oder wer f r klaren Programmierstil ist m chte doch bitte daf r sorgen da die acht hochwertigen Bits alle null sind Hier sehen wir wie der Adressbereich organisiert ist Zur Verf gung steht ein Adressraum von 32 Bytes so da 2 Bytes bzw 2 W rter adressiert werden k nnen Der Adressbereich l uft dann von 00000000 bis 5FFFFFFFE Ia Innerhalb von diesem Adressbereich sind s mtliche Daten und Befehle sowie alle Ein und Ausgabe Kan le untergebracht 3 2 DATENORGANISATION IM SPEICHER Wir haben hier oben gesehen da der Adressierungs raum durch 32 Bit festgelegt wird Um im Speicher unsere Daten aufzufinden m ssen wir genau wissen wie die Daten dort abgelegt werden MSB LSB Bild 3 2 Bit Numerierung eines Bytes Bei einem Byt werden die Bits von rechts nach links nummeriert wo
82. NEG lt ea gt nachschalten Sie k nnen WAHR UNWAHR Information auch platzsparend in einem einzelnen Bit abspeichern indem Sie jeweils inen der Befehl BSET oder BCLR benutzen Sie brauchen dazu dann einen bedingten Sprung der Sorte Bcc um den richtigen der beiden Befehl anzu springen Dazu m ten Sie dann auch das Zielbit anw hlen Dieser Aufwand lohnt sich aber erst bei einer gr eren Menge von WAHR UNWAHR Daten 344 J Teepe 68000 Assembler B Befehls bersicht Setze Byte aufgrund Bedingung rm set according to condition sce IL SCC Setze lt ea gt wenn C Bit zur ckgesetzt ist Set lt ea gt if Carry is Clear enn die Bedingung nicht erf llt ist wird das Byte in lt ea gt zur ckgesetzt SCS Setze lt ea gt wenn C Bit gesetzt ist Set lt ea gt if Carry is Set enn die Bedingung nicht erf llt ist wird das Byte in lt ea gt zur ckgesetzt SEQ Setze lt ea gt wenn gleich Set lt ea gt if EQual Das Byte in lt ea gt wird gesetzt wenn das Z Bit Zero gesetzt ist Sonst wird das Byte in lt ea gt zur ckgesetzt SGE Setze lt ea gt wenn gr er oder gleich Set lt ea gt on Greater than or Equal Das Byte in lt ea gt wird gesetzt wenn das N Bit Negative und das V Bit oVerflow entweder beide gesetzt oder beide zur ckgesetzt sind Sonst wird das Byte in lt ea gt zur ckg
83. Oo Zum Schlu rechten Nachbarns usw bis Bit 1 den t 0 erh lt erh lt Bit 0 den Wert der vorher im hochwertige n Bit war Das X Bit ist vo F r die Gesamtza der n chsten Sei 318 n der Rotation nicht betroffen hl der Rotationsschritte siehe auf te J Teepe 68000 Assembler B Befehls bersicht Rotiere links ohne Extend Bit k 1 rotate left without extend ROL I gt A v l Is lt Operand lt I EE MSB LSB Es gibt drei Befehlsformen O Der Befehl ROL x lt data gt Dn x entspricht B W L rotiert ein Datenregister nach links um soviele Positionen wie in der Konstante angegeben ist Die Maximalzahl ist acht Der Befeh ROL x Dn Dn x entspricht B W L rotiert ein Datenregister nach links Fin zweites Datenregister legt fest um wieviele Positionen rotiert wird Oo Der Befehl ROL lt ea gt rotiert in Speicherstell 16 Bit um eine Position nach links 68000 Assembler J Teepe 319 B Befehls bersicht rm Rotiere links ohne Extend Bit ROL rotate left without extend IL SCD S aa a i Condition Code Register C erh lt den Wert der zuletzt aus dem hochwertigen Bit des Operanden herausgeschoben wurde Jird zur ckgesetzt beim Rotieren um Null Position V wird zur ckgesetzt
84. PC gt SP PC d gt PC Gr e der Adressdifferenz d BSR S 8 Bit BSR W 16 Bit Assembler Syntax BSR S Marke Marke innerhalb 128 Byte vom PC BSR W Marke Marke innerhalb 32 kByte Byte vom PC Beschreibung Die 32 Bit Adress des Befehls der im Speicher direkt auf den BSR Befehl folgt wird auf den Stack gepushed Danach geht die Ausf hrung des Programms weiter bei der Marke Ist die Adressdifferen wischen PC und Marke gr er als 128 Byte f r BSR S oder 32 kByte f r BSR W gibt der Assembler eine Fehlermeldung aus R R PROGRAMM T RHINWEIS Beenden Sie das Unterprogramm mit RTS Die Programmausfuhr geht danach weiter mit dem Befehl der im Speicher direkt auf den BSR Befehl folgt 196 J Teepe 68000 Assembler B Befehls bersicht Aufruf Unterprogramm relativ rm branch to subroutine BSR L Condition Code Register bleibt unver ndert Format des Befehlswortes 15 14 13 12 11 10 9 8 7 6 D 4 3 2 1 O 16 Bit Adressdiferenz wenn der 8 Bit Adressdifferenz Null ist Feld Adress differenz wird als Bin rzahl mit Vorzeichen aufgefa t Wenn die Bedingung erf llt ist findet der Sprung zur Adresse PC 8 Bit Adress Differenz statt Wenn alle Bits des Feldes 8 Bit Adress differen Null sind wird als Opera
85. Register kopiert Der im Speicher belegte Platz f r die Registerkopien ist zusammenh ngend Die Anfangsadresse im Speicher wird von der effektiven Adresse im Befehl angegeben m Befehl wird auch angegeben ein wie gro es St ck von jedem Register kopiert wird entweder die gesamten Register als Langwort MOVEM L oder nur di niederwertigen H lften der Register als 16 Bit Vort MOVEM W Wenn jeweils in 16 bit Wort aus dem Speicher zu einem Register bertragen wird wird das Vorzeichen auf 32 Bit erweitert auch bei Datenregistern und im Register bertragen Mit dem Befehl MOVEM kann man schnell Registerinhalte retten und wieder instandsetzen Bei Interrupt oder Exception Behandlungen wo es manchmal nicht bekannt ist welche Register ge ndert werden sind normaler weise alle Register zu retten 68000 Assembler J Teepe 275 B Befehls bersicht r Kopiere mehrere Register MOvEM move multiple registers Ill ACHTUNG EXTRA SPEICHERZUGRIFF MOVEM macht einen zus tzlichen f r den Programmierer unerwarteten Lesevorgang im Speicher und zwar auf der Adresse direkt nach der letzten Registerkopie Normalerweise ist das unwichtig aber wenn Sie Ihre Register gerad au
86. Rest Wort 16 Bit Assembler DIVU lt ea gt Dn Quelle Ziel Syntax Beschreibung Der Zieloperand wird durch den Quelloperand dividiert Die beiden Operanden werden als Bin rzahl ohne Vor zeichen aufgefa t Der Zieloperand ist ein Langwort 32 Bit der Quell operand ist ein Wort 16 Bit Das Ergebnis der Division wird im Zieloperand abgespeichert Der Quotient kommt dabei in die niederwertige H lfte Bit 15 0 des Zieloperanden Der Rest der Teilung kommt in die hochwertige H lfte Bit 31 16 des Zieloperanden enn der Quotient gr er ist als ein 16 Bit Wort mit Vorzeichen tritt ein berlauf auf In dem Fall ndern sich nur di Wert des Condition Code Registers die Operanden bleiben unver ndert 226 J Teepe 68000 Assembler B Befehls bersicht Dividiere ohne Vorzeichen r divide unsigned DIVU IL Vor der Operation 15 0 Quelloperand Divisor 31 T L O Zieloperand Divident Nach der Operation Ziel Quelle gt Ziel 1 5 D unver ndert Quelloperand Divisor 31 16 15 O Zieloperand Rest Quotient 68000 Assembler J Teepe 227 B Befehls bersicht Dividiere ohne Vorzeichen MA DIVU divide unsigned IL Bei der Operation k nnen zwei Sonderf lle auftreten dE Division durch Null Es wird eine
87. SLS 1011 SMI 0100 SCE 1100 SGE 0101 SCS 101 SLT 0111 SEQ 110 SGT 0110 SNE 11 SLE Bit 5 0 Die Effektive Adresse w hlt den Zieloperand an Die folgenden Adressierungsarten sind erlaubt Adr Art Mode Reg Adr Art Mode Re Dn 000 R Dn xxx W GE 000 An nicht erlaubt xXxx L 111 001 An 010 R An dl16 PC nicht erlaubt An 011 R An d8 PC Xi Jnicht erlaubt An 100 R An lt data gt nicht erlaubt d16 An 101 R An Erl uterung siehe d8 An Xi 110 R An Kapitel 5 68000 Assembler J Teepe 349 B Befehls bersicht Nr 1 STOP ILL Wenn Supervisor Mode Wenn User Mode Operandgr e Assembler Syntax Beschreibung Halt Ausl sung Lade Status Register und Halt load Status register and stop privilegierter Befehl Exception 8 Konstante gt Status Register Kap 6 Verletzung Privilegium keine Die Konstant die dem wird im Status Register geladen STOP lt data gt Befehlswort unmittelbar folgt Danach findet keine Aktion mehr statt der n chste Befehl wird nicht ausgef hrt Die folgenden Ereignisse setzen den Prozessor wieder in Gang O enn mit dem Befehl STOP das T Bit Bit 15 des Status Registers gesetzt wird findet nach
88. Sprung findet nicht statt 68000 Assembler J Teepe Condition Code Register bleibt unver ndert 179 B Befehls bersicht rm Springe bedingt Bce branch conditionally IL Format des Befehlswortes T55 14 I3 EE T09 8 7 6 5 dk 2 H Q ea E 0 6 Bedingung 8 Bit Adressdifferenz 16 Bit Adressdiferenz wenn der 8 Bit Adressdifferenz Null ist EE Bit 11 8 Bedingungsfeld Bedingung Befehl Bedingung Befehl 0000 BRA 1000 BVC 0001 kein 1001 BVS 0010 BHI 1010 BPL 0011 BLS 1011 BMI 0100 BCC 1100 BGE 0101 BCS 1101 BLT 0110 BNE 1110 BGT 0111 BEQ 1111 BLE Bemerkungen Es gibt keine Bcc Bedingung so da der Sprung NIE stattfindet Nehmen Sie dazu NOP 4E71 2 Die Zahl 0001 im Bedingungsfeld entspricht keinem bedingten Sprung sondern einem BSR Befehl springe zum Unterprogramm Feld Adress differenz wird als Bin rzahl mit Vorzeichen aufgefa t Wenn die Bedingung erf llt ist findet der Sprung zu der Adresse PC 8 Bit Adress Differenz statt Wenn alle Bits des Feldes 8 Bit Adress differenz Null sind wird als Operand das Feld 16 Bit Adress differenz genommen 180 J Teepe 68000 Assembler B Befehls bersicht Pr fe Bit und ndere r test a bit and change BCHG IL angew hltes Bit des Operanden gt Z Bit angew hltes Bit des Opera
89. Supervisor Mode ber die Exception 4 siehe Kap 6 Auch andere nicht erlaubte Befehle l sen eine Exception 4 aus Aus Gr nden der bersichtlichkeit und Kompatibilit t wird dieser Befehl bevorzugt ber andere nicht erlaubte Befehle Condition Code Register bleibt unver ndert Format des Befehlswortes 15 14 13 12 11 10 9 Bu Re Yon Ba Aja 926 ENEE SAAFC Siehe auch TRAP 68000 Assembler J Teepe 243 B Befehls bersicht rm Springe unbedingt mp jump IL Zieladresse gt Programmz hler Operandgr e keine Assembler Syntax JMP lt ea gt Beschreibung Der Programmablauf geht bei der angebenen ffektiven Adresse weiter Condition Code Register bleibt unver ndert Format des Befehlswortes 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 W WEG 325900 E EEE KAS Wer D N E DW Effektive Adress Mode Register 244 J Teepe 68000 Assembler B Befehls bersicht Springe unbedingt rm jump MP ILI Bit 5 0 spezifiziert die n chste Befehlsadresse Die folgenden Adressierungsarten sind erlaubt Adr Art Mode Req Adr Art Mode Re Dn nicht erlaubt xxx W 17 1 000 An nicht erlaubt xxx L 111 001 An 010 R An d16 PC H 010 An nicht erlaubt d8 PC Xi 111 011 An nicht erla
90. Vorgang nennen wir ein Interrupt Der Interrupt wird dadurch verursacht da irgendeine Schaltung im Computer etwas von dem Prozessor will und deswegen ein Signal auf die drei Leitungen ausgibt Es findet dann eine Exception statt Das Status Register und di Adress des n chsten Befehls im Speicher werden auf den Stack gepushed Die Befehlsausf hrung geht dann bei iner bestimmten Adresse weiter Wir erkl ren sp ter wo Es findet ein Interrupt statt wenn sich an der Hardware irgendetwas ge ndert hat das den Prozessor interessieren k nnte 68000 Assembler J Teepe 125 6 Stacks Exceptions und Interrupts Solche Vorg ngen sind z B CO Es wurd in Zeichen auf der Tastatur eingetippt o Die Platte ist bereit Daten entgegen zu nehmen 0 Uhr Interrupt dieser findet gan regelm ig statt OG Sie haben die RESET Taste gedr ckt Es liegt jetzt an der Interruptbehandlung ob bei einem Interrupt berhaupt etwas passiert und wenn ja was passiert 6 3 2 WANN FINDET T EI N INTERRUPT STATT wir haben am Anfang dieses Buches gesehen da das Status Wort eine Interruptmaske IO J 2 hat Diese Int Maske entscheidet dar ber welch rrupts von dem Prozessor gesehen werden und welche nicht CO Hat der Interrupt mindestens den gleichen Wer
91. Z wird gesetzt wenn das Ergebnis gleich Null ist t zur ckgesetzt N wird gesetzt wenn das hochwertige Bit des Ergebnisses gesetzt ist rd sonst zur ckgesetzt X ndert sich nicht e e ird sons e S s 320 J Teepe 68000 Assembler B Befehls bersicht Rotiere links ohne Extend Bit rotate left without extend ROL IL Assembler Syntax ROL x Dn Dn ROL x lt data gt Dn x entspricht B W L Dazu geh rt das folgende Format des Befehlswortes 15 714 13 III T0 9 8 7 6 5 4 3 2 1 0 TES E Ks S E a ESO Z hl 11 Gr e hca i 1 1 Daten Register Register Bit 11 9 Z hlregister Feld Wenn i 0 Die Bits 11 9 geben an um wieviele Positionen die Bits des Zieloperanden nach links rotiert werden Dabei entspricht 001 einer Position usw bis 111 sieben Positionen entspricht 000 entspricht aber acht Positionen Konstante Wenn i 1 Die Bits 11 9 w hlen ein Datenregister Dn an Die niederwertigen 6 Bits des Datenregisters Dn geben an um wieviele Positionen die Bits des Zieloperanden nach links rotiert werden Bit 7 6 Gr e Feld 00 Byte Befehl ROL B 01 Vort Befehl ROL W 10 Langwort Befehl ROL W Bit 5 i Feld 0 Die Bits 11 9 beziehen sich auf eine Konstante l Die Bits 11 9 beziehen sich auf ein Da
92. ab einem Label listen LABEL tbefehle den des Assemblers und der sich wollen Eingabe des zu im Direkt reservi renden Speichers befinden Si modus Es steht Verf gung die hier aufgef hrt sind 2 ehle Bearbei Ihnen nun eine Reihe von nach ihren Funktionen sortiert Befehlen zur Be um ADD n des Programmlistings k nnen Si bzw falls kei Hiermit anf gen Zeil n an das n Programm Ende des Programms im Speicher steht in neues eingeben 376 J Teepe 68000 Assembler C Mitgelieferte Programmdiskette E oder EDIT nt Ln Dieser Befehl dient zum ndern von Zeilen Sie k nnen die Start und Endzeil angeben durch ein Komma getrennt auf in oder beid Zeilenangabe n verzichten usw Statt einer Zeile k nnen Sie auch in Anf hrungszeichen in Zeichenfolge z B ein Label angeben Das Editieren beginnt dann in der Zeile an deren Anfang diese Zeichen stehen INS Ln Diese Funktion erlaubt es Ihnen Zeilen vor der angegebenen Zeil inzuf gen DEL Ln Ln Hiermit k nnen Sie Bereiche des Programms l schen Die Zeilenangaben funktionieren wie bei EDIT COPY Ln TO Ln Dieser Befehl kopiert den angegebenen Bereich unmittelbar vor
93. ag empfangsbereit ander Verarbeitungsbreite als B W oder L angegeben Sie m ssen bei dem B fehl ein Dat nregister verw nden En us tauchte der mit der Nummer angegebene Diskettenfehler E OUT 68000 Assembler J Teepe 385 C Mitgelieferte Programmdiskette 386 J Teepe 68000 Assembler D ASCII Tabelle Atari ST ASCII IA ET ka VONDA NNO xu en NAR ve o 0 r WV d e 4 be d N o d 3 4 d 6 d H H 3 5 a A A 68000 Assembler J Teepe 387 D ASCII Tabelle 388 J Teepe 68000 Assembler E Befehlscode in numerischer Reihenfolge Anhang E Befehlskode in numerischer Reihenfolge Hier folgt nochmal eine Befehls bersicht aber diesmal geordnet in numerischer Reihenfolge Mit Hilfe dieser Tabelle k nnen Sie an Ihrem Schreibtisch aus Objectkode Befehle disassemblieren Die Tabelle enth lt nach Anhang B eigentlich keine neue Information wir haben sie nur zusammengefa t und die Reihenfolge ver ndert Aus der Tabelle wird auch ersichtlich WARUM manche Adressierungsmoden nicht erlaubt sind Der entspre chende Kode ist anders zugeordnet Die Doppelbelegung der Tabelle an manchen Stellen ist daher nur scheinbar All Kode di nicht in dieser Tabelle enthalten sind sollten eine Illegal Exception ausl sen
94. als pop 98 J Teepe 68000 Assembler 6 Stacks Exceptions und Interrupts Sal 22 ABLAGE VON R CKKEHRADRESSEN Auch R ckkehradressen k nnen im Stack abgelegt werden Schauen sie sich das folgende Beispiel an 0100 MOVE L 00001000 SP ini SP 0106 JSR SUBR Anruf Unterprogramm 010C MOVE D2 D4 n chster Befehl 0200 SUBR MOVE D3 D5 tue irgend etwas 0202 RTS R ckkehr Beim Befehl 0106 JSR SUBR Anruf Unterprogramm wird zuerst der Stack Pointer SP um vier vermindert SP erh lt dann den Wert 1000 4 0FFC Danach wird di Adress des n chsten Befehls also 010C auf den Stack abgelegt Danach findet einen Sprung zu der Adresse SUBR also 200 statt Vor dem Befehl Nach dem Befehl JSR SUBR JSR SUBR PC 00000106 PC 00000200 SP 00001000 SP 00000FFC OFFC SP gt OFFC 010C OFFE OFFE 0000 SP gt 1000 1000 1002 1002 68000 Assembler J Teepe 99 6 Stacks Exceptions und Interrupts Beim Befehl 0202 RTS R ckkehr wird zuerst der Inhalt des Stacks also der Wert S010C in den Programmz hler PC geladen so da der n chste auszuf hrende Befehl bei 10C liegt Danach wird der Stack Pointer um 4 erh ht Er kommt damit wieder von SOFFC auf 1000 Vor dem Befehl Nach dem Befehl RTS RTS PC 5
95. beziehen Der Linker setzt auch f r die externen Marken den richtigen Wert ein Englisch to link verbinden LSB least significant bit niederwertiges Bit Das ist also bei allen Datentypen das Bit 0 M Eine Abk rzung f r Mega Im ComputerJargon bezieht sich M auf die Zahl 1 048 576 e 1024 x 1024 Marke In Assemblersprache ist eine Marke ein symbolischer Anh nger der an Daten oder Befehle angeh ngt werden kann Befehle k nnen auf die Marke bezug nehmen Der Assembler setzt dann die richtige Speicheradress in Englisch Label Mnemonic Ein Symbol das durch den Assembler erkannt wird und das einen bestimmten Maschinenbefehl vertritt Beispiel JMP ist das Mnemonic f r das JUMP Befehl 134 J Teepe 68000 Assembler A Verzeichnis der Fachbegriffe MSB most significant bit hochwertiges Bit Das ist also bei einem Byte Bit 7 bei einem Wort Bit 15 und bei einem Langwort Bit 31 Object File Der Bin rkode wie er vom Assembler rstellt wird Der Linker wandelt Object Files in ablauff hige Kode um Operand Die Daten di in einen Befehl verarbeitet werden sollen Privilegierte Befehle Befehle die nur dann ausgef hrt werden wenn der Prozessor in Supervisor Mode ist Das S Bit Bit 13 des Status Registers ist dann gesetzt Wenn der Prozessor im User Mode ist werden diese Befeh nicht ausgef
96. ckgesetzt ist Bleibt sonst unver ndert 160 J Teepe 68000 Assembler B Befehls bersicht UND mit Konstante zum CCR Fc and immediate to condition codes ANDI zum CCR Be Format des Befehlswortes 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 Konstante 8 Bit TEE EE EE Benutzen Sie ANDI zum SR wenn Sie auch das System Byte UND verkn pfen m chten ORI zum CCR wenn Sie das CCR ODER verkn pfen m chten EOR um CCR wenn Sie das CCR Exclusiv ODER verkn pfen m chten MOVE zum CCR wenn Sie das CCR ohne R cksicht auf die bestehen den Bits ndern m chten 68000 Assembler J Teepe 161 B Befehls bersicht UND mit Konstante zum SR ANDI and immediate to status register zum SR privilegierter Befehl IL Wenn Supervisor Mode Konstante SR gt SR Wenn User Mode Ausl sung Exception 8 Kap 6 Verletzung Privilegium Operandgr e Wort 16 Bit Assembler ANDI lt data gt SR Quelle Ziel Syntax Beschreibung emm der Prozessor sich im Supervisor Mode befindet wird die Konstante die im Speicher unmittelbar dem Befehlswort folgt mit dem Status Register bitweise UND verkn pft Das Ergebnis wird im Status Register abgespeichert emm der Prozessor dagegen im User Mode ist
97. da die Adresse von hallo auf den Stack gepushed wird bevor die Funktion writeln auf gerufen wird die Begriffe Stack und push werden im Kapitel 6 dieses Buches erl utert Sie brauchen den Debugger auch wenn Programme die Sie in einer Hochsprache geschrieben haben nicht laufen und Sie mit den Testmethoden innerhalb der Hochsprache nicht weiter kommen Dieser Einsatz des Debuggers stellt also eine Erg nzung der Test M glichkeiten des Compiler Pakets dar Sie ist leider manchmal notwendig weil ja nicht alle Compiler immer v llig fehlerfrei arbeiten H ufigster Einsat ist dort wo Sie z B Inkompatibilit ten mit dem Betriebssystem oder mit anderen Programmen vermuten Sie k nnen sich mit dem Debugger auch den Maschinencode eines Programms das Sie nicht erstellt haben anschauen vielleicht das Schachprogramm das Sie bei Ihrem Freund kopiert haben 16 J Teepe 68000 Assembler 1 Einf hrung Erfahrene ei da Beispiele Die Bildsc O Assembler Programmierer hirmtexte eindeutsch Das Progra entsprechen innerhalb nem Programm notfalls nderungen durchf hren D sie ber ein Listing des Programms verf gen ei k nnen in so ohne nes Programms en mm erweitern den Stell inn Ihrer einen erhalb des Programms zu Erweiterung des Program Ein ein
98. dem Befehl ine Trace Exception Exception 9 statt CG Ein Interrupt Voraussetzung ist nat rlich da die Interruptebene mindestens den Wert der soeben gesetzten Interruptmaske I2 IO hat CO Fin Reset Exception setzt den Prozessor zu jeder Zeit wieder im Gang Mit diesem Befehl k nnen schwer zu determinierende Programmfeh r gefunden werden 350 J Teepe 68000 Assembler B Befehls bersicht Lade Status Register und Halt rm load Status register and stop stop privilegierter Befehl I I E S dee Hee Condition Code Register wird entsprechend gesetzt 15 14 13 12 11 10 9 8 7 6 5 4 3 2 L O Eo EN E S S SE 209 9 Konstante unmittelbare Daten 4E72 Siehe auch TRAP ILLEGAL CHK 68000 Assembler J Teepe 351 B Befehls bersicht Fc Subtrahiere bin r SUB subtract binary IL Ziel Quell gt Ziel Operandgr e SUB B Byte 8 Bit SUB W dort 16 Bit SUB L Langwort 32 Bit Assembler Syntax Operation SUB x Dn lt ea gt Dn lt ea gt gt Dn SUB x lt ea gt Dn lt ea gt Dn gt lt ea gt x entspricht B W L Beschreibung Der Quelloperand wird bin r vom Zieloperand subtrahiert und das Ergebnis wird im Zieloperand abgespeichert Einer der beiden Operanden mu ein Datenregister sein Die Gr des Operanden sowie die Angabe welcher Operand das Datenregister ist
99. des Operanden wird auf 32 Bit erweitert bevor die Operation stattfindet 10 Langwort Befehl MOVEA L Bit 11 9 w hlt den Zieloperand Adressregister an Bit 5 0 Effektive Adresse des Quelloperanden Die EB folgenden Adressierungsarten sind erlaubt Adr Art Mode Reg Adr Art Mode Re Dn 000 R Dn XXX W 111 000 An 001 R An XXX L T1 001 An 010 R An d16 PC 111 010 An 011 R An d8 PC Xi 111 011 An 100 R An lt data gt 11 100 d16 An 101 R An Erl uterung siehe d8 An Xi 110 R An Kapitel 5 Benutzen Sie MOVE wenn der Zieloperand kein Adressregister ist oder MOVEO wenn der Quelloperand eine Konstante ist MOVE T Siehe auch MOVEM MOVEP LEA 274 J Teepe 68000 Assembler B Befehls bersicht Kopiere mehrere Register nr move multiple registers MOvEM I Register gt Ziel bzw Quelle gt Register Operandgr e MOVEM W Wort 16 Bit MOVEM L Langwort 32 Bit Quelle Ziel Assembler MOVEM x Registerliste lt ea gt Syntax MOVEM x lt ea gt Registerlist x entspricht B W L Beschreibung Es gibt zwei bertragungsrichtungen CO ntweder werden die angew hlten Register zum Speicher kopiert o oder die im Speicher abgelegten Registerkopien werden in die
100. enth lt A Propos 68000 Es gibt die 68000 Familie die aus den Prozessoren 68000 68008 68010 68012 68020 und 68030 besteht Von diesen Prozessoren besprechen wir nur den ersten den 68000 weil dieser Prozessor in dem Atari steckt 2 1 USER MODE SUPERVISOR MOD Ia Der Prozessor hat zwei Betriebsarten den User Mode und den Supervisor Mode In Anwendungsprogrammen befindet sich der Prozessor normalerweise im User Mode Im User Mode sind einige Kommandos des Befehlssatzes ausgeklammert Diese laufen nur im Supervisor Mode Hierdurch wird die Gefahr da B bei einem Systemabsturz ungewollt Files auf der Platte gel scht werden was uns bei einem anderen Prozessor mal passierte rheblich verringert Ein Anwendungsprogramm kann den Prozessor aber durch Aufruf eines entsprechenden Kommandos z B TRAP oder ILLEGAL in den Supervisor Mode umschalten der Programmierer sollte das nur dann tun wenn er d S a ringende Gr nde dazu hat Normalerweise wird der upervisor Mode nur innerhalb des Betriebssystem ngew hlt Weitere Details ber die Umschaltung in den Supervisor Mode bei Exceptions Kap 6 68000 Assembler J Teepe 21 2 Architektur Die folgenden Befehl s g privilegierte Befehle laufen nur in Supervisor Mo
101. f r Byte Befehle erlaubt Benutzen Sie CMPA wenn der Zieloperand ein Adress register ist CMPI wenn einer der Operanden ein Konstante ist CMPM wenn ein direkter Speicher zu Speicher Vergleich stat 208 tfinden soll J Teepe 68000 Assembler B Befehls bersicht Vergleiche Adresse AP compare address cMPA L Ziel Quelle Operandgr e CMPA W Wort 16 Bit CMPA L Langwort 32 Bit Assembler CMPA x lt ea gt An Quelle Ziel Syntax x entspricht W L Beschreibung Der Quelloperand in lt ea gt wird bin r vom Ziel Adressregister An subtrahiert und das Condition Code Register wird entsprechend gesetzt Das ziel Adressregister An wird nicht ge ndert enn die Operandgr des OQuelloperanden in Wort ist wird der Quellopperand mit dem gleichen Vorzeichen auf 32 Bit erweitert Vom Ziel Adressregister werden s mtliche 32 Bits angewendet ee Ah EAR o aee a S de aS Condition Code Register y aij D ER C wird gesetzt wenn ein Leihen generiert wird rd sonst zur ckgesetzt V wird gesetzt wenn ein berlauf generiert wird rd sonst zur ckgesetzt Z wird gesetzt wenn das Ergebnis gleich Null ist rd sonst zur ckgesetzt N wird gesetzt wenn das Ergebnis negativ ist rd sonst zur ckgesetzt X bleibt unver ndert 68000 Assembler J Teepe 209 B Befehls bersi
102. gesch Progr und ihn au Solche nderu ordnungen Programm Listi vorliegen nich all n n haben u gro zu der n ch ms tztes Programm amm wenn m Betrieb st E gen des Wenn sind en die ist g im Object arbeitsintensiver an Schutzmechanismus innerhal knacken den Llo des Programms findet llt code als tsprechend nderunge in Erweiterung und einen Sprung vom sten Position S prung ab der Ende der innerhalb si wenn en Bea Man knackt entsprechende A fe A d um Gr en Sie das Programms sw nsche aber rbeitung eines bestehenden einfacher schreibe als n m te Die men die Sie erlaubt sind Programmierers Programms Entscheidung dar ber mit wenn Sie DART dem das Program nicht geschrieben liegt aber Debugger trotzdem Wir zeigen 68000 Assembler J Teepe m nochmal neu ob nderungen an Program haben in der Verantwortung des Ihnen nur die Werkzeuge juristisch 17 1 Einf hrung 1 4 DIE PROGRAMM ERSTELLUNG Wie geht nun eine praktische Programm Erstellung in Assembler vonstatten Schon etwas komplexer als das erste Mini Programm in Basic das mitten in der Ausf hrung unerwartet stehen bleibt mit SYNTAX ERROR IN 80 Normalerweise wird
103. getestetes Bit 0 gt Bit Z wird gesetzt getestetes Bit 1 gt Bit Z wird zur ckgesetzt Das getestete Bit wird anschlie end gel scht al Feet Condition Code Register bleibt unver ndert C bleibt unver ndert V bleibt unver ndert Z wird gesetzt wenn das getestete Bit Null ist Wird sonst zur ckgesetzt N bleibt unver ndert X bleibt unver ndert 186 J Teepe 68000 Assembler B Befehls bersicht Pr fe Bit und l sche r test a bit and clear BCLR IL Es gibt vier Befehlsformen o Der Befehl BCLR L lt data gt Dn pr ft ein Bit des Datenregisters Dn Die Konstante lt data gt w hlt das Bit an 0 Der Befehl BCLR L Dp Dn pr ft ein Bit des Datenregisters Dn Das Datenregister Dp w hlt das Bit an E o Der Befehl BCLR B lt data gt lt ea gt pr ft ein Bit in einem Byte im Speicher Die Konstante lt data gt w hlt das Bit an oO Der Befehl BCLR B Dp lt ea gt pr ft ein Bit in einem Byte im Speicher Das Datenregister Dp w hlt das Bit an Assembler Syntax BCLR L lt data gt Dn Dazu geh rt das folgende Format des Befehlswortes 115 J H SH SEO I 8 7 6 5 4 3 2 3 0 Bit 2 0 Feld Datenregister Dn w hlt das Datenregister mit dem Operand an Hierin befindet sich das Bit das gepr ft werden soll Feld Bitzahl gibt an welch
104. haben wir neben den deutschen auch Befehlsbezeichnungen Damit k nnen Sie sich die Mnemonics besser C Bit zur ckgesetzt ist Clear C Bit gesetzt ist Set gleich wenn das Z Bit Zero beende Schleife wenn gr er oder gleich Terminate on Greater than or Egual Die DBGT b D Negative m BGE Schleife eide gesetzt ist f r H wird bee nd das V Bit oder beide zur ckgesetzt sind Bin rzahlen mit Vorzeichen gedacht ndet N Bit entweder wenn das oVerflow Terminate on Greater Than beende Schleife wenn gr er Die Schleife wird beendet wenn o das N Bit und das V Bit gesetzt sind und das Z Bit zur ckgesetzt ist oder Oo das N Bit das V Bit und das Z Bit alle zur ckgesetzt sind DBGT ist f r Bin rzahlen mit Vorzeichen gedacht ist sonst hnlich DBH 68000 Assembler J Teepe 217 B Befehls bersicht pr fe dekrementiere und springe L DBce test condition decrement and je DBHI beende Schleife wenn h her Terminate on Higher than branch Die Schleife wird beendet wenn das C Bit und das Z Bit beide zur ckgesetzt sind DBGE ist f r Bin rzahlen ohne Vorzeichen gedacht i hnlich DBGT st sonst DBLE beende Schleife wenn kleiner oder gleich Terminate on Less than or Equal Die Schleife wird b
105. hrt pop Ein Vorgang der den oberen Wert vom Stack entfernt Program Counter gt Programmz hler Programm Eine Gruppe von Befehlen und Daten die eine bestimmte Funktion ausf hrt Programmz hler Ein Register das die Adresse des n chsten Befehls h lt push Ein Vorgang der inen neuen Wert zum Stack hinzuf gt 68000 Assembler J Teepe 135 A Verzeichnis der Fachbegriffe Quellkode Der Text den der Programmierer als Quelle f r den Assembler benutzt Der Assembler erstellt daraus den Object File RAM Random Access Memory Schreib Lese Speicher Register eine schnelle vorl ufige Speicherstell innerhalb des Prozessors um vor bergehend Daten abzuspeichern ROM Read Only Memory Speicher nur zum Lesen Schleife Eine Reihe von Befehlen die wiederholt durchlaufen wird Englisch loop Speicher Ein Teil des Computers der Information aufhebt und auch wieder ur ckliefert Es gibt die folgenden Arten von Speichern CO Halbleiterspeicher Englisch Memory o Massenspeicher Platte Diskette Stack ein Speicherverfahren im Computerspeicher in dem das zuletzt gespeicherte Wort zuerst wieder entnommen wird Der Stack wird h ufig benutzt um bei Aufruf von Unterprogrammen die R ckkehradresse sowie Parameter abzulegen Stack Frame Ein Datenbereich der auf den Stack rese
106. im Registerfeld Mit den drei Bits des Registerfeldes werden die Datenregister D0 D7 angew hlt Adressregister An 31 0 OPERAND Das Verhalten ist fast so wie mit Datenregister direkter Adressierung mit aber wei wichtigen Abweichungen Die bertragung von Daten ber Adressregister ist auf W rter und Langw rter beschr nkt die bertragung von Bytes ist nicht erlaubt O emm ein Wort in ein Adressregister hinein kopiert wird wird Bit 15 das Vorzeichenbit in den Bitpositionen 31 16 hineingeschrieben Das Symbol bei der Befehlserkl rung Anhang B bedeutet da diese Adressierungsart nur f r Wort und Langwort Befehle aber nicht f r Byte Befehle erlaubt ist 60 J Teepe 68000 Assembler 5 Adressierungsarten von Befehlen Assembler Syntax An n in 0 7 Adr Art Mode Reg An 1001 R An Vorgang Operand An BEISPIE Befehl vorher nachher MOVE B A1 D3 Al 11111111 AT 11111177 D3 33333333 D3 33333311 MOVE B D2 AO nicht erlaubt MOVE W A1 D3 A1 1111111 A1 1111111 D3 33333333 D3 33331111 ADDA W D2 AA D2
107. lt ea gt wird von Null subrahiert Das Ergebnis wird im Zieloperand lt ea gt abgespeichert Nach der Operation ist der Operand durch sein Zweierkomplement ersetzt worden Die Operandgr e ist Byte Wort oder Langwort Condition Code Register Lo je I C wird gesetzt wenn ein Leihen generiert wird rd sonst zur ckgesetzt V wird gesetzt wenn ein berlauf generiert wird rd sonst zur ckgesetzt Z wird gesetzt wenn das Ergebnis gleich Null ist rd sonst zur ckgesetzt N wird gesetzt wenn das Ergebnis negativ ist rd sonst zur ckgesetzt X Erh lt den gleichen Wert wie das C Bit 298 J Teepe 68000 Assembler B Befehls bersicht Negiere Operand Pf negate NEG IL Format des Befehlswortes 15 14 E 127I 1027 9 8 7 6 5 4 3 2 1 0 011 1JI0 01J0 1 0 10 Gr e Effektive Adress l Mode Register Bit 7 6 Gr e Feld 00 Byte Befehl NEG B 01 Wort Befehl NEG W 10 Langwort Befehl NEG L Bit 5 0 Die Effektive Adresse w hlt den Zieloperand an Die folgenden Adressierungsarten sind erlaubt Adr Art Mode Reg Adr Art Mode Reg Dn 000 R Dn XXX W 111 000 An nicht erlaubt xxx L 111 001 An 01
108. neuen tats chlich da das Programm nicht Befehl nicht selbst ndig wurde Die Vektoren 12 bis 14 sind reserviert Vektor 15 Adresse 003C nicht Zuordnung BT D ER initialisiert Diese Fehl wird hier Der Prozessor verf gt ber 256 Exceptions jede mit inem igenen Vektor Jeder Vektor sollte u der entsprechenden Exception Behandlungsroutine eigen yenn also einer der Vektoren REhle w rde normalerweise der Programmz hler einen unsinnigen ert annehmen und das Programm abst rzen yenn in rquel l allen nicht Except hier beschriebene abgefangen tion auftritt und der entsprechende Vector zeigt zu einer unsinnigen Stelle findet die Exception initialisierten statt Es gibt dann f r Exceptions eine uniforme wohl definiert Abfertigung Die Vektoren 16 bis 23 sind reserviert 118 J Teepe 68000 Assembler 6 Stacks Exceptions und Interrupts Vektor Adresse Zuordnung A 24 0060 falscher Interrupt Ee a EE EE Wenn ein Eingabe Ausgabe Baustein in dem Prozessorbus einen Interrupt verursacht aber sich bei der darauf folgenden Abfrage des Prozessors nicht meldet sprechen wir von einem falschen Englisch spurious Interrupt Das ist immer ein Hardwareproblem VORSCHLAGE ZUR FEH
109. nicht des erken blich bei der Programmierers nbar macht C Programmierung ERUNG VON STR wie NGS er sind aber vermehrter Speicherbedarf ZE CH ENK ETT EN tring an der niedrigs anf ngt Es liegt auch im das gibt es Ende des ist Zeichenkett bei der h heren Adresse aufh rt Dei der ni da ten oder f r den Ermessen Strings eine drigen Adresse anf ngt und ein S0 Zeic 44 6F 67 6E 65 65 BEISPIEL 1000 53 1008 61 1010 75 1018 6F 1020 68 20 ZC 64 T 65 20 65 20 74 69 73 12 77 65 G 6F 73 69 00 hen gekennzeichnet 20 20 63 65 AF Das 54 So ein T 77 ag SO W 68 undersch 20 oen wie DC heute Ende wird durch J Teepe 68000 Assembler GC BEFEHLSSTRUKTUR 3 Datenstrukturen M SPEICHER Jetzt schauen wir uns an wie ein Befehl konkret im Speicher des Computers abgespeichert wird Als Beispiel nehmen wir uns den Befehl MOVE vor Auch weiterhin MOVE als Beispiel werden wir in diesem Buch h ufig benut alle Adressierungsarten tzen weil man daran so sch n zeigen kann MOVE kopiert Daten Byte Wort oder Langwort vo
110. nicht implementierte Befehle sind speziell daf r gedacht um den erweitern Befehle deren Kode mi eine E Befehlssatz softwarem ig zu SFxxx erzeugen ein Exception 11 t SA anf ngt Axxx erzeugen Exception 10 Befehle deren Kode mit F anf ngt BEISPIEL 1 Sie w rden sich einen Befehl w nschen der mit einer Instruktion einen Block im Speicher kopiert etwa BLOCKMOVE Quelle Ziel L nge So ein Befehl bietet der 68000 Prozessor nicht Sie k nnen sich diesen Befehl selber erstellen und es als Programm im Vektor 10 implementieren Die Abarbeitung des Befehls dauert nat rlich erheblich l nger als wenn der Befehl elementar verf gbar w re Der Ablauf ist geringf gig schneller als w aufgerufen w rde nn der Befehl als Unterprogramm 68000 Assembler J Teepe 117 6 Stacks Exceptions und Interrupts BEISPIEL 2 Viele der Befehlscode des 68020 fangen mit Fxxx an Sie k nnnen sich diese Befehle auf dem 68000 nachbauen emulieren Motorola hat mit diesem Verfahren geschriebe stand Ein Vorteil der n bevor er Emulation zu wissen existiert braucht sondern nachbgebaut Programme f r ist da der Prozessor ur Verf gung den
111. rter 01 Wort Befehl EORI W siehe Kap 3 8 10 Langwort Befehl EORI L Bit 5 0 Die Effektive Adresse w hlt den Zieloperand an Die folgenden Adressierungsarten sind erlaubt Adr Art Mode Reg Adr Art Mode Re Dn 000 R Dn xxx W 111 000 An nicht erlaubt xxx L 111 001 An 010 R An d16 PC nicht erlaubt An 011 R An d8 PC Xi nicht erlaubt An 100 R An lt data gt nicht erlaubt d16 An 101 R An Erl uterung siehe d8 An Xi 110 R An Kapitel 5 Argumentwort Bit 7 6 00 gt Datenfeld ist die niederwertig H lfte des 1 Argumentwortes Bit 7 6 01 gt Datenfeld ist das 1 Argumentwort Bit 7 6 10 gt Datenfeld ist 1 2 Argumentwort Siehe auch ANDI ORI EOR NOT TST 234 J Teepe 68000 Assembler Exclusives ODER mit Konstante exclusive or immediate Konstante CCR gt CCR Operandgr e Assembler Syntax Beschreibung Byte 8 lt data gt Bit CCR Die im Speicher unmittelbar dem Konstante bitweise wird Exclusive OD mit dem Condition Code ER verkn pft Das Ergebnis wird B Befehls bersicht Ir l EORI zum CCR Quelle Ziel Befehlswort folgende Register im Condition Code Register abgespeichert Die Operandgr e ist ein
112. sieht Sobald der Prozessor einen Interrupt gesehen hat fragt er den den antwortet damit Tut die Schaltung dies nicht falschen Exception 24 erzeugt e inen Interruptvektor ab Die Schaltung indem sie auf die Datenleitungen der Vektornummer zeigt Interrupt dann haben wir und es wird die Aus der Vektornummer erkennt der Prozessor welche Position in der Tabelle 3 1 er anspringen mu um die Interrupt Behandlungsroutine zu finden Aus der Vektornummer erkennt der Prozessor welche Exception anzuspringen ist Es gibt um die Sache noch komplizierter zu machen wei Verfahren wie sich der Prozessor die Adresse der Interrupt Behand lungsroutine holt und zwar den Autovektor Interrupt und den Anwender Interrupt Ein Signal von der Schaltung zum Prozessor legt fest ob der anlegenden Interrupt ein Autovektor Interrupt oder ein Anwender Interrupt ist 68000 Assembler J Teepe 129 6 Stacks Exceptions und Interrupts Vektor Adresse Zuordnung 25 0064 Ebene 1 Autovektor Interrupt 26 0068 Ebene 2 Autovektor Interrupt 27 006C Ebene 3 Autovektor Interrupt 28 0070 Ebene 4 Autovektor Interrupt 29 0074 Ebene 5 Autovektor Interrupt 30 0078 Ebene 6 Autovektor Interrupt Sch 007C Ebene 7 Autovektor Interrupt 6
113. soweit ist diese Adressierungsart identisch mit der Adressierungsart Adressregister indirekte Adressierung An wie hier oben besprochen Danach nimmt das Adressregister um die Gr e des Operanden zu Mit dem Befehl MOVE B Al DO wird AI also um eins mit dem Befehl MOVE Al DO um zwei mit dem Befehl MOVE Al DO um vier vergr ert BEISPIEL enn das Registerfeld die Bits 010 Wert 2 enth lt und im Adressregister A2 der Wert 1000 abgespeichert ist dann wird der Wert auf der Adresse 1000 im Speicher als Operand genommen Erst nach Auswertung des Operanden vergr ert sich der Wert von A2 Befehl vorher nachher MOVE L A2 D1 A2 00001000 A2 00001004 D1 11111111 DI 12345678 auf S00001000 ist 12345678 12345678 68000 Assembler J Teepe 65 5 Adressierungsarten von Befehlen Adr Art Mode Re Assembler Syntax An 011 R An An n in 0 7 Vorgang Adresse Operand An An An K K 1 2 oder 4 Das Adressregister A7 der Stack Pointer verh lt sich geringf gig anders als die anderen Adress register Beim Byte Befehl ZE MOVE B A7 DO nimmt A7 um zwei statt um eins zu Damit ist gew hrleistet da der Stack Pointer immer zu einer geraden Adresse zeigt 66 J Teepe 68000 Assembler 5
114. wird Einen eventuellen berlauf kann man am V Bit feststellen HINWEIS Der Befehl ist weitgehend hnlich zum Befehl LSL Der Unterschied ist der da das LSL das vV Bit zur cksetzt Es gibt drei Befehlsformen Der Befehl ASL x lt data gt Dn x entspricht B W L schiebt ein Datenregister nach links um soviele Positionen wie in der Konstante angegeben ist Die Maximalzahl ist acht Der Befeh ASL x Dnr Dn x entspricht B W L schiebt ein Datenregister nach links Ein zweites Datenregister legt fest um wieviele Positionen geschoben wird CO Der Befehl ASL lt ea gt schiebt ine Speicherstell 16 Bit um eine Position nach links 68000 Assembler J Teepe 165 B Befehls bersicht rm Arithmetisches Schieben nach links As arithmetic shift left IL a are Condition Code Register C erh lt den Wert der zuletzt aus dem hochwertigen Bit des Operanden herausgeschoben wurde ird zur ckgesetzt bei Schieben um Null Positionen V wird gesetzt wenn das hochwertige Bit des Operanden sich w hrend des Verschiebens mindestens einmal ndert rd sonst zur ckgesetzt Z wird gesetzt wenn das Ergebnis gleich Null ist rd sonst zur ckgesetzt N wird gesetzt wenn das hochwertige Bit des Ergebnisses gesetzt ist Wird sonst zur ckgesetzt X erh lt den Wert der zuletzt aus dem hochwertigen Bit des Operanden herausgeschoben wurde Bleibt unv
115. xxxX L 1714 001 An 010 R An d16 PC 111 010 An 011 R An d8 PC Xi 111 011 An 100 R An lt data gt 111 100 d16 An 101 R An Erl uterung siehe d8 An Xi 110 R An Kapitel 5 Adressierungsart An nicht f r Byte Befehle erlaubt Bit 5 0 Wenn die Effektive Adresse der Zieloperand ist also Dn lt ea gt gt lt ea gt sind die folgenden Adressierungsart ten erlaubt Adr Art Mode Reg Adr Art Mode Reg Dn nicht erlaubt xxx W 111 000 An nicht erlaubt XXX L 111 001 An 010 R An dl6 PC nicht erlaubt An 011 R An d8 PC Xi Inicht erlaubt An 100 R An lt data gt nicht erlaubt d16 An 101 R An Erl uterung siehe d8 An Xi 110 R An Kapitel 5 HINWEIS Wenn der Zieloperand ein Datenregister sein soll kann er nicht mit der Adressierungsart lt ea gt angew hlt werden sondern nur mit der Adressierungsart Dn 68000 Assembler J Teepe 143 B Befehls bersicht Ip Addiere bin r ADD add IL Benutzen Sie ADDA wenn der Zieloperand ein Adress register ist ADDI oder ADDQ wenn einer der Operanden ein Konstante ist ADDX wenn ein anderes Verhalten des Z Bits erw nscht ist Siehe auch SUB 144 J Teepe 68000 Assembler B Befehls bersicht Addiere Adresse pr add address ADDA L Quelle ziel g
116. 0 0111 1000 0001 0100 0011 0100 0010 0011 0100 0101 wird 1234 zum Speicherplatz 2345 addiert und mit dem Befehl 0100 1110 1111 1000 0100 0101 0110 0111 wird zum Speicherplatz 4567 ge sprungen Der Maschinencode ist spezifisch f r den Prozessor Fin Programm in Maschinencode f r den 68000 l uft nicht auf dem 80386 Manche Prozessoren haben einen kr ftigeren Befehlssat als ander Bei dem Prozessor mit dem kr ftigeren Befehlssat kann man mit einem Befehl eine Aufgab rledigen f r den man mit einem Prozessor mit inem weniger kr ftigem Befehlssat wei oder mehr Befehl braucht Der Befehlssatz des 68000 ist kr ftiger als der des 8080 aber weniger kr ftig als der des 68030 Der ASSEMBLER ist ein Hilfsprogramm das jeden Befehl in Assemblersprache in genau einen Befehl in Maschinencode umwandelt wir k nnen also Befehl ingeben wie ADDI W NCREMENT BUFFER und JMP CONTINUE Der Assembler erstellt daraus den richtigen Maschinencode Der Assembler verbindet das Commando ADD mit 0000 0110 0111 1000 der Wert INCREMENT mit 0001 0100 0011 0100 und die Adresse Buffer mit 0010 0011 0100 0101 Er verbindet den Befehl JMP mit 0100 1110 1111 1000 und der Label CONTINUE mit 0100 0101 0110 0111 Der Assembler erlaubt uns mit K rzeln f r die Befehle und mit symbolischen Namen f r die Variablen und den Ansprungpunkten zu arbeiten Er nimmt uns auch die meisten Bitt fteleien ab 8 J Teepe 68000 Assembler 1 Einf hrung
117. 0 R An dl16 PC nicht erlaubt An 011 R An d8 PC Xi IJnicht erlaubt An 100 R An lt data gt nicht erlaubt d16 An 101 R An Erl uterung siehe d8 An Xi 110 R An Kapitel 5 Benutzen Sie NOT wenn Sie das Finerkomplement haben m chten Bitweise Komplement NEGX wenn sie ber das X Bit den Operand um eins vergr ern m chten Abarbeitung von Reihen Siehe auch NEGX EXT 68000 Assembler J Teepe 299 B Befehls bersicht rm Negiere Operand mit Extend Bit NEGX negate with extend Ill 0 ziel X gt ziel Operandgr e NEGX B Byte 8 Bit NEGX W vort 16 Bit NEGX L Langwort 32 Bit Assembler NEGX x lt ea gt Syntax x entspricht B W L Beschreibung Der Operand der Zieladresse lt ea gt und das Extend Bit werden von Null subrahiert Das Ergebnis wird im zieloperand lt ea gt abgespeichert Die Operandgr e ist Byte Wort oder Langwort ee I ee IE Zu ee Condition Code Register A a fie a E C wird gesetzt wenn ein Leihen generiert wird Wird sonst zur ckgesetzt V wird gesetzt wenn ein berlauf generiert wird Wird sonst zur ckgesetzt Z wird gel scht wenn das Ergebnis ungleich Null ist Bleibt sonst unver ndert N wird gesetzt wenn das Ergebnis negativ ist rd sonst zur ckgesetzt X Erh lt den gleichen Wert wie das C Bit 300 J Teepe 68
118. 00 DBCC 1100 DBGE 010 DBCS 110 DBLT 0110 DBNE 1110 DBGT 011 DBEO 1111 DBLE Bit 2 0 Feld Datenregister Dn w hlt das Datenregister an das als Schleifenz hler benutzt wird Feld Adress differenz wird als Bin rzahl mit Vorzeichen aufgefa t Die Sprungadresse ist PC Adress Differenz 68000 Assembler J Teepe 221 B Befehls bersicht Dividiere mit Vorzeichen Mr 1 D vs signed divide Ill Ziel Quelle gt Ziel 32 16 gt 16r 16q Divident Divisor gt Quotient Rest Operandgr e CO Eingangswerte Divisor Wort 16 Bit Divident Langwort 32 Bit o Ergebniswerte Quotient Wort 16 Bit Rest Wort 16 Bit Assembler DIVS lt ea gt Dn Quelle Ziel Syntax Beschreibung Der zieloperand wird durch den Quelloperand dividiert Die beiden Operanden werden als Bin rzahl mit Vorzeichen aufgefa t Der zieloperand ist ein Langwort 32 Bit der Quelloperand ist ein Wort 16 Bit Das Ergebnis der Division wird im Zieloperand abgespeichert Der Quotient kommt dabei in die niederwertige H lfte Bit 15 0 des Zieloperanden der Rest der Teilung kommt in die hochwertige H lfte Bit 31 16 des Zieloperanden Der Rest erh lt das gleiche Vorzeichen wie der Divident 222 J Teepe 68000 Assembler B Befehls bersicht Dividiere mit Vorzeichen r signed divide DIvs Kl
119. 000 Assembler B Befehls bersicht Negiere Operand mit Extend Bit AP negate with extend NECX IL Format des Befehlswortes 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 O 1 01 111 101 0 0 0 0 O Gr e Effektive Adress Mode Register Bit 7 6 Gr e Feld 00 Byte Befehl NEGX B 01 Wort Befehl NEGX W 10 Langwort Befehl NEGX L Bit 5 0 Die Effektive Adresse w hlt den Zieloperand an Die folgenden Adressierungsarten sind erlaubt Adr Art Mode Req Adr Art Mode Re Dn 000 R Dn xxx W EK 000 An nicht erlaubt xxx L 711 001 An 010 R An dl6 PC nicht erlaubt An 01 R An d8 PC Xi Jnicht erlaubt An 100 R An lt data gt nicht erlaubt d16 An 101 R An Erl uterung siehe d8 An Xi 110 R An Kapitel 5 PROGRAMMIERHINWEIS Mit den Befehlen NEGX ADDX SUBX k nnen Sie Bin rzahlen mit beliebig vielen Stellen automatisch abarbeiten Legen Sie dazu in bereinstimmung mit der 68000 Architektur die niederwertigen Teil der Bin rzahl auf die h here Adresse und die hochwertigen Teil auf die niedrige Adresse ab Diese Teile k nnen je nach Ihrer Wahl Langw rter W rter oder Bytes sein 68000 Assembler J Teepe 301 B Befehls bersicht rm N
120. 00000202 PC S0000010C SP SO0000FFC SP S00001000 SP gt OFFC 010C OFFC 010C OFFE 0000 OFFE 0000 1090 4 22 SP gt 1000 1002 1002 Dieses Verfahren l t sich erweitern auf den Stack k nn n viel Daten und R ckkehradressen abgespeichert und wieder zur ckgewonnen werden 100 J Teepe 68000 Assembler 6 Stacks Exceptions und Interrupts BA ACHTUNG STACKFEHLER Was kann bei der Programmentwicklung alles falsch laufen wenn man Stacks benutzt Die Zahl der PUSHes und POPs sind ungleich Es wird dann z B ein abgespeichertes Datenregister als R ckkehradresse genommen Der Rechner l uft dann im Wald 2A Zuviele PUSHes gt Stack berlauf Es werden dann Programmteile oder Daten mit Stackdaten berschrieben 3 Zuviele POPs gt Stack Unterlauf Es wird jenseits des erlaubten Stackbereichs gelesen Die letzte R ckkehradresse befindet sich mit Sicherheit nicht dort E Diese Fehler f hren mit gro er Wahrscheinlichkeit zum Programmabsturz Die Erfahrung hat gezeigt das diese Art von Programmfehlern besonders hartn ckig und schwer zu orten sind Die Verfasser dieses Werkes haben bereits mehrere graue Haare durch solche Fehler zu verdanken 68000 Assembler J Teepe 101 6 Stacks Exceptions und Interrupts ra W CHT GE G Der Stack
121. 004 abgelegt usw Insgesamt werden die Register so abgelegt 2000 DO 2010 D4 2020 AO 2030 A4 2004 D1 2014 D5 2024 AI 2034 A5 2008 D2 2018 D6 2028 A7 2038 A6 s200C D3 s201C Di 202C A 203C A7 Achtung Extra Lesezugriff auf der Adresse 2040 Der Befehl MOVEM L 2000 DO D7 AO A7 bringt die urspr nglichen Registerinhalte wieder in die Register zur ck BEISPIEL 3 Sie k nnen Register auf den Stack ablegen mit MOVEM L DO D7 AO A6 SP und hervorrufen mit MOVEM SP DO D7 AO A6 68000 Assembler J Teepe 277 B Befehls bersicht Kopiere mehrere Register Tr MOvEM move multiple registers Ill DATENFORMAT IM SPEICHER wie die Daten im Speicher abgelegt oder werden i ist Wenn MOVEM adressiert O der nur h ngt vom Adressierungsmode ab Postinkrem ein Datent Speicher zu den werden ab der angegebenen Speich n Adresse tenregister Adressregister A0 bis A7 ur h chste ist von Da bis Daten von Zz Registern rlaubt zur ckgelesen entmode An ransfer vom Die Register des Befehls e nth lt das rs telle geladen Die Reihen folge der DO bis Adress Nach und dann Beendigung die D7 register Adress l nge in des 1 Byte CZ 2 yenn MOVEM in n Registers plus die Operand oder 4 der Pr dekrementmode
122. 10 An 011 R An d8 PC Xi 111 011 An 100 R An lt data gt 11 100 d16 An 101 R An Erl uterung siehe d8 An Xi 110 R An Kapitel 5 Benutzen Sie wenn das angew hlte Bit BTST nur getestet werden soll BSET getestet und gesetzt werden soll BCHG getestet und ge ndert werden soll 190 J Teepe 68000 Assembler B Befehls bersicht Pr fe Bit und setze A test a bit and set BSET IL angew hltes Bit des Operanden gt Z Bit l1 gt angew hltes Bit des Operanden Operandgr e BSET B Byte 8 Bit BSET L Langwort 32 Bit Assembler Syntax BSET L lt data gt Dn BSET L Dp Dn BSET B lt data gt lt ea gt BSET B Dp lt ea gt Bit Zeiger Operand Beschreibung Mit BSET k nnen Sie di inzelnen Bits des Operanden direkt abfragen Ergebnis 0 gt Bi 1 gt Bit getestetes Bi getestetes Bi Z wird gesetzt Z wird zur ckgesetzt ara ana Das getestete Bit wird anschlie end gesetzt X N Z V E zagi S Aea N Condition Code Register C bleibt unver ndert V bleibt unver ndert Z wird gesetzt wenn das getestete Bit Null ist Wird sonst zur ckgesetzt N bleibt unver ndert X bleibt unver ndert 68000 Assembler J Teepe 191 B Befehls bersicht Pr fe Bit und setze
123. 12345678 ab hat vier Argumentw rter wei die sich auf die Quelle und zwei die sich auf das Ziel beziehen Adresse 1000 MOVE L lt data gt xxx L Befehlswort 1002 12 34 1 Argumentwort der Quelle 1004 56 78 2 Argumentwort der Quelle 1006 23 45 1 Argumentwort des Ziels 1008 67 89 2 Argumentwort des Ziels 100A ADD L D2 D5 n chstes Befehlswort Im ersten Argumentwort ist die h herwertige H lfte des Quell Arguments vorhanden im zweiten Argument wort die niederwertige H lfte des Quell Arquments im dritten die h herwertige H lfte des Ziel Arguments und im vierten Argumentwort die niederwertige H lfte des Ziel Arguments 68000 Assembler J Teepe 49 3 Datenstrukturen An dem Befehlswort sieht der Prozessor da die vier W rter in diesem Beispiel die dem Befehlswort folgen als Argument zu nehmen sind Das dem letzten Argumentwort folgende Wort wird als n chstes Befehlswort genommen 3 8 5 ZUSAMMENFASSUNG m Befehlswort ist die Information enthalten ob dem Befehl keine ein oder zwei Argumentw rter folgen Der Prozessor nimmt dementsprechend dieses Wort das dem Befehl oder dem letzten Argumentwort folgt als Befehlswort uerst auf die Quelle und dann auf das ziel bezogen 50 J Teepe 68000 Assembler 4 Befehlssatz Kapitel 4 B
124. 2 2 00000001 sol 1 1 00000000 00 0 0 1111111 SFF sch 259 10 SFE 2 254 10000001 sel 127 129 10000000 80 128 128 O111111 SIb 127 127 01111110 7E 126 126 68000 Assembler J Teepe 39 3 Datenstrukturen Bei w rtern und Langw rtern l uft das Verfahren v llig analog Hier ist die Darstellung f r ein Wort Bin r zahl mit Vor zeichen 3 32767 32768 32767 32766 Bin r zahl ohne Vor zeichen von positiv zu indem man zuerst alle Ergebnis 1 addiert Bin rzahl Hex Wert Bit FEDCBA9876543210 0000000000000011 50003 0000000000000010 0002 0000000000000001 0001 0000000000000000 0000 ILL FUTIILETTITIIIIE3 SFFFF 10 SFFFE 1000000000000001 8001 1000000000000000 8000 OL1 IL1121111411T71 SIEFFF LIKE LEKT ET D FFE Eine Zahl wird invertiert oder von negativ zu positiv Bits invertiert und danach um Sie brauchen das nicht selber Befehl 40 auszut fteln nega tiv der NEG macht das schnell und problemlos f r Sie J Teepe 68000 Assembler 3 5 4 UMWANDLUNG VON BIN RZAHLEN MIT VORZEICHENB Wenn wir 3 Datenstrukturen E Bin rzahlen mit m chten z Lang
125. 4 0100 Anwender Interrupt 0 65 0104 Anwender Interrupt 1 66 0108 Anwender Interrupt 2 254 03F8 Anwender Interrupt 190 255 O3FC Anwender Interrupt 191 Bild 6 3 ZUORDNUNG VON INTERRUPTS 130 J Teepe 68000 Assembler A Verzeichnis der Fachbegriffe Anhang A Verzeichnis der Fachbegriffe Hier folgt eine kurze Beschreibung der Fach begriffe die in diesem Buch benutzt werden Synonymen verweisen mit einem gt zum Haupteintrag F r mehr Information ber diese Begriffe siehe ggf beim Stichwortverzeichnis nach ASCII Abk rzung f r American Standard Code for Information Interchange ist in hersteller unabh ngige Tabelle wobei jedem Zeichen Buchstaben ziffern Lesezeichen usw in indeutig Zahl zwischen 00 und 7F zugeordnet wird Dar ber hinaus werden zwischen 80 FF hersteller abh ngige Erweiterungen vorgenommen die z B Zeichen wie RS beinhalten ist im Anhang D enthalten Assembler Fin Hilfsprogramm das geschriebenes Programm in Die ASC Tabelle f r Atari ein in Assemblersprache ein Object File umwandelt Benutzer Modus gt User Betriebssystem Ein Programm kontrolliert bernimmt und die Binder gt Linker 68000 Assembler J Teepe Mode das den Ablauf von anderen Programmen Ansteuerung der Hardware 131 A Verzeichni
126. 5 Im Speicher ist eine Exception Adresstabelle enthalten Diese Tabelle f ngt bei der Speicher adresse Null an und umfa t Exception eine 68000 Assembler J Teepe 256 Positionen f r jede 107 6 Stacks Exceptions und Interrupts Jede Adress Eintragung ein Langwort von 32 Bit belegt in der Tabell Byt Die Position innerhalb der Tabelle berechnet sich daher aus Vektor 4 Innerhalb der Tabelle zeigt die Adresse zum der jeweiligen Exception Behandlungsroutine Anfang BEISPIEL Die Sprungadresse der Exception 5 befindet sich also auf der Speicherstelle 5 4 20 dezimal oder 14 hexadezimal Wenn auf der Adresse 0014 sich die Zahl 1234 und auf 0016 sich die Zahl 5678 befindet bewirkt die Exception 5 einen Sprung zu der Routine die auf der Adresse 512345678 anf ngt Die Exception Tabelle ist auf der n chsten Seite aufgef hrt Jede Exception ist ein Vektor und damit einer Speicheradress zugeordnet An dieser Speicheradress befindet sich die Startadresse der Exception Behandlungsroutine Diese Routine wird gestartet wenn die Exception auftritt 108 J Teepe 68000 Assembler 6 Stacks Exceptions und Interrupts Vektor 33 OO Oo JO 0 VG GO b t CH 24 25 26 27 28 29 30 31 32 47 48 63 64 255 Adresse 00 bis bis bi
127. 68000 Assembler B Befehls bersicht Logisches Schieben nach rechts rm logical shift right LSR EFF Assembler Syntax LSR lt ea gt Die 16 Bits des angew hlten Speicherwortes werden um eine Position nach rechts verschoben Dazu geh rt das folgende Format des Befehlswortes 15 14 13 12 11 10 9 8 7 6 5 4 3 2 d O 0 19 OT re Effektive Adress Mode Register Bit 5 0 w hlt die Effektive Adress des Quell operanden an Die folgenden Adressierungsarten sind erlaubt Adr Art Mode Reg Adr Art Mode Reg Dn nicht erlaubt XXX W ELI 000 An nicht erlaubt xxxX L 111 001 An 010 R An dl6 PC nicht erlaubt An 011 R An d8 PC Xi Inicht erlaubt An 100 R An lt data gt nicht erlaubt d16 An 101 R An Erl uterung siehe d8 An Xi 110 R An Kapitel 5 F r die Adressierungsart Dn siehe auf der vorherigen Seite Benutzen Sie LSL wenn nach links geschoben werden soll ASR Wenn das hochwertige Bit seinen Wert behalten soll Siehe auch ASL ROL ROR ROXL ROXR SWAP 68000 Assembler J Teepe 261 B Befehls bersicht Iesel Kopiere Daten Move move date IL Quelle gt Ziel Operandgr e MOVE B Byte 8 Bit MOVE W dort 16 Bit MOVE Langwort 32 Bit Assembler MOVE x lt ea gt
128. 8 PC An W oder d8 PC An W d8 PC An L oder d8 PC An L Vorgang d8 ist ein 8 Bit Wort Adresse Operand n in 0 7 PC Xi d8 Um die Information des Indexregisters im Computer unterbringen zu k nnen brauchen wir nach dem Befehlswort ein zweites Argumentwort und zwar mit dem folgenden Format 1 5 1 4 73 12 E ED 9 8 7 6 5 4 3 2 1 8 ID A Register W L O 0 0 I N D E X le SV ee Hicks re ee Fifa ale ee re ee en i Bit 15 besagt ob das Index Register in Bit 14 12 ein Datenregister oder ein Adressregister ist 0 Datenregister 1 Adressregister Bit 14 12 ist die Nummer des Daten oder Adress registers Bit 11 Gr e des Index Registers 0 Nur die minderwertigen Bits 0 15 des Index Registers werden benutzt wobei Bit 15 als Vorzeichen genommen wird 1 S mtliche Bits des Index Register werden ber cksichtigt 68000 Assembler J Teepe 89 5 Adressierungsarten von Befehlen Adr Art Mode Re Assembler Syntax d8 PC Xi 111 011 d8 PC Dn W oder d8 PC Dn W d8 PC Dn L oder d8 PC Dn L d8 PC An W oder d8 PC An W Vorgang d8 PC An L oder d8 PC An L Adresse Operand d8 ist ein 8 Bit Wort PC Xi d8 n in 0 7 15 14 Ee Ech IS 30 89 8 7 6 5 4 3 2 1 0 I OA eo T u 0 O S a Vu a ES E LE 9 702 102 041 bk et
129. ASSEMBLER Einf hrung in die ASSEMBLER PROGRAMMIERUNG am ATARI ST e Auf 3 2 Disk halten Heim Verlag Interaktive Pech eeler 68000 Assembler J Teepe 1 Auflage Darmstadt Herr 1989 ISBN 3 923250 77 O AA Ener TWS 2 Auflage 2010 in Eigenregie A U o F r Details siehe Seite 399 Copyright 1989 beim Heim Verlag Organisation Datentechnik Heidelberger Landstr 194 6100 Darmstadt Telefon 06151 56057 Alle Rechte vorbehalten Kein Teil dieses Buches darf ohne schriftliche Genehmigung des Helm Verlages in irgendeiner Form reproduziert oder in eine von Maschinen insbe sondere auch von Datenverarbeitungsmaschinen verwendete Sprache oder Aufzeich nungs bzw Wiedergabeart bertragen oder bersetzt werden Die Wiedergabe von Warenbezeichnungen Handelsnamen oder sonstigen Kennzeichen in dem Buch berechtigt nicht zu der Annahme da diese von jedermann frei benutzt wer den d rfen Es kann sich auch dann um eingetragene Warenzeichen oder sonstige ge setzlich gesch tzte Kennzeichen handeln wenn sie nicht als solche besonders gekennzeichnet sind Druck Druckerei der Herrn OHG 6100 Darmstadt i E D ve RA unt Si Assemb e VOS vamm evang S Atan Atav KK Ar ATTEN d D ben Va A Vu EE eg Inhaltsverzeichnis INHALTSVERZE CHN S Kapitel 1 BINF HTrUNG merre andren n
130. Adressierungsarten von Befehlen Assembler Syntax Adr Art Mode Re An n in 0 7 An 100 R An Vorgang An An K K 1 2 oder 4 Adresse Operand An 9 0 ADRESSREGISTER INDIREKTE ADRESSIERUNG MIT PRA DEKREMENT An 31 0 Adressregister An SPEICHER ADRESSE vy A Operand L ng gt 2 gt 5 1 2 oder 4 31 0 Adressregister An SPEICHER ADRESSE y Speicherstell OPERAND Mit den drei Bits des Registerfeldes werden die Adressregister A0 A7 angew hlt Zuerst wird das Adressregister um die Gr e des Operanden vermindert Mit dem Befehl MOVE B AI DO wird AI also um eins mit dem Befehl MOVE W AI DO um zwei mit dem Befehl MOVE L Al DO um vier vermindert Nach dieser Verminderung bildet das angew hlte Adressregister di ffektive Adresse des Operanden 68000 Assembler J Teepe 67 5 Adressierungsarten von Befehlen Adr Art Mode Re Assembler Syntax An 100 R An An n in 0 7 Vorgang An An K K 1 2 oder 4 Adresse Operand An Der Operand befindet sich also an der Speicherstelle wohin das Adressregister igt In dieser Hinsicht ist diese Adressierungsart identisch mit der Adres sierungsart Adressregister indirekte Adressierung An wie hier oben besprochen
131. DEBUGG auszutesten brauchen R Siehe Kap T START 1 3 Mit dem Debugger las sen Sie Teile des Programms ablaufen und berpr fen ob die Teile wirklich so arbei ASSEMBLE Verb ten wie Si s erwarten sserungen die Sie im Programm durchf hren sind mit dem Editor anzubringen DEBUG so da danach wieder Assembler Linker und Debugger aufgerufen werden m ssen Es empfiehlt sich daher nicht mehr Programm sa als 1 bis 2 Listingseiten auf einmal zu schreiben und Ene diesen Teil komplett aus testen Typischer logischer Ablauf eines Pro grammiervorgangs bevor Sie weitere Programmteil rstellen 1 4 2 DIE MITGELIEFERTE PROGRAMM DISKETTE Um unseren Leser ein einfaches hereinschnuppern zu erleichtern haben wir diesem Buch eine Diskette ungspaket beinhaltet beigelegt die ein Mini Entwick In diesem Paket befinden sich die Funktionen eines Editors eines Assemblers ines Linkers und eines Debuggers Alle diese Funkt gleichzeitig im Hauptspeicher ionen befinden sich Ihres Ataris zusammen mit dem zu erstellenden Programmtext und dem Code des zu entwickelnden Programns Diese Funktionen sind alle ei nfach gehalten so da Sie sich mit den M glichkeiten des Assembler programmierens vertraut machen und schnell Progr
132. Das A Bit w hlt die Adressierungsart an 0 Adressierungsart Dn Die Operation erfolgt von Datenregister zu Datenregister l Adressierungsart An Die Operation erfolgt von Speicherplat u Speicherplatz Die Operan den werden durch das Adressregister in Pr dekrement mode adressiert Siehe Kap 5 Bit 2 0 Registerfeld w hlt eines der acht Daten oder Adressregister als Quelloperand an Siehe auch ADDO ADDI ABCD ADD ADDA SUBX 68000 Assembler J Teepe 153 B Befehls bersicht r Logisches UND AND and logical IL Quelle Ziel gt Ziel Operandgr e AND B Byte 8 Bit AND W dort 16 Bit AND L Langwort 32 Bit Assembler Syntax Operation AND x lt ea gt Dn lt ea gt Dn gt Dn AND x Dn lt ea gt Dn lt ea gt gt lt ea gt x entspricht B W L Beschreibung Der Quelloperand wird mit dem Zieloperand bitweise UND verkn pft und das Ergebnis wird im Zieloperand abgespeichert aa Zur Erinnerung die UND Verkn pfungen 3 23 2 k r OO CH Das Ergebnisbit wird gesetzt wenn das eine und das andere Eingangsbit gesetzt sind Einer der beiden Operanden mu ein Datenregister sein Die Gr des Operanden sowie die Angabe welcher Operand das Datenregister ist sind im Mode Feld enthalten 154 J Teepe 68000 Assembler B Befehls bersicht L
133. Daten oder Adressregister als Zieloperand an Operationsmode Anwahl von 01000 Datenregister 01001 Adressregister 10001 Datenregister Bit 7 3 w hlt den Operationsmode an 01000 vertausche Datenregister 01001 vertausche Adressregister 10001 vertausche ein Datenregister und ein Adressregister Bit 2 0 Registerfeld w hlt eines der Daten oder Adressregister als Zieloperand an Operationsmode Anwahl von 01000 Datenregister 01001 Adressregister 10001 Adressregister Benutzen Sie MOVE oder MOVEA wenn der Datentransfer nur in einer Richtung stattfinden soll 240 J Teepe 68000 Assembler B Befehls bersicht Erweitere Vorzeichen 71 extend sign EXT IL Ziel mit erweitertem Vorzeichen gt Ziel Operandgr e EXT W Wort 16 Bit EXT L Langwort 32 Bit Assembler EXT x Dn Syntax x entspricht W L Beschreibung Das Vorzeichen wird erweitert der Daten im angew h lten Datenregister Bei dem Befehl EXT W wird das Vorzeichen von einem Byte zu einem Wort erweitert Dazu wird das Vorzeichen des Bytes das sich in Bit 7 befindet in den Bits 8 15 hineinkopiert Bei dem Befehl EXT L wird das Vorzeichen von einem Jort zu einem Langwort erweitert Dazu wird das Vorzeichen des Wortes das sich in Bit 15 befindet in
134. Der Assembler ist spezif Kenntnisse sind a meiste die Sie E sich isch f r den Prozessor Die mit diesem lso In ormation 68010 la H here Sprachen wie Algol Pascal und PL1 Modula Befehl 68012 68020 H H ERE SPRACHEN nur f r den Prozessor 68000 zutreffend trifft anderen Mitglieder der 68000 Familie 68030 brigens APL in einer Befehl Die Anwendungsgebiet l st man z B Bereich Sprache wird auch SD Basic sind n her zum Menschen weiter von der Maschine entfernt als Assembler h heren Buch aneignen Die auf die der 68008 Cr C6b l und Ein vielen in Diese en auf Maschin Umsetzung wird gemach als COMP I ER h heren A besser te et d technisch weil in Fortran gel Sprac ncod Zusammensetzer hen Eben rgli derd t durch ein Hilfsprogramnm das ufgaben haben alle i bezeichnet wird hr eigenes im besser mit Cobol wissenschaftlichen st die Aufgaben heut buchhal Bereich dagege terischen Aufgaben im n werden s veral De Algol gilt wohl Sprachen gel st werden k nnen Ein gilt a besser durch modernere in einer h heren Sprache geschriebenes Programm Aufgab haben Ich
135. Dn gt Quelle dann wird Exception 6 ausgel st Operandgr e Wort 16 Bit Assembler Syntax CHK lt ea gt Dn Quelle Ziel Beschreibung Das niederwertige Wort des angew hlten Datenregisters Bit 15 0 wird gepr ft und mit dem Quelloperand verglichen Wenn der Registerwert negativ ist also Bit 15 gesetzt oder den Grenzwert berschreitet dann wird die Exception 6 ausgel st siehe Kap 6 enn der Registerwert aber zwischen Null und dem Grenzwert liegt findet keine Aktion statt Der n chste Befehl im Speicher wird dann ausgef hrt Beide Argumente werden als Bin rzahl mit Vorzeichen aufgefa t 11 1 U a g i Condition Code Register Lo l E nicht definiert nicht definiert nicht definier wird gesetzt wenn Dn lt Null wird zur ckgesetzt wenn Dn gt Quelle Ist sonst nicht definiert X ndert sich nicht Hoch ca CG P si CH 68000 Assembler J Teepe 203 B Befehls bersicht rm Vergleiche Register mit Grenzen CHK check register against bounds IL Vergleiche Register mit Grenzen r check register against bounds CHK IL be A El Condition Code Register Format des Befehlswortes 15 14 13 12 11 10 9 BIZ pi SES E De O Ok 0 Register 1 1 1 Aago Effektive Adress Dp ode Register Bit ZE Registerfeld w hlt eines der pr fenden Datenregister an Bit 5 0
136. E BPL BVC BVS und BRA ir fassen alle diese Befehle hier zusammen Dies Befehl sind bedingte Spr nge Das bedeutet da der Programmz hler si ch ndert erf llt wird Wenn die Sprung nicht der im Speich wenn eine bestimmte Bedingung nic statt er direkt auf den Der n ist der e Der Befehl BRA der Liste BRA hier mit dazu der Sprung fi genommen ce ht erf llt isty u einem bestimmten Wert Bedingung im CCR Register findet der chste Befehl Bcc Befehl ist dann der folgt inzige weil Format wie die bedingten Spr nge hat 174 unbedingt ndet immer stat r te Sprung in t Wir haben das gleiche J Teepe 68000 Assembler B Befehls bersicht Springe bedingt Fc branch conditionally Bce E Ist die Adressdifferen wischen PC und Marke gr er als 128 Byte f r Bcc S oder 32 kByte f r Bcc W gibt der Assembler eine Fehlermeldung aus Es handelt sich hier bei allen Befehlen um kurze Spr nge relativ um Programmz hler Die Ansprung adresse mu innerhalb ines Bereiches von 64 kByte des Programmz hlers liegen PROGRAMMIERHINWEIS Wenn die erw nschte Ansprungadresse au erhalb dieses Bereiches von 64 kBytes liegt legen Sie innerhalb des Bereiches ei
137. EE TITTEN Effektive Adress Mode Register Bit 5 0 W hlt di Effektive Adress des Quelloperanden an Die folgenden Adressierungsarten sind erlaubt Adr Art Mode Reg Adr ATE Mode Re Dn nicht erlaubt XXX W 111 000 An nicht erlaubt xxxX L ET 001 An 010 R An dl16 PC nicht erlaubt An 011 R An d8 PC Xi IJnicht erlaubt An 100 R An lt data gt nicht erlaubt d16 An 101 R An Erl uterung siehe d8 An Xi 110 R An Kapitel 5 F r die Adressierungsart Dn siehe auf der vorherigen Seite Benutzen Sie ROXL wenn nach links rotiert werden soll ROR Wenn die Rotation nicht durch das X Bit laufen soll Siehe auch ASL ASR LSL LSR ROL SWAP 68000 Assembler J Teepe 337 B Befehls bersicht R ckkehr von Exception RTE return from exception privilegierter Befehl Wenn Supervisor Mode SP gt SR SP 2 gt SP SP gt PC SP 4 gt SP Wenn User Mode Ausl sung Exception 8 Kap 6 Verletzung Privilegium Operandgr e keine Assembler Syntax RTR Beschreibung Das Status Register und der Programmz hler wird vom Stack gepopped Das alte Status Register und der alte Programmz hler gehen verloren Mit diesem Befehl wird eine Exception beendet Nach dem Befehl kann der Prozessor sich im User Mode befinden abh ngig davon welcher Wert in Bit 13 des Status Registers gepopped wurde HIN
138. GISTER In den Datenregistern D0 D7 k nnen wir Daten von 8 16 oder 32 Bits Datenl nge abspeichern Wenn Daten von 8 oder 16 Bits Datenl nge im Register abgespeichert werden ndern sich nur die 8 bzw 16 niederwertigen Bits die nicht betroffenen hochwertigen Bits behalten ihren bisherigen Wert Es gibt 8 Datenregister von 32 Bits Sie werden von dem Befehlssatz her v llig gleichwertig behandelt ZEN DIE ADDRESSREGISTER In den Adressregistern A0O A7 k nnen Sie Adressen oder auch Daten von 32 Bits abspeichern Wenn das Register gelesen wird werden hiervon je nach Operator 16 oder 32 Bits ausgewertet Bei jedem Schreibvorgang werden aber alle 32 Bits des Adress registers beschrieben Von den Adressen des Prozessors 68000 sind die hochwertigen 8 Bits hardwarem ig nicht implementiert siehe Kap 3 1 Das bedeutet da der Inhalt von Bit 0 7 der Datenregister f r die Adressierung der Daten unwichtig ist E Wir empfehlen aber aus Gr nden von Transparenz und Kompatibilit t diesen 8 Bits den Wert 0 mitzugeben wenn Sie ber di Adressregister Daten adressieren m chten 24 J Teepe 68000 Assembler 2 Architektur Es gibt sieben Adressregister von 32 Bits A0 bis A6 Es gibt dar ber hinaus zwei verschi e dene Adressregister A7 die
139. Konstante Ziel gt Ziel Operandgr e ADDQ B Byte 8 Bit ADDQ W Jort 16 Bit ADDOQ L Langwort 32 Bit Assembler ADDO x lt data gt lt ea gt Quelle Ziel Syntax x entspricht B W L Beschreibung Dieser Befehl addiert die Konstante zum Zieloperand lt ea gt Das Ergebnis wird im Zieloperand lt ea gt abge speichert Die Konstante mu zwischen 1 und 8 liegen Lehr Condition Code Register c wird gesetzt wenn ein bertrag generiert wird rd sonst zur ckgesetzt v wird gesetzt wenn ein berlauf generiert wird rd sonst zur ckgesetzt z wird gesetzt wenn das Ergebnis gleich Null ist rd sonst zur ckgesetzt N wird gesetzt wenn das Ergebnis negativ ist rd sonst zur ckgesetzt X Erh lt den gleichen Wert wie das C Bit HINWEIS Wenn der Zieloperand ein Adressregister ist Adressierungsart An wird das Condition Code Register nicht ge ndert 68000 Assembler J Teepe 149 B Befehls bersicht r Addiere Konstante quick 1 8 ADDQ add quick Format des Befehlswortes 15 14 732 ek Ek 76009 8 7 6 5 4 3 2 1 O 0I1 JI0 1I1 Daten O Gr e Effektive Adress Mode Register Bit 11 9 Datenfeld 000 entspricht Konstante 1 001 entspricht Konstante 2 usw bis 111 Konstante 8 entspricht
140. LERSUCH T T Oo Entfernen Sie alle Platinen die f r den Test betrieb nicht unbedingt notwendig sind Ist der Fehler dann verschwunden o Benutzen sie vielleicht eine langsame Platine in einem schnellen Rechner Oo Fehler in einer Leiterbahn auf der Platine in dem Platinenstecker oder im IC Sockel CO Wenn der Fehler erst nach einiger Zeit auf tritt kann es auch mit einer zu hohen Temperatur im Geh use zusammenh ngen Geh use ffnen Rechner einschalten L t sich der Fehler nicht auf die oben genannten Weisen inkreisen dann brauchen Sie einen Oszillografen um die Fehlerquelle gezielt zu suchen 68000 Assembler J Teepe 119 6 Stacks Exceptions und Interrupts ausgel st 120 entsprechenden A Besprechung von Vektor Adresse Zuordnung 25 0064 Ebene 1 Autovektor 26 0068 Ebene 2 Autovektor 27 006C Ebene 3 Autovektor 28 0070 Ebene 4 Autovektor 29 0074 Ebene 5 Autovektor 30 0078 Ebene 6 Autovektor 31 007C Ebene 7 Autovektor Dies Vektoren werden angesprungen wenn der utovector Interrupt von der Hardware wird Weitere Details werden bei der Interrupts Kap 6 3 erw hnt J Teepe 68000 Assembler 6 Stacks Exceptions und Interrupts Vektor Adresse Zuordnung
141. Maximalzahl ist acht Der Befeh ROXR x Dn Dn x entspricht B W L rotiert ein Datenregister nach rechts Ein zweites Datenregister legt fest um wieviele Positionen rotiert wird O Der Befehl ROXR lt ea gt rotiert eine Speicherstell 16 Bit um eine Position nach rechts 334 J Teepe 68000 Assembler B Befehls bersicht Rotiere rechts mit Extend Bit r rotate right with extend ROXR L Keil E ER RO SE Condition Code Register C erh lt den Wert der zuletzt aus dem hochwertigen Bit des Operanden herausgeschoben wurde Jird zur ckgesetzt beim Rotieren um Null Positione V wird zur ckgesetzt Z wird gesetzt wenn das Ergebnis gleich Null ist rd sonst zur ckgesetzt e 8 S N wird gesetzt wenn das hochwertige Bit des Ergebnisses gesetzt ist rd sonst zur ckgesetzt X erh lt den Wert der zuletzt aus dem hochwertigen Bit des Operanden herausgeschoben wurde Bleibt unver ndert bei Schieben um Null Positionen 68000 Assembler J Teepe 335 B Befehls bersicht r Rotiere rechts mit Extend Bit ROXR rotate right with extend Ill Assembler Syntax ROXR x Dn Dn ROXR x lt data gt Dn x entspricht B W L Dazu geh rt das folgende Format des Befehlswortes 15 14 13 1712 11 10 9 8 7 6 5 4 3 2 1 0 TE OEN E S
142. NDI zum SR wenn Sie das SR UND verkn pfen m chten MOVE zum SR wenn Sie das SR ohne R cksicht auf die bestehenden Bits ndern m chten Siehe auch ANDI zum SR ORI zum CCR EOR um CCR 68000 Assembler J Teepe 315 B Befehls bersicht eg Lege effektive Adresse im Stack ab PEA push effective address IL SP 4 gt SP lt ea gt gt SP Operandgr e Langwort 32 Bit Assembler Syntax PEA lt ea gt Beschreibung Di ffektiv Adresse wird ermittelt und auf den Stack gepopped Die Datengr e ist ein Langwort Condition Code Register bleibt unver ndert Format des Befehlswortes KA G TO TE 0 2 8 7 6 5 4 3 2 1 O 1 9 1710 EEN EC Effektive Adress Poe EECH E eege gt Register E oO S S F Bit 5 0 spezifiziert die Quelladresse der tion die in den Stack kopiert werden soll Adr Art Mode Reg Adr Art Mode Re Dn nicht erlaubt xxx W del 000 An nicht erlaubt xxx L 111 001 An 010 R An d16 PC 111 010 An nicht erlaubt d8 PC Xi 111 011 An nicht erlaubt lt data gt nicht erlaubt d16 An 101 R An Erl uterung siehe d8 An Xi 110 R An Kapitel 5 316 J Teepe 68000 Assembler B Befehls bersicht R cksetzen Eingabe Ausgabe Fc reset external devices RESET priv
143. Null war Wird sonst zur ckgesetzt N wird gesetzt wenn der Operand negativ war Bit 7 gesetzt Wird sonst zur ckgesetzt X ndert sich nicht cr EI 366 J Teepe 68000 Assembler Pr fe und setze Operand test and set an Operand Format des Befehlswortes 13 2271 B Befehls bersicht Mr Tas 0o01I11I0I0I11I01I110 a Effektive Adress Mode Register Bit 5 0 w hlt di ffektive Adresse des Operanden an Die folgenden Adressierungsarten sind erlaubt Adr Art Mode Req Adr Art Mode Re Dn 000 R Dn xxx W 111 000 An nicht erlaubt XXX L 111 001 An 010 R An dl6 PC nicht erlaubt An 011 R An d8 PC Xi Jnicht erlaubt An 100 R An lt data gt nicht erlaubt d16 An 101 R An Erl uterung siehe d8 An Xi 110 R An Kapitel 5 Benutzen Sie Bit nicht nur des Operanden pr fen und setzen Bit pr fen und zur ck 68000 Assembler J Teepe BSET enn Sie ein anderes Bit 7 m chten BCLR denn Sie ein setzen m chten 367 B Befehls bersicht TRAP trap IL Es wird eine der Exceptions 32 47 ausgel st Operandgr e keine Assembler Syntax TRAP lt Vektor gt Beschreibung Es wird eine der Exceptions 32 47 ausgel st Welche Exception ausgel st wird richtet sich nach der Vektornummer des TRAP Befehl
144. OMs die EPROMSs Erasable Programmable ROMs kann man mit UV Licht l schen und in einem EPROM Programmierger t erneut beschreiben Hexadezimal Ein Zahlensystem in dem jede Ziffer eine von 16 Vverten annehmen kann 0 9 A F den Werten 0 15 entsprechend Hexadezimale Zahlen lassen sich leicht in Bin rzahlen um und zur ckwandeln IC Abk rzung f r Integrated Circuit Integrierte Schaltung Fast alle Elektronik Ihres Computers ist in ICs untergebracht Instruction Pointer gt Programmz hler Interrupt eine Exception verursacht durch die Hardware k Eine Abk rzung f r kilo Im Computerjargon bezieht sich k auf die Zahl 1024 210 Kommentar Im Programmtext enthalten Zeilen oder Zeilenteile di dem menschlichen Leser die Funktion der Programmteile erl utern sollen 68000 Assembler J Teepe 133 A Verzeichnis der Fachbegriffe Langwort Eine Bin rzahl von 32 Bits 4 Bytes LIFO Abk rzung f r Last In First Out Ein Speicherverfah ren in dem di zuletzt abgespeicherte Zahl uerst wieder gelesen wird Der Stack ist ein typischer LIFO Speicher Linker Ein Programm das mehrere Object Files u einem einzelnen ablauff higen File zusammenf gt In jedem der Object Files k nnen noch externe Marken vorhanden sein die sich auf Marken in einem anderen Object File
145. Operanden sind die niederwertigsten Bytes der Daten register An Von Speicherplat u Speicherplatz Diese Art ist gedacht um mehrere Bin rzahlen im Speicher zu addieren Di Operanden werden durch das Adressregister in Pr dekrement Mode adressiert Da der 68000 Daten mit dem niederwertigsten Byte auf der h chsten Speicherstelle ablegt k nnen Sie auf der h chsten Adresse anfangen um mehrere Bytes automatisch abzuarbeiten F r eine weitere Beschreibung siehe bei NEGX 68000 Assembler J Teepe 151 B Befehls bersicht rm Addiere mit Extend Bit ADDX add extended I e ee dee Hee Condition Code Register C wird gesetzt wenn ein bertrag generiert wird rd sonst zur ckgesetzt V wird gesetzt wenn ein berlauf generiert wird rd sonst zur ckgesetzt Z wird gel scht wenn das Ergebnis ungleich Null ist Bleibt sonst unver ndert N wird gesetzt wenn das Ergebnis negativ ist rd sonst zur ckgesetzt X Erh lt den gleichen Wert wie das C Bit 152 J Teepe 68000 Assembler B Befehls bersicht Addiere mit Extend Bit A add extended ADDX Format des Befehlswortes 15 14 13 12 11 10 9 8 7 6 5 4 17110 1 Ziel 1 I0 I0 0 I0 A Quell Register Register Bit 11 9 Registerfeld w hlt eines der acht Daten oder Adressregister als Zieloperand an Bit 3
146. Out die haben Der Sta Papierk rb Dokument haben ntneh ist ein L Daten d ENSCHAFT FO Speic EN J ES STAC her Las KS t In First ie Sie ule verlassen den Stack z ck chen verh l auf uers sich damit Ihrem gen Schrei das Sie uletzt in Ihr K CT CT abgespeichert auso wie das btisch das Si Nur Ihrem K nicht Sie m s Reihenfolg men rbchen w sen also zuerst len s tin hl nm Ihre Daten in tnehm liefert Der sS und sc n haben n als da Sie s tack w chst bei abnehmendem Stack hrumpft bei 6 1 4 DAT ENLANGE n AUF DI Sie k nne Bei einer Stack Po 4 O Dei ei Stack Sr Bei einer aber der Si Kap kreme verhindert tigt wie in Post I absich 102 n pro im Stack ablege Register fe i Datenl nge von 4 EM STACK unterschiedlich Bytes Point Daten cer erwari Datenl tack Point 5 erw h n da Ur cua u in nter wie wir oben gese L nge vo nge vo t und Pr der St n 2 Bytes tungsgem um 2 n einem Byte ter nicht um 1 nt bei den Adres Dekremen H tack Pointe der rbchen gelegt wenn Sie in Vergleich umgekehrter ie ange Pointer une
147. R Wenn Sie auf ein anderes Daten register Zugrigff nehmen m chten lt lt E E vom SR wenn Sie auch das System Byte einlesen m chten zum SR Wenn Sie das CCR und oder das System Byte ndern m chten Privilegierter Befehl Z O lt E MOVI zum CCR Wenn Sie nur das System Byte ndern m chten Ia Siehe auch MOVE MOVEA MOVE USP T T 272 J Teepe 68000 Assembler B Befehls bersicht Kopiere Daten in ein Adress Register r move address MOVEA IL Quelle gt Ziel Operandgr e MOVI m Di m Di A W Wort 16 Bit L MOVEA Langwort 32 Bit Assembler MOVEA x lt ea gt An Quelle Ziel Syntax x entspricht W Li Beschreibung Der Quelloperand wird in das Zieloperand Adressregister kopiert Die Operandgr e kann Wort oder Langwort sein Wenn der Operand ein Wort ist wird das Vorzeichen auf 32 Bit erweitert bevor die Operation statt findet Condition Code Register keine nderungen 68000 Assembler J Teepe 273 B Befehls bersicht r Kopiere Daten in ein Adress Register MOVEA move address IL Format des Befehlswortes 15 14 13 12 11 10 9 8 7 6 5 4 3 ZIL 0 O0 O Gr e Register O0 0 1 Effektive Adress An Mode Register Bit 13 12 Gr e Feld 11 Wort Befehl MOVEA W Das Vorzeichen
148. SL Wenn das V Bit gesetzt werden soll sobald das hochwertige Bit des Operanden sich w hrend des Verschiebens mindestens einmal ndert Siehe auch ASR ROL ROR ROXL ROXR SWAP 256 J Teepe 68000 Assembler B Befehls bersicht Logisches Schieben nach rechts rm logical shift right LSR IL Ziel verschoben durch lt Zahl gt gt Ziel Operandgr e SR B Byte 8 Bit LSR W Vort 16 Bit LSR Langwort 32 Bit LSR dort 16 Bit Assembler LSR x Dn Dn Quelle Ziel Syntax LSR x f lt data gt Dn x entspricht B W L LSR lt ea gt Beschreibung Die Bits des Operanden werden nach rechts verschoben Bei jedem Schiebeschritt passiert folgendes o Bit 0 gibt seinen Wert an das C Bit und das xX Bit ab o Danach gibt Bit 1 seinen Wert an Bit 0 und Bit 2 seinen Wert an Bit 1 usw bis das hochwertige Bit seinen Wert an seinen rechten Nachbarn abgibt o Zum Schlu erh lt das hochwertige Bit den Wert Null F r die Gesamtzahl der Schiebeschritte siehe weiter unten 9 Fee gt Ope T Arwa Aen gt C a d u y gt X 68000 Assembler J Teepe 257 B Befehls bersicht Logisches Schieben nach rechts LSR logical shift right IL Ein LSR um n Positionen bedeutet da der Operand als Bin rzahl ohne Vorzeichen aufgefa t durch 2n d
149. SR oder JSR aufgerufen haben Condition Code Register bleibt unver ndert Format des Befehlswortes 340 J Teepe 68000 Assembler B Befehls bersicht Subtrahiere BCD Zahl mit Extend Bit r subtract decimal with extend SBCD L Quelle1o zieljg X gt Ziel Operandgr e SBCD B Byte 8 Bit ein Byte enth lt zwei BCD Zahlen Assembler SBCD B Dn Dn Syntax SBCD B An An Quelle Ziel Beschreibung Der Quelloperand und das X Bit werden vom Zieloperand subtrahiert das Ergebnis wird im zieloperand abgespeichert Die Subtrahierung findet als BCD Arithmetik statt Die Operanden k nnen in zwei Arten adressiert werden Dn Datenregister zu Datenregister Die Operanden sind die niederwertigsten Bytes des Daten registers An Von Speicherplat u Speicherplatz Diese Art ist gedacht um mehrere BCD Zahlen im Speicher zu subtrahieren Die Operanden werden durch das Adressregister in Pr dekrement Mode adressiert Da der 68000 BCD Zahlen mit dem niederwertigsten Byte auf der h chsten Speicherstell ablegt k nnen Sie auf der h chsten Adresse anfangen um mehrere Bytes automatisch abzuarbeiten F r eine weitere Beschreibung siehe bei NBECD F r eine Darstellung von BCD Ziffern siehe Kap 3 6 68000 Assembler J T
150. Speicher geschrieben Von dor t l t es sich sofort aufrufen und testen 68000 Assembler J Teepe 375 C Mitgelieferte Programmdiskette 1 2 Der Assembler wurde f r die mittlere und hohe Aufl sung geschrieben k nnten insbesonder Beim Gebrauch der niedrigen beim Editieren unerw nschte Ti Effekte auftreten 1 3 Das im Speicher bef 30000 Zeilen bestehen Speicher f r das assemblierte Programn dies zu tun Speicher angezeigt den Speicher nach Bereiche aufzuteilen n Listing wird gleich nach dem Laden der frei Sie h Ihren indliche Listing darf aus max Hinzu kommt da Sie genug die Labels und das reserviert haben m ssen Um aben nun die M glichkeit W nschen auf die drei n der Regel brauchen Sie sich kein Gedanken zu mac nen und k nnen durch Druck auf Return die St tandartwer instel n jedoch ausrei Bedenken Sie Speicher nich erfolg E toa Kleinbuc Der Assembl hstaben er nur Anf hrungszeichen auftauche wenn Sie mit und da es zu Da untersc reserviert A kein Meldu kommen kann 1 da falls der chen sollt tenverlust gt wischen Gro dann wenn diese i n Dies ist einerseits de heidet u Dn DO Fall Sie mit 2 Direk Nach dem La LIST DC Strings definieren oder we
151. Stacks 102 6 1 4 Datenl nge auf dem Brack 102 6 1 9 Befehls bersicht der Stack Handhabung 103 6 2 ERCEBELONS i ge aaea da een ee nee 104 64 2 as passiert bei einer Exception 106 6 2 2 Die EXCEBELORLabE Le u en ir 107 64 253 Die verschiedenen Exceptions 110 6 2 4 Exception Behandlungsroutinen 122 6 2 5 Umbiegen von Exceptions e r000 123 64 3 ENEE er deren ale ge 125 6 2 3 1 las Str amp in I HESLLUBE 7 sree eni EE e 125 64 32 ann findet eine Exception statt 126 GER ER as passiert bei einem Interrupt 128 6 3 4 Vo befindet sich die Interruptroutine 129 Anhang A Verzeichnis der Fachbegriffe 131 B Befehlsu bersiceht 4 Astra res R 139 C Bedienungsanleitung der mitgelieferten Progr amnmd sketter zen anal e i e 3 13 D ASCHL Tabelle ze Dei Diss 387 E Befehlskode in numerischer Reihenfolge 389 F SEICHWOrLVerzeichnTs rer ran 393 ber die 2 Auflage dieses Buches 22 399 SBN der 1 Auflage 3 923250 77 0 6 J Teepe 68000 Assembler 1 Einf hrung Kapitel 1 Einf hrung Dieses Buch vermittelt dem Atari Besitzer eine mierung Es wird vorausgesetzt ine h here Computersprache sowi Einf hrung in die M glichkeiten der Assemblerprogram da r wenigstens di Bedienung des Betriebssystems beherrscht und hexadezimalen Zahlen rechnen kan der Fachbegriffe ist in Anha
152. Syntax lt data gt 111 011 xxxx xxxx ist ein 8 16 oder 32 Bit Wort Vorgang Operand xxxx Noch zwei Bemerkungen I Passen Sie hier auf da Sie nicht versehentlich das Zeichen vergessen denn der Befehl T MOVE L 12345678 D1 kopiert den Inhalt der Speicherstelle 12345678 in das Register Dl und das ist ganz etwas anderes 2 Ein Konstante ist nur als Quelle nicht als Ziel einsetzbar Logisch denn ein Befehl wie MOVE L D1 12345678 macht keinen Sinn 92 J Teepe 68000 Assembler 5 Adressierungsarten von Befehlen Assembler Syntax Adr Art Mode Re xxxx lt data gt 111 011 xxxx ist ein 8 16 oder 32 Bit Wort Vorgang Operand xxxx Die L nge Information des Operanden Byte Wort oder Langwort ist im Befehlswort vermerkt Die Argumentw rter sind hier angegeben 15 L 132 12 11e 10 09 Sl 6 D 4 3 2 1 O 1010101010101010 Byte Wort hochwertiges Wort _ niederwertiges Wort 68000 Assembler J Teepe 93 5 Adressierungsarten von Befehlen 94 J Teepe 68000 Assembler 6 Stacks Exceptions und Interrupts Kapitel 6 Stacks Exceptions und Interrupts 6 1 DER STACK Ber EINF HRUNG Hier ist wieder ein neuer Begriff f r den Assembler Programmierer Ein Stack wird auf Deutsch manchmal auch als Stapel bezeichnet F
153. W 111 000 An nicht erlaubt xxx L 111 001 An 010 R An d16 PC 111 010 An 011 R An d8 PC Xi 11 011 An 100 R An lt data gt 111 100 d16 An 101 R An Erl uterung siehe d8 An Xi 110 R An Kapitel 5 Benutzen Sie HOVE vom SR wenn Sie auch das System Byte einlesen m chten MOVE zum SR Wenn Sie das CCR und oder das System Byte ndern m chten ANDI zum CCR wenn Sie nur bestimmte Bits ORI zum CCR des CCR ndern m chten EOR um CCR Siehe auch MOVE MOVEA MOVE USP 266 J Teepe 68000 Assembler B Befehls bersicht Kopiere zum Status Register r move to the Status Register Move privilegierter Befehl zum SR Wenn Supervisor Mode Quelle gt SR Wenn User Mode Ausl sung Exception 8 Kap 6 Verletzung Privilegium Operandgr e Wort 16 Bit Assembler MOVE lt ea gt SR Quelle Ziel Syntax Beschreibung Venn sich der Prozessor im Supervisor Mode befindet wird der Quelloperand in das Status Register kopiert Die Operandgr e ist ein Wort emm der Prozessor sich dagegen in User Mode befindet findet ein Trap statt Das Status Register wird im Kap 2 beschrieben ee ee IE Zu ee Condition Code Register Mi af Sin E c erh lt den Wert von Bit 0 des Quell Operanden v erh lt den Wert von Bit 1 des Quell Operanden z erh lt den Wert von Bit 2 des Quell Operanden N erh lt den Wert von Bit 3 des Quell Operanden X erh lt den W
154. WEIS Auf den Prozessoren 68010 und 68020 verh lt sich RTE anders IK Eh a e Mike a Condition Code Register bernimmt den Wert vom Stack 338 J Teepe 68000 Assembler B Befehls bersicht R ckkehr Unterprogramm R ckladen CCR return and restore condition codes RTR IL SP gt CCR SP 2 gt SP SP gt PC SP 4 gt SP Operandgr e Assembler Syntax Beschreibung Das Condition Co wird vom Stack Register und der keine RTR de Register und der Programmz hler gepopped Das alte Condition Code alte Programmz hler gehen verloren Das System Byte b PROGRAMMIERHINWE leibt aber unver ndert S Mit diesem Befehl beenden Si in Unterprogramm das Sie z B so aufge MOVE W SR rufen haben SP nur f r 68000 siehe Bemer kung bei MOVE SR JSR SUBROUT NE bzw BSR nach Ihrem Wunsch il Condition Code Register bernimmt den Wert vom Stack 68000 Assembler J Teepe 339 B Befehls bersicht rm R ckkehr vom Unterprogramm RTS return from subroutine IL SP gt PC SP 4 gt SP Operandgr e keine Assembler Syntax RTS Beschreibung Der Programmz hler wird vom Stack gepopped Der alte Programmz hler geht verloren PROGRAMM X GR NWEIS Mit diesem Befehl beenden Si in Unterprogramm das Sie mit B
155. Wenn der Quotient gr er ist als ein 16 Bit Wort mit Vorzeichen tritt ein berlauf auf In dem Fall ndern sich nur di Wert des Condition Code Registers die Operanden bleiben unver ndert Vor der Operation 15 Q Quelloperand Divisor 31 16 15 O Zieloperand Divident Nach der Operation Ziel Quelle gt Ziel 15 0 unver ndert Quelloperand Divisor 31 16 15 0 Zieloperand Rest Quotient 68000 Assembler J Teepe 223 B Befehls bersicht Dividiere mit Vorzeichen D vs signed divide Ill Bei der Operation k nnen zwei Sonderf lle auftreten Trs Division durch Null Es wird eine Exception 5 ausgel st 2 Fine gro e Zahl wird durch ein klein Zah dividiert und das Ergebnis pa t nicht in 16 Bit Das Ergebnis ist eine berlauf In dem Fall ndern sich nur die Werte des Condition Code Registers die Operanden bleiben unver ndert en Ge a E EECH Condition Code Register C wird zur ckgesetzt V wird gesetzt wenn ein berlau Wird sonst zur ckgesetzt Z wird gesetzt wenn der Quotient gleich Null ist c Z ist nicht definiert bei berlauf oder Division E aufgetreten ist durch Null Wird sonst zur ckgesetzt N wird gesetzt wenn das Ergebnis negativ ist N ist nicht definiert bei berlauf oder Div
156. Wenn ein A Abbruch u U w re besser falschen sich mit ein jede zufolge was nwender we Interr iner F haben und ob es nun getestet oder benutzt selbstgeschriebenes unerw nschte Sie im einzelnen im Programm falsch Programm Exception einen k nnen dann Ihr Programm ben utzt mu ein nn um jeden Preis vermieden werden Ihr Programm ES nach einem B upt weiter rechnet als da es h Zwecks sp terer Fehler auf die Diagnose k Platte pro Anwender unerken nbar rmeldung verabschiedet so gut m glich weiter arbeiten 122 nnen Sie evtl tokollieren f r den Danach soll das solche E Programm J Teepe 68000 Assembler 6 Stacks Exceptions und Interrupts 6 2 5 UMBIEGEN VON EXCEPTIONS Wie kann ich nun meine Exception Behlandungsroutinen einbauen denn sie sind doch alle bereits im Betriebssystem meines Atari festgelegt worden werden Sie fragen Eine richtige Frage Die Antwort ist einfach Sie hei t Umbiegen n Ihrem Atari sind solche nderungsw nsche bereits vorgesehen Deswegen zeigen alle Exception Adressen zu einer Sprungtabelle im RAM Schreib Lese Speicher Das bedeutet wenn Sie diese Sprungtabelle so ab ndern da sie zu Ihrer Routine zeigt dann wird anstelle der urspr nglichen Routi
157. als Stack Pointer benutzt werden k nnen sich im User Mode oder im Supervisor Mode befindet je nachdem ob der Prozessor Diese beiden Register A7 werden daher als User Stack Pori re r und als Super e E Sta k Ei r h E r bezeichnet Mehr ber den Betri CG b des Stackpointers in Kap 6 E DER PROGRAMMZ HLER Der Programmz hler Program Counter PC enth lt di Adress des n chsten Befehls Eine explizite nderung erfolgt B durch bedingte und unbedingte Sprunganweisungen und durch Aufrufe von Unter programmen Bei dem Program Counter sind wie bei den Adress registern die acht hochwertigen Bits unerheblich 68000 Assembler J Teepe 25 2 Architektur 2 2 4 DAS STATUSREG SAME E R Das Statusregister SR besteht aus zwei Bytes O Das Condition Code Register CCR oder das User Byte Es ist immer zug nglich o das System Byte Es ist nur im Supervisor Mode zug nglich Viele Operationen jedoch nicht all haben ein nderung des Status Registers zufolge Genaue Angaben dar ber welche Operationen eine nderung des Status Registers bewirken und welche nicht sind in der Befehls bersicht in Anhang B enthalten Das Statusregister wird durch bedingte Spr nge und bedingte Anrufe eines Unterprogramns etc ausge wertet 26 J Teepe 68000 Assembler
158. amme schreiben k nnen ohne dabei durch Formalit ten bei 68000 Assembler J Teepe 19 1 Einf hrung der Bedienung komplexer Hilfsprogramme abgelenkt zu werden Insbesondere k nnen Sie wenn Sie den Befehlssatz des 68000 Prozessors weiter in diesem Buch durchlesen schnell jeden Befehl nachvollziehen Bei der Erstellung von komplexeren Programmen werden Sie aber auf die Grenzen dieses Pakets sto en und nach den zus tzlichen M glichkeiten ines gr eren Entwicklungspakets mit separatem Editor falls Sie noch keinen haben Assembler Linker und Debugger verlangen Diese zus tzlichen M glichkeiten haben freilich auch Ihren Preis Durch die vielen zus tzlichen extra M glichkeiten ist die Bedienung auch erheblich komplexer Die Bedienungsanleitungen von Editor Assembler Linker und Debugger zusammen k nnen den Umfang des Ihnen jetzt vorliegenden Buches schon bertreffen Sobald Si di Grenzen dieses Einsteigerpakets sp ren haben wir unser Ziel allerdings schon erreicht denn dieses Buch m chte Ihnen einen Finstieg in die Assemblerprogrammierung des 68000 geben Die Bedienungsanleitung der Programmdiskette ist in Anhang C aufgenommen 20 J Teepe 68000 Assembler 2 Architektur Kapitel 2 Architektur Jetzt werden wir uns ansehen welch Teil der Prozessor 68000
159. ante ADDI add immediate ILI Format des Befehlswortes LZ 14 73 12 jI 08 8 7 6 5 4 3 2 1 O OIE O EAN EE o A MES 0 PA Ao N EE C E E S Gr e Effektive Adress Mode Register 1 Argumentwort Wort Daten bzw Byte Daten VS a ZB EEE zB REIFE BETREFF l 2 Argumentwort Langwort Daten einschlie lich voriges Wort Bit 7 6 Gr e Feld Aufbau der 00 Byte Befehl ADDI B Argumentw rter 01 Wort Befehl AUDI W siehe Kap 3 8 10 Langwort Befehl ADDI L Bit 5 0 Die Effektive Adresse w hlt den Zieloperand E an Die folgenden Adressierungsarten sind erlaubt Adr Art Mode Reg Adr Art Mode Reg Dn 000 R Dn xxx W 111 000 An nicht erlaubt xxXX L IT 001 An 010 R An dl6 PC nicht erlaubt An 011 R An d8 PC Xi Inicht erlaubt An 100 R An lt data gt nicht erlaubt d16 An 101 R An Erl uterung siehe d8 An Xi 110 R An Kapitel 5 Argumentwort Bit 7 6 00 gt Datenfeld ist die niederwertig H lfte des 1 Argumentwortes Bit 7 6 01 gt Datenfeld ist das 1 Argumentwort Bit 7 6 10 gt Datenfeld ist 1 2 Argumentwort Siehe auch ABCD ADD ADDA ADDO ADDX SUB 148 J Teepe 68000 Assembler B Befehls bersicht Addiere Konstante quick 1 8 rm add quick ADDO IL
160. as Ergebnis ungleich Null ist Bleibt sonst unver ndert N nicht definiert X Erh lt den gleichen Wert wie das C Bit 68000 Assembler J Teepe 295 B Befehls bersicht L A AA NBCD U Negiere BCD Zahl mit Extend Bit negate decimal with extend Format des Befehlswortes EIER IE FRA AERO BE 6 As este SI eo 0E O 0111010101010 Effektive Adress Mode Register Bit 5 0 Die Effektive Adresse w hlt den Zieloperand an Die folgenden Adressierungsarten sind erlaubt Adr Art Mode Reg Adr Art Mode Re Dn 000 R Dn xXxx W 111 000 An nicht erlaubt XxxX L 114 001 An 010 R An d1 16 PC nicht erlaubt An 011 R An d8 PC Xi nicht erlaubt An 100 R An lt data gt nicht erlaubt d16 An 101 R An Erl uterung siehe d8 An Xi 110 R An Kapitel 5 PROGRAMMIERHINWEIS Mit den Befehlen ABCD NBCD und SBCD k nnen Sie BCD Zahlen mit beliebig vielen Stellen automatisch abarbeiten Legen Sie dazu in bereinstimmung mit der 68000 Architektur di niederwertigen Bytes der Bin rzahl auf die h here Adresse und die hochwertigen Bytes auf di niedrige Adresse ab Ein Byte enth lt zwei BCD Zahlen 296 J Teepe 68000 Assembler B Befehls ber
161. as S Bit rd gesetzt so da wir in den Supervisor Mode langen Au erdem wird das T bit zur ckgesetzt eingeschalteter Trace Mode hrend der Exception Behandlung abgeschaltet wi ge so w wi da eine evtl rd Bei inem Int wi rd die Interrupt rrupt Externe Exception Maske entsprechend abge n dert SN Wenn ein Adressfehler oder ein Busfehler auftritt Exception 2 bzw 3 wird zus tzliche Information auf den System Stack gepushed F r di 4 De au be Sp Der P e Beschreibung seh en Sie bitte dort nach r Programmz hler PC erh lt den Wert der sich f der entsprechen icherstelle an H rozessor Behandl mit ein ungsroutine den ier Position in der Tabelle findet Der Programmablauf f ngt an dieser soll sich die Exception Behandlungsroutine befin durchl uft Diese Ro RTE Befehl beend Status Register und der Es den dann die Exception utine wird normalerweise Es bewirkt da das alte alte Programmz hler von dem Stack gepopped werden Dad urch wird das Programm direkt nach der Stelle fortgesetzt wo es durch die Exception unterbrochen wurde 62 2 DIE EXCEPTIONTABELLE Jeder Exception ist eine Vektornummer zugeordnet 0 25
162. bei Bit 0 die Wertigkeit 5924 und Bit 7 die Wertigkeit 2 128 hat 32 J Teepe 68000 Assembler 3 3 ARTEN VON DATEN velche Befehlssatz verarbeiten Es sind die folgenden 6 Bytes 8 Bit 0 rter 16 Bit O Langw rter 32 Bit 0 BCD Zahlen 4 Bit O Einzelne Bits Au erdem i adressen Die Adressierung der 3 Datenstrukturen Art von Daten kann der 68000 nun in seinem st in dem Befehlssatz des 68000 die Verarbeitung von anderen Datentypen wi Speicher der Abspeicherm in Beispiel F r die Adressierung der Anhang B bei nach 3 4 Bytes glich Inhalte von Statusw rter usw vorgesehen W rter Langw rter und BCD Zahlen wird nachstehend besprochen ebenso wie keiten von Strings in In Bits siehe im Bei den meist den Befehlen BCHG BCLR BSET und BTST BEZEICHNUNG VON DATENTYP EN IM BEFEHLS SYNTAX an Operand nun e n Befehlen mu angegeben werden ob der in Byte ein Wort oder ein Langwort ist MOV MOV MOV ir geben dies mit der Endung 68000 Assembler J Teepe E B kopiert ein Byte 8 Bit E W kopiert ein Wort 16 Bit E L kopiert ein Langwort 32 Ba Taw od r iL Bit 33
163. ben wurde Bleibt unver ndert bei Schieben um Null Positionen 68000 Assembler J Teepe 259 B Befehls bersicht Logisches Schieben nach rechts LSR logical shift right IL Assembler Syntax LSR x Dn Dn LSR x lt data gt Dn x entspricht B W Li Dazu geh rt das folgende Format des Befehlswortes 15 14 13 III 10 9 8 7 6 5 4 3 2 1 0 TE OEN E S 10 O Z hl 0 Gr e 1 JO 1 Daten Register Register Bit 11 9 Z hlregister Feld Wenn i 0 Die Bits 11 9 geben an um wieviele Positionen die Bits des Zieloperanden nach rechts verscho Den werden Dabei entspricht 001 einer Position usw bis 111 sieben Positionen entspricht 000 entspricht aber acht Positionen Konstante Wenn i 1 Die Bits 11 9 w hlen ein Datenregister Dn an Die niederwertigen 6 Bits des Datenregisters Dn geben an um wieviele Positionen die Bits des Zieloperanden nach rechts verschoben werden Bit 7 6 Gr e Feld 00 Byte Befehl LSR B 01 Vort Befehl LSR 10 Langwort Befehl LSR W et Bit 5 i Feld 0 Die Bits 11 9 beziehen sich auf eine Konstante Die Bits 11 9 beziehen sich auf ein Datenregister Bit 2 0 Register Feld w hlt ein Datenregister als Zieloperand an 260 J Teepe
164. bgespeichert Die Operandgr e ist ein Byte os a ea ee Condition Code Register Lo rl C wird gesetzt wenn Bit 0 der Konstante gesetzt ist Bleibt sonst unver ndert V wird gesetzt wenn Bit 1 der Konstante gesetzt ist Bleibt sonst unver ndert Z wird gesetzt wenn Bit 2 der Konstante gesetzt ist Bleibt sonst unver ndert N wird gesetzt wenn Bit 3 der Konstante gesetzt ist Bleibt sonst unver ndert X wird gesetzt wenn Bit 4 der Konstante gesetzt ist Bleibt sonst unver ndert 312 J Teepe 68000 Assembler B Befehls bersicht ODER mit Konstante zum CCR Fc inclusive or immediate to CCR ORI Format des Befehlswortes Konstante 8 Bit Benutzen Sie ORI zum SR wenn Sie auch das System Byte ODER verkn pfen m chten ANDI zum CCR wenn Sie das CCR UND verkn pfen m chten EOR um CCR wenn Sie das CCR Exclusiv ODER verkn pfen m chten MOVE zum CCR wenn Sie das CCR ohne R cksicht auf die bestehen den Bits ndern m chten Siehe auch ANDI zum SR ORI zum SR 68000 Assembler J Teepe 313 B Befehls bersicht ODER mit Konstante zum SR ORI inclusive or immediate to SR zum SR privilegierter Befehl cl Wenn Supervisor Mode Konstante v SR gt SR Wenn User Mode
165. ch SLS J Teepe 68000 Assembler B Befehls bersicht Setze Byte aufgrund Bedingung rm set according to condition sce IL SLS SLT SMI SNE Setze lt ea gt wenn niedriger oder gleich Set lt ea gt on Lower or Same Das Byte in lt ea gt wird gesetzt wenn das C Bit das Z Bit oder beide gesetzt sind Sonst wird das Byte in lt ea gt zur ckgesetzt SLS ist f r Bin rzahlen ohne Vorzeichen gedacht ist sonst hnlich SLE Setze lt ea gt wenn kleiner Set lt ea gt on Less Than Das Byte in lt ea gt wird gesetzt wenn O das N Bit gesetzt und das V Bit zur ckgesetzt oder O das N Bit zur ckgesetzt und das V Bit gesetzt ist Sonst wird das Byte in lt ea gt zur ckgesetzt SIT ist f r Bin rzahlen mit Vorzeichen gedacht Setze lt ea gt wenn Minus Set lt ea gt on Minus Das Byte in lt ea gt wird gesetzt wenn das N Bit gesetzt ist Sonst wird das Byte in lt ea gt zur ckgesetzt SMI ist f r Bin rzahlen mit Vorzeichen gedacht Setze lt ea gt wenn ungleich Set lt ea gt on Not Egual wenn das Z Bit zur ckgesetzt ist 68000 Assembler J Teepe 347 B Befehls bersicht Setze Byte aufgrund Bedingung sce set according to condition IL SPL Setze lt ea gt r wenn Plus Set lt ea gt on PLus Das Byte in lt ea gt wird geset zur ckgesetzt ist tzt wenn das N Bit
166. ches Schieben nach links arithmetic shift left ziel verschoben durch lt Zahl gt gt Ziel Operandgr e Assembler Syntax Die ASL Byte 8 ASL W ASL dort 1 ASL Langwort Wor 6 Bi ASL x ASL x AS Ji Beschreibung Bits des Operanden werden nach links verschoben x en 16 Dn Dn lt data gt lt ea gt Bei jedem Sc Das C Bi hochwert O O Bits rec hiebesc t und das igen N Bits Danach erh lt das hochwertige ts danebe ert sei ert von zum Sch O nes recn u tspricht Bit Bit 32 t Bit uelle Ziel n B Q D W L hritt passiert folgendes X Bit erhalten den Wert des n Dieses Bit den Wert des Bit erh lt dann den n Bit F r unten 164 die Gesamtzahl Nachbarn Bit 0 erh lt D erh lt 0 den der Schiebeschritt s usw bis Bit 1 den dert Null sieh weiter J Teepe 68000 Assembler B Befehls bersicht Arithmetisches Schieben nach links arithmetic shift left un ASL IL ASL um n Positionen bedeutet da der Operand als Bin rzahl mit Vorzeichen aufgefa t mit 2n multipliziert
167. cht Fl cMPA IL Format des Vergleiche Adresse compare Befehlswortes address Le E 233 2 E e e 6 E DE 1 O 1 1 Register Operations Effektive Adress Dp Mode Mode Register Bit 11 9 Registerfeld w hlt eines der acht Adressregister An an Es ist der Zieloperand Bit 8 6 Feld Operations Mode 011 CMPA W Wort Befehl Der Quellopperand wird mit dem gleichen Vorzeichen und vom Ziel Adressregis Bits angewendet 111 CMPA L Bit 5 0 Di auf 32 Bit erweitert ter werden s mtliche 32 En m Langwort Befehl ffektive Adress an All w hlt den Quelloperand e Adressierungsarten sind erlaubt Adr Art Mode Reg Adr Art Mode Reg Dn 000 R Dn XXX W alc 000 An 001 R An xxx L K Z 001 An 010 R An d16 PC 11a 010 An 011 R An d8 PC Xi 111 011 An 100 R An lt data gt 11 100 d16 An 101 R An Erl uterung siehe d8 An Xi 110 R An Kapitel 5 Siehe auch CMP CMPI CMPM 210 J Teepe 68000 Assembler B Befehls bersicht Vergleiche Konstante r compare immediate CcMPI IL Ziel Konstante Operandgr e CMPI B Byte 8 Bit CMPI W Jort 16 Bit CMPI L Langwort 32 Bit Assembler CMPI x lt data gt lt ea gt Qu
168. d Bit r rotate right with extend ROXR L Ziel rotiert durch lt Zahl gt gt Ziel Operandgr e ROXR B Byte 8 Bit ROXR W Vort 16 Bit ROXR L Langwort 32 Bit ROXR Wort 16 Bit Assembler ROXR x Dn Dn Quelle Ziel Syntax ROXR x lt data gt Dn x entspricht B W L ROXR lt ea gt Beschreibung Die Bits des Operanden werden nach rechts rotiert Bei jedem Rotationsschritt passiert folgendes O Bit 0 gibt seinen Wert an das C Bit ab Der Wert wird au erdem zwischengespeichert LA o Danach gibt Bit seinen Wert an Bit 0 und Bit 2 seinen Wert an Bit 1 usw bis das hochwertige Bit seinen Wert an seinen rechten Nachbarn abgibt O Dann erh lt das hochwertige Bit den Wert des X BEE o Zum Schlu erh lt das hochwertige Bit den Wert der vorher im C Bit war F r die Gesamtzahl der Rotationsschritte siehe auf der n chsten Seite 68000 Assembler J Teepe 333 B Befehls bersicht r Rotiere rechts mit Extend Bit ROXR rotate right with extend I lt lt v A se aX o hal Operan d De n a Ch EEN E MSB LSB o Es gibt drei Befehlsformen CO Der Befeh ROXR x lt data gt Dn x entspricht B W L rotiert ein Datenregister nach rechts um soviele Positionen wie in der Konstante angegeben ist Die
169. data gt D5 Befehlswort 1002 00 12 1 Argumentwort 1004 ADD L D2 D5 n chstes Befehlswort In der niederwertigen H lfte des Argumentwortes steht in diesem Falle die Zahl 12 die h herwertig H lfte des Argumentwortes ist mit Nullen gef llt An dem Befehlswort sieht der Prozessor da das dem Befehlswort unmittelbar folgende Wort als Argument zu nehmen ist Von dem Argument liest er nur die niederwertigen 8 Bits dem 1 Argumentwort folgende Befehlswort genommen Das n chstes 68000 Assembler J Teepe diese werden im Register D5 abgespeichert Wort wird als 47 3 Datenstrukturen 3 8 3 BEFEHLE MIT ZWEI ARGUMENTW RTERN In dem Befehl MOVE L 512345678 D5 schreibe die Zahl 12345678 in D5 werden dem Befehlswort zwei W rter angeh ngt Sie tragen das Argument des Befehls Adresse 1000 MOVE L lt data gt D5 Befehlswort 1002 12 34 1 Argumentwort 1004 56 78 1 Argumentwort 1006 ADD L D2 D5 n chstes Befehlswort 48 J Teepe 68000 Assembler 3 Datenstrukturen 3 8 4 QUELLE UND ZIEL BESITZEN ARGUMENTW RTER Es kann nat rlich sein da sowohl die Quelle als auch das Ziel Argumentw rter mit sich f hren Beispiel der Befehl MOVE L 51235678 23456789 1L Speicher di zahl 23456789 in die Speicherstelle
170. de o eine nicht erlaubte Befehlskombination Wenn wir diese Exception ABSICHTLICH erzeugen m chten mpfiehlt es sich aus Gr nden der bersichtlichkeit und Kompatibilit t den Befehl LLEGAL 4AFC zu gebrauchen Vektor Adresse Zuordnung 5 0014 Division durch Null 6 0018 CHK Befehl 7 001C TRAPV Befehl Die auf DI se Vektoren sind nur vollst gef hrt VS D IVU CHK Sehen Si bei dem TRAPV nach 68000 Assembler J Teepe t ndigkeitshalber ntsprechenden Befehl 115 6 Stacks Exceptions und Interrupts Vektor Adresse Zuordnung Loo o T S 8 0020 Verletzung Privilegium GE DEE DEE Wenn der Prozessor sich im User Mode befindet und einen privilegierten Befehl ausf hren soll wird diese Exception aktiv Normalerweise ist das ein Programmfehler Sie k nnen aber auch diese Exception absichtlich bet tigen Vektor Adresse Zuordnung EE EE DEENEN 9 0024 Trace Lo o i S T TL Wenn das Trace Bit im Statusregister gesetzt ist wird nach JEDEM Befehl diese Exception gemacht Viele Debugger nutzen diese Eigenschaft des Prozessors aus 116 J Teepe 68000 Assembler 6 Stacks Exceptions und Interrupts Vektor Adresse Zuordnung 10 0028 Line 1010 Emulator 1 1 002C Line 1111 Emulator Diese
171. de ab CO Zugriffe zum Sytem Byte des Status Registers O RESET All xternen Ger te werden zur ck gesetzt o RTE Return von einem Exception Condition CO STOP H lt das Programm an bis ein xternes Ereignis erfolgt Fine komplette Liste der privilegierten Befehl ist in Kap 4 2 8 enthalten 2 2 DIE REGISTER Hier sehen wir di Register des 68000 Prozessors des Der Supervisor Stack Pointer sowie das System Status Registers zug nglich Byte sind nur im Supervisor Mode Diese beiden Register sind in Bild 2 1 gerastert unterlegt Die Bits werden von rechts nach links num wobei Bit 0 die Wertigkeit 2 1 meriert Wertigkeit SCH und Bit 31 2 147 die 183 648 hat 22 J Teepe 68000 Assembler 2 Architektur L DO D1 D2 3 D3 Datenregister D4 S S D5 L D6 S D7 31 16 15 8 7 D S b AO A Al 3 A2 S S A3 Adressregister i i A4 i S A5 L A6 31 25 24 Q A7 USP User Stack Pointer 31 25 24 D A7 SSP Supervisor Stack Pointer 31 25 24 0 S PC Programmz hler Supervisor Stack Pointer 1 5 8 7 0 CCR SR Status Register gerastert unterlegt Hr Register ist nur in Supervisor Mode erreichbar Bild 2 1 Die Register des Prozessors 68000 68000 Assembler J Teepe 23 2 Architektur 22 DIE DATENRE
172. den Bits 16 31 hineinkopiert Der Operand kann nur ein Datenregister sein Mehr in Kap ES Information ber Daten mit oder ohne 68000 Assembler J Teepe Vorzeichen 241 B Befehls bersicht Erweitere Vorzeichen em EXT extend sign IL E S E So i0 1 Condition Code Register C wird zur ckgesetzt V wird zur ckgesetzt Z wird gesetzt wenn das Ergebnis gleich Null ist Wird sonst zur ckgesetzt N wird gesetzt wenn das Ergebnis negativ ist Wird sonst zur ckgesetzt X bleibt unver ndert TCE GI a ti A Format des Befehlswortes L5 TA EE LI T0 9 8 7 6 5 4 3 2 1 0 1011110 O0O 1 0 0 Operations O O O Daten Mode Register Bit 8 6 Feld Operations Mode 010 EXT W Wort Befehl Das Vorzeichen wird von einem Byte zu einem Wort erweitert 011 EXT L Langwort Befehl Das Vorzeichen wird von einem Wort zu einem Langwort erweitert Bit 2 0 Register Feld w hlt das Datenregister Dn an dessen Vorzeichenbit erweitert werden soll Siehe auch NEG NEGX NBCD 242 J Teepe 68000 Assembler B Befehls bersicht L se Illegal Exception aus DI take illegal instruction trap ILLEGAL ll Die Exception 4 wird ausgel st siehe Kap 6 Operandgr e keine Assembler Syntax LLEGAL Beschreibung Der Prozessor gelangt in den
173. di Zeile die hinter TO steht L oder LIST Ln Ln Programm listen FIND String Ln Ln Diese Funktion sucht einen String im Listing NEW Programm l schen 2 2 Assemblieren und Starten des Programmes ASM F Dieser Befehl assembliert das Listing so da ein ablauff higes Programm im Speicher erzeugt Sie hinter ASM ein F schreiben wird Wenn Listing beim wird das Assemblieren nicht angezeigt 68000 Assembler J Teepe 377 C Mitgelieferte Programmdiskette PRGASM F Hiermit wird das Listing so assembliert da man das entstandene Programm anschlie end mit PRGSAVE als Programmdatei speichern kann LABEL Adr Label Dieser Befehl igt alle Labels nach ihren Adressen geordnet an Wenn Sie ein Label bzw ine Adress angeben so werden die vorausgehenden Labels nicht gezeigt GO Adr Label Hiermit k nnen Sie Ihr Programm aufrufen Dabei m ssen Sie die Startadresse als Zahl oder Label angeben TRACE Adr Labe Aufgerufen wird dieser Befehl wie GO Er zeigt allerdings nach jedem Maschinensprachbefehl die Registerinhalte und Flags an 2 3 Befehle zum Speichern und Laden DIR Filespec Directory zeigen Sie k nnen dabei beliebig mit Wild Cards arbeiten Sollten Si keine Angaben machen wird angenommen PATH Drive Pathname Hiermit k nnen Sie das Laufwerk und den Pfadnamen festlegen
174. e lt data gt w hlt das Bit an oO Der Befehl BCHG B Dp lt ea gt pr ft ein Bit in einem Byte im Speicher Das Datenregister Dp w hlt das Bit an Assembler Syntax BCHG L lt data gt Dn Dazu geh rt das folgende Format des Befehlswortes La 1 4 137 ES t0 2 8 7 6 5 4 3 2 1 0 0 0 0 1 1 0 0 0 O 1 0 0 0 Register l l Dn II 1 1 1 Bit 2 0 Feld Datenregister Dn w hlt das Datenregister mit dem Operand an Hierin befindet sich das Bit das gepr ft werden soll Feld Bitzahl gibt an welches Bit von Dn gepr ft wird Es werden nur die Bits 0 4 der Bitzahl benutzt Es wird also Bit Bitzahl mod 32 von Dn gepr ft 182 J Teepe 68000 Assembler B Befehls bersicht Pr fe Bit und ndere r test a bit and change BCHG IL Assembler Syntax BCHG L Dp Dn Dazu geh rt das folgende Format des Befehlswortes 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 101101 O0 O Register 11 0 1110 0 0 Register Dp Dn Bit 11 9 Feld Datenregister Dp gibt an welches Bit von Dn gepr ft wird Es werden nur die Bits 0 4 von Dp benutzt Es wird also Bit Dp mod 32 von Dn gepr ft Bit 2 0 Feld Datenregister Dn hlt das Datenregister mit dem Operand an Hierin befindet sich das Bit das gepr ft werden soll 68000 Assembler J Teepe 183 B Befehls bersicht
175. e Dn 000 R Dn XXX W 111 000 An 2 001 R An xxx L 111 001 An 010 R An d16 PC 111 010 An 011 R An d8 PC Xi 111 011 An 100 R An lt data gt 11 100 d16 An 101 R An Erl uterung siehe d8 An Xi 110 R An Kapitel 5 Adressierungsart An nicht f r Byte Befehle erlaubt Bit 5 0 Wenn die Effektive Adresse der Zieloperand ist also lt ea gt Dn gt lt ea gt sind die folgenden Adressierungsart ten erlaubt Adr Art Mode Reg Adr Art Mode Re Dn nicht erlaubt XXX W 141 000 An nicht erlaubt xxx L 111 001 An 010 R An d16 PC nicht erlaubt An 011 R An d8 PC Xi nicht erlaubt An 100 R An lt data gt nicht erlaubt d16 An 101 R An Erl uterung siehe d8 An Xi 110 R An Kapitel 5 HINWEIS Wenn der Zieloperand ein Datenregister sein soll kann er nicht mit der Adressierungsart lt ea gt angew hlt werden sondern nur mit der Adressierungsart Dn 354 J Teepe 68000 Assembler B Befehls bersicht Subtrahiere bin r subtract binary suB IL PROGRAMMIERHINWEIS Es kommt manchmal vor da Sie B SUB W Dl D2 brauchen aber trotzdem Dl behalten m chten Program mieren Sie dann SUB W D2 DI NEG W DI Benutzen Sie SUBA wenn der Zieloperand ein Adress register ist SUBI oder SUBQ
176. e darauf verlassen k nnen da der User Stack Pointer der das Anwendungsprogramm vom Betriebssystem gestellt bekommt ausreichend viel Platz bietet Vom User Mode aus ist der System Stack Pointer nicht zug nglich ber einen Trap kann man aber in Supervisor Mode gelangen der User Stack Pointer ist dann ber MOVE USP zug nglich CT D L2 DIE ARBEITSWEISE EINES STACKS 6 1 5251 ABLAGE VON DATEN Stellen Sie sich den folgenden Programmabschnitt vor MOVE L 500001000 SP Initialisierung SP MOVE L 501234567 D2 Initialisierung D2 MOVE L D2 SP push D2 auf Stack Routine der D2 zerst rt MOVE L SP D2 pop D2 vom Stack 96 J Teepe 68000 Assembler 6 Stacks Exceptions und Interrupts Wenn Sie eifrig das Kapitel 5 gelesen haben werden Sie zweifellos einsehen da beim Befehl MOVE L 02 SP push D2 auf Stack zuerst das Adressregister SP um die Datenl nge vermindert wird Da die Datenl nge wegen der Angabe L ein Langwort 4 Bytes ist erh lt SP nunmehr den Wert 1000 4 SOFFC Danach wird D2 in den Speicherplatz SOFFC kopiert Der Inhalt des Registers D2 wird also auf den Stack gerettet Dieser Vorgang wird als push bezeichnet In Kapitel 3 5 haben wir gesehen da die hochwe
177. e ee E bersicht der Computersprachen ld Maschinencod Assembler as nesr seen 1 2 H here Sprachen ern ea en d 123 K nstliche Intelligenz 1 2 Warum Assembler erdia ena dr ier ee 1 2 1 Gomm Ferber sosa near ae ar ne 1 2 42 Geschwindigkeit ser nennen 12 3 Eet DEE an le Ban era 1 2 4 Eirn Und Ausgabe used Fan E A Test M gLichkeiten saure rer 3 1 Ber Debugger na a Re ne 1 322 Der Disassembler des Debuggers 33 Veitere M glichkeiten des Debuggers 4 Die Drooramm Hrastellung 4 Editor Assembler Linker Debugger 1 4 2 Die mitgelieferte Programm Diskette Kapitel 2 Archrtekt r aussen 2 1 User Mode Supervisor Mode 2 2 Dre Register wlan ale aa 2 22 Dre Datenregister ars ar Era lee 222 Die Adressregister s ssesesceseseso 2 233 Der Programmz hler i si ee Be R E 2 2 4 Dag Sstat sregisten erigir dek riea eaae ena 2 2 4 1 User Byte Condition Code Register 2 264 2 Das System Byte nenne an 68000 Assembler J Teepe Inhaltsverzeichnis Kapitel 3 Datenstr kt ren ss 31 Sisal Der Adressbereich s sesesecsessesoseoos 31 342 Datenorganisation im Speicher 32 3 3 Arten vom Daten naar rare ann 33 3 4 Bezeichnung von
178. ebenen Adressregisters wird auf den Stack gepushed Danach nimmt das Adressregister den Wert des Stack Poi Die Adressdifferen nters an dl16 die als eine 16 Bit Bin r zahl mit Vorzeiche Pointer addiert Die Adressdifferen ist normal n aufgefa t wird rweis in n wird zu dem Stack zahl Sie gibt die Gr des Stack reserviert werden soll Der reservierte B Bereichs an gative das im reich innerhalb des Stacks wird als Stack Frame bezeic hnet s befindet sich zwischen SP und An SP stellt die niedrige und An die h here Grenze dar T PROGRAMM RHINWEIS Durch die Verwendung von LI falschen R ckkehradressen Stackprogrammierung etwas entsch rft sierungsfehler innerhalb des des Programms zufo lge 250 infolg INK wird das Problem von von Fehler bei der Etwaige Adres LINK reservierten Bereichs haben nicht mehr ein unbedingt tes Abst rzen J Teepe 68000 Assembler B Befehls bersicht Reserviere Bereich im Stack rm link and allocate LINK IL Der Befehl UNLK macht genau das entgegengesetzte von LINK damit wird der reservierte Stackbereich wieder Paj freigegeben auch das Adressregister An erh lt seinen F fr heren Wert wieder Condition Code Regi
179. echenopera tionen verkn pfen Es gelten dabei nicht 68000 Assembler J Teepe 383 C Mitgelieferte Programmdiskette die blichen Rech werden von rechts n Schreiben Sie anstatt Dies ist un bersichtliche ausging da man Sch in die habe ich mir Berechnung regel ach Tee sicherlich In links eine reibweise der Regel h chstens von einer M he u programmieren 8 Fehlermeldungen hrend des Direkteingabe kommen Es kann ert nt abgebrochen Es kann Assemblierens dann Fehlermeldung erschein es zu ein nicht garantiert werden absolut alle Fehler F llen d rften wenn Sie sich fraglich 11 im ja S Illegal opcode Undefined error Wrong adressing mode Unknown adr mode Undefined label Syntax File not found 384 E solche U S Hier nun die Fehlermeld kennt ab Proble nklaren s nmal disa ungen mi Beim Ass unbekann sondern die oder verschiedenen Ergebnisse berechnet Beispiel a rb c sehr ungewohnte und Da ich jedoch davon einfachen Addition oder Subtraktion Gebrauch macht gespart in besser w hrend der Fehlern und eine auch Glockenton Das Assemblieren wird dabei da der Assembler er in weit den meisten me nicht auftauchen ind k nnen Sie die ssemblieren ihren Bedeutungen uchte ein uf embliere r Bef n Ta
180. edient Sonst the interrupt is ulange warten zu lassen Kommt ein zweiter Interrupt von der gleichen Interrupt verloren geht der erst CO Das bedeutet beim Empfangen von Zeichen konkret langsam l uft O Beim Senden von Zeichen ist das da Ihre Tastatur Zeichen verschluckt Ihr Me daten inkomplett sind oder Ihre Uhr z harmloser e bedeutet nur Geschwindigkeitsverlust Sie wir z B dadurch verursacht da Daten die au einer Diskette geschrieben werden m ssen ein ganze Diskettenumdrehung auf Abfertigung warte P m ssen auch wenn sie nur geri angeliefert werden 68000 Assembler J Teepe ngf gig zu sp e H S d E e n 127 6 Stacks Exceptions und Interrupts Der Trick ist dann Priorit t geschrieben bzw 128 da die Zeichen mit geringer Wartezeit im Puffer hoher und aus dem Puffer gelesen werden da die weitere Abfertigung mit geringerer Priorit t erfolgt Der Programmierer wuchert hier mit Mikro sekunden 63 53 WAS PASSIERT BEI EINEM INTERRUPT O Das Status Wort und der Programmz hler werden auf den Stack gepushed wie bei Exceptions besprochen O Das Status Wort wird abge ndert O Das S Bit wird gesetzt Supervisor Mode
181. eendet wenn O das Z Bit gesetzt ist oder O das N Bit gesetzt und das V Bit zur ckgesetzt ist oder o das N Bit zur ckgesetzt und das V Bit gesetzt ist DBLE ist f r Bin rzahlen mit Vorzeiche ist sonst hnlich DBLS n gedacht DBLS beende Schleife wenn niedriger oder gleich Terminate on Lower or Same Die Schleife wird beendet wenn das C Bit das 2 Bit oder beide gesetzt sind DBLS ist f r Bin rzahlen ohne Vorzeichen gedacht ist sonst hnlich DBLE 218 J Teepe 68000 Assembler B Befehls bersicht pr fe dekrementiere und springe test condition decrement and branch DBLT beende Schleife wenn kleiner Terminate on Less Than DBMI DBNE DBPL DBVC Die Schlei fe wird beendet wenn Fc DBce CG das N Bit gesetzt und das V Bit zur ckgesetzt oder O das N Bit zur ckgesetzt und das V Bit gesetzt ist DBLT ist f r Bin rzahlen mit Vorzeichen gedacht beende Schleife wenn Minus Terminate on Minus Die Schleife wird beendet wenn das N Bit gesetzt ist DBMI ist f r Bin rzahlen mit Vorzeichen gedacht beende Schleife wenn ungleich Terminate on Not Equal Die Schleife wird beendet wenn das Z Bit zur ckgesetzt ist beende Schleife wenn Plus Terminate on PLus Die Schleife wird beendet wenn das N Bit zur ckgesetzt ist DBPL ist f r Bin rzahlen m
182. eepe 341 B Befehls bersicht rm Subtrahiere BCD Zahl mit Extend Bit SBCD subtract decimal with extend IS Se E ee Ee E Condition Code Register E EEE e o E C wird gesetzt wenn ein dezimale Leihe generiert wird Wird sonst zur ckgesetzt V nicht definiert Z wird gel scht wenn das Ergebnis ungleich Null ist Bleibt sonst unver ndert N nicht definiert X Erh lt den gleichen Wert wie das C Bit Format des Befehlswortes 5 IA 313 321 11 gt 0 29 8 7 6 5 4 3 2 1 0 ES e ER OR ANN De T Ziel W1 i 0 100 IO R M Quell Register Register Bit 11 9 Registerfeld w hlt eines der acht Daten oder Adressregistern als Zieloperand an Bit 3 Das A bit w hlt die Adressierungsart an 0 Adressierungsart Dn Die Operation erfolgt von Datenregister zu Datenregister l Adressierungsart An Die Operation erfolgt von Speicherplat u Speicherplatz Die Operanden werden durch das Adressregister in Pr dekrement mode adressiert Siehe Kap 5 A Bit 2 0 Registerfeld w hlt einer der acht Daten oder Adressregistern als Quelloperand an Siehe auch ABCD NBCD SUBX 342 J Teepe 68000 Assembler B Befehls bersicht Setze Byte aufgrund Bedingung rm set according to condition sce IL Scc ist ein berbegriff Wenn Bedingung siehe Befehlsliste
183. efehlssatz 4 1 REIHENFOLGE DER PARAMETER Es gibt Befehle ohne Parameter oder mit einem oder mit zwei Parametern Die Syntax bei den Befehlen mit zwei Parameter hat einheitlich die Reihenfolge von links nach rechts A Befehl gt lt Quelle gt So kopiert der Befehl MOVE L D3 D5 die Daten VON Register D3 NACH Register D5 Programmierer die fr her auf anderen Prozessoren programmiert haben kennen unter Umst nden Assembler Befehle die von links nach rechts gehen wie STORE lt Quelle gt lt Ziel gt und andere Assembler Befehle die von rechts nach links gehen wie LOAD lt zZiel gt lt Quelle gt Sie werden sich freuen weil diese beiden Befehl durch einen neuen Befehl abgedeckt sind und da alle Befehle zumindest in gleiche Richtung gehen 68000 Assembler J Teepe 51 4 Befehlssatz 4 2 KLASSEN DER BEFEHLE F r den 68000 Programmierer gibt es die folgenden Befehlsklassen 1 Daten Kopierbefehl 2 Integer arithmetische Befehle 3 Logische Befehle 4 Schiebe und Rotierbefehle 5 Bit Befehle 6 BCD Befehle 7 Programmsteuerbefehle 8 Systemsteuerbefe
184. eg Dn 000 R Dn xxx W 111 000 An 001 R An xxX L 111 001 An 010 R An d16 PC 111 010 An 011 R An d8 PC Xi 11 011 An 100 R An lt data gt 111 100 dl6 An 101 R An Erl uterung siehe d8 An Xi 110 R An Kapitel 5 Siehe auch ABCD ADD ADDI ADDO ADDX SUBA 146 J Teepe 68000 Assembler Addiere Konstante B Befehls bersicht Im 1 add immediate ADDI I Konstant t ziel gt Ziel Operandgr e ADDI B Byte 8 Bit ADDI W Jort 16 Bit ADDI L Langwort 32 Bit Assembler ADDI x lt data gt lt ea gt Quelle Ziel Syntax x entspricht B W L Beschreibung Die Konstante die im Speicher unmittelbar dem Befehlswort folgt wird bin r um Zieloperand lt ea gt addiert Das Ergebnis wird im Zieloperand lt ea gt abgespeichert Die Gr e der Konstante entspricht der Operandgr e Kegel a I ee a Re SCH Condition Code Register Mi ip Ti a Hin si E i C wird gesetzt wenn ein bertrag generiert wird rd sonst zur ckgesetzt V wird gesetzt wenn ein berlauf generiert wird rd sonst zur ckgesetzt Z wird gesetzt wenn das Ergebnis gleich Null ist rd sonst zur ckgesetzt N wird gesetzt wenn das Ergebnis negativ ist rd sonst zur ckgesetzt X Erh lt den gleichen Wert wie das C Bit 68000 Assembler J Teepe 147 B Befehls bersicht rm Addiere Konst
185. egiere Operand mit Extend Bit NEGX negate with extend Ill Vor Anfang der Operation setzen Sie das Z Bit und l schen Sie das X Bit Gebrauchen Sie dazu B den Befehl MOVE W 4 CCR Sie fangen die Abarbeitung bei dem niederwertigen Teil auf der h chsten Adresse an und benutzen di pr dekrement Adressierung An um nacheinander die hochwertigeren Teil auf der niedrig werdenden Adresse zu adressieren enn bei der Verarbeitung eines Teils ein Leihen bzw ein bertrag entsteht wird das X Bit gesetzt Dieses Leihen bzw dieser bertrag wird rechnerisch korrekt verarbeitet indem das n chsth here Teil um eins 1 verringert wird Das X Bit bernimmt im n chsten Aufruf diese Aufgabe Das Z Bit wird zur ckgesetzt wenn ein Teil ungleich Null ist Es ndert sich aber nicht wenn ein Teil Null ist Ist also am Ende der Operation das Z Bit immer noch gesetzt ist die ganze Bin rzahl Null en Siehe auch NEG EXT 302 J Teepe 68000 Assembler B Befehls bersicht Tue Nichts r no Operation NoP IL Operation keine Operandgr e keine Assembler Syntax NOP Beschreibung Es findet keine Aktion statt Nat rlich l uft der Programmz hler wie bei jedem anderen Befehl auch weiter bis zum n chsten Befehl Bei der Programm Entwicklung mit dem Debu
186. ehrere Register rm move multiple registers MOvEM Ill Argumentwort Maske mit Registerliste spezifiziert welch Register bertragen werden sollen Ein oder ausgeschlossen werden kann jeder der Register A0 A7 und D0 D7 Ein Register wird bertragen wenn das entsprechende Bit gesetzt ist Es wird nicht bertragen wenn das Bit zur ckgesetzt ist F r den Pr dekrement Mod An ist die Maske so aufgebaut 5 EAST FI E EE Ae FA a Ae 2 2 a ID01D11D2 D3 D4 D5 D6 D7 AO A1JA2 A3 A4 AS A6 A7 E IRB EN NEE EE H F r alle anderen Adressierungsmethoden ist die Maske so aufgebaut LS T4 EK E 9 gl T 6 0 Aj a3 E 0 TOS Ve EE NEE EN ET 8 E WE I a E A7 A6 A5 A4 A3 A2 A1 A0 D7 D6 D5 D4 D3 D2 D1 D0 L LL LL LL L l I Das Register das dem niederwertigen Bit entspricht wird zuerst bertragen und das Register das dem hochwertigen Bit entspricht zuletzt 68000 Assembler J Teepe 281 B Befehls bersicht Eingabe Ausgabe zur von Peripherie MovEP move periperal data Ill Quelle gt Ziel Operandgr e MOV P W Wort 16 Bit MOVEP L P Langwort 32 Bit m Di zy Di Assembler Syntax Quelle Ziel MOVEP x Dn d16 An oder MOVEP x Dn d16 An MOVEP x d16 An Dn oder MOVEP x d16 An Dn Beschreibung fen Der Prozessor 68000 ist ein 16 Bit Prozessor
187. eichen oO als Bin rzahl mit Vorzeichen Auch hier ist es der Computerbefehl der entscheidet ob die Bin rzahl als Bin rzahl mit oder ohne Vorzeichen aufgefa t wird Bei den meisten Befehlen ist es in der Abarbeitung egal ob die Zahl als Bin rzahl mit oder ohne Vorzeichen zu verstehen ist So ist bei ADD und SUB Befehlen das Ergebnis gleicherma en richtig Bei den Befehlen wo ein Unterschied gemacht wird wird bei der Befehlsbeschreibung in Anhang B darauf hingewiesen 38 J Teepe 68000 Assembler Bei einem Byte is 15 und bei einem Ist das Vorzeiche Zahl positiv oder null t das also Langwort Das Vorzeichenbit ist das hochwertige Bit 7 31 Bit nbit zur ckgesetzt Ist das Vorzeichenbit gesetzt bei einem Wor 3 Datenstrukturen Bit der Daten t Bit 0 dann ist t der 1 dann ist die Zahl negativ Di hier beschrieben Darstellung von Zahlen mit Vorzeichenkbit wird auch als Zweierkomplement bzw 2 complement bezeichnet Am Beispiel ines Bytes m chten wir Ihnen den Unterschied wischen den beiden Interpretationen zeigen Bin rzahl Hex aufgefa t aufgefa t Wert als als Bin rzahl Bin rzahl Bit mit ohne 76543210 Vorzeichen Vorzeichen 00000011 03 3 3 00000010 02
188. eicher zu den Registern Bit 6 q Feld bestimmt die Gr e der zu bertragenen Daten 0 MOVEM W Wort Befeg l l MOVEM L Langwort Befehl 68000 Assembler J Teepe 279 B Befehls bersicht Kopiere mehrere Register Mm a MOvEM move multiple registers Ill Bit 5 0 Effektive Adress spezifi die Speicheradresse an welcher Stell die Daten bertragung anfangen soll iert F r Daten bertragungen von den Registern zum Speicher sind die folgenden Adressierungsarten erlaubt Adr Art Mode Reg Adr Art Mode Reg Dn nicht erlaubt xxx W 111 000 An nicht erlaubt xxxX L 11 001 An 010 R An dl6 PC nicht erlaubt An nicht erlaubt d8 PC Xi IJnicht erlaubt An 100 R An lt data gt nicht erlaubt dl6 An 101 R An Erl uterung siehe d8 An Xi 110 R An Kapitel 5 F r Daten bertragungen vom Speicher zu den Registern sind die folgenden Adressierungsarten erlaubt Adr Art Mode Reg Adr Art Mode Re Dn nicht erlaubt xxx W 111 000 An nicht erlaubt xxx L EEE 001 An 010 R An d16 PC 11 010 An 011 R An d8 PC Xi 11 011 An nicht erlaubt lt data gt nicht erlaubt d16 An 101 R An Erl uterung siehe d8 An Xi 110 R An Kapitel 5 280 J Teepe 68000 Assembler B Befehls bersicht Kopiere m
189. eifenz hler loop counter bezeichnet Wenn das niederwertige Wort des Datenregister also am Anfang den Wert 1 hatte wird die Schleife 65536 mal durchlaufen angenommen da die Bedingung nicht vorher erf llt wird BEISPIEL Dieses Programm soll untersuchen ob in dem String Zeichenkette der sich wischen BUF und BUFE befindet das Zeichen w enthalten ist Wenn ja dann soll die Adress des rsten w s ermittelt werden MOVE W BUF A5 Anfang Buffer zu A5 MOVE W BUFE BUF D5 Laenge Buffer zu D5 LOOP CMPI B w A5 Ist dort ein w DBNE D5 LOOP Wenn nein suche weiter TST W D5 Wenn D5 negativ dann BM NOTFOUND E kein w gefunden JUMP FOUND Gefunden Adresse in A5 BUF DC B So ein Tag so wunderschoen wie heute BUFE 216 J Teepe 68000 Assembler pr fe dekrementiere und springe test condition Bei d decrement and branch n die originalen gegeben merken DBCC beende Schleife wenn Terminate if Carry is DBCS DBEQ amerikanischen Terminate if EQual Die Schleife wird beendet gesetzt ist DBGE beende Schleife wenn Terminate if Carry is beende Schleife wenn B Befehls bersicht Fc DBce IL Befehlen
190. ein Wort oder ein Langwort sein rz I Ze TE Zu ex Condition Code Register y aij Ali a Alien ein C wird gesetzt wenn ein Leihen generiert wird rd sonst zur ckgesetzt V wird gesetzt wenn ein berlauf generiert wird rd sonst zur ckgesetzt Z wird gesetzt wenn das Ergebnis gleich Null ist rd sonst zur ckgesetzt N wird gesetzt wenn das Ergebnis negativ ist rd sonst zur ckgesetzt X bleibt unver ndert 68000 Assembler J Teepe 207 B Befehls bersicht e emp Ic Vergleiche compare Format des Befehlswortes Ke tte A EOS Re D 1 O 1 1 Register Operations Effektive Adress Dp Mode Mode Register Bit 11 9 Registerfeld w hlt eines der acht Daten register als Ziel an Bit 8 6 Feld Operationsmode CMP B CMP W CMP L Operation 000 001 010 Dn lt ea gt Bit 5 0 Wenn die Effektive Adresse der Quelloperand ist sind die folgenden Adressierungsarten erlaubt Adr Art Mode Reg Adr Art Mode Reg Dn 000 R Dn xxx W 111 000 An 001 R An xxxX L 143 001 An 010 R An dl6 PC 111 010 An 011 R An d8 PC Xi 111 011 An 100 R An lt data gt 111 100 d16 An 101 R An Erl uterung siehe d8 An Xi 110 R An Kapitel 5 Adressierungsart An nicht
191. einer Sprungweite zwischen 128 und 126 sollten Sie mit einem S kennzeichnen denn nur dann werden Sie auch als kurze Befehle bersetzt 3 4 Das K rzel SP Stack pointer akzeptiert der Assembler nicht Schreiben Sie statt dessen A7 3 5 Zus tzlich gibt es noch die Befehle SAVEALL und LOADALL Sie sind Abk rzungen f r MOVEM L DO A6 A7 bzw MOVEM L A7 DO A 6 F r die LINE A Befehle stehen ebenfalls Mnemonics zur Verf gung A _INIT SA000 A_PUPIX SA001 A GEPIX A002 A LINE A003 A HOLIN A004 A RECT A005 A POLY A006 A BTBLT A007 A_TXBLT A008 A_SHMOU A009 A HICUR A00A A _TRMOU A00B A_UNSPR SA0O0C A_DRSPR SAOOD A_COPRF SA0O0E 4 Pseudobefehle Neben den eigentlichen Assemblerbefehlen k nnen Sie im Listing von weiteren Anweisungen Gebrauch machen 4 1 Bemerkungen m sse n mit einem Semikolon oder einem Bei inem Abstand von mehreren Sternchen beginnen Zeichen zu dem Ass mblerbefehl der selben Zeil k nnen Sie auch darau 68000 Assembler J Teepe f verzichten 381 C Mitgelieferte Programmdiskette 4 2 Der Befehl DC DC ist auch erlaubt definiert in Reih von Bytes Worten oder Langworten abh ngig von B W L Texte m ssen dabei mit einfachen oder doppelten Anf hrungszeichen eingeschlossen werden Bei W und L werden dies ggf mit einem Nullbyte erg nzt s
192. elle Ziel Syntax x entspricht B Wr L Beschreibung Die Konstante die im Speicher unmittelbar dem Befehlswort folgt wird bin r vom Zieloperand lt ea gt subtrahiert und das Condition Code Register wird entsprechend gesetzt Der Zieloperand wird nicht ge ndert Die Gr e der Konstante entspricht der Operandgr e aa a E Ate hei Condition Code Register N Aort N cr H A C wird geset rd sonst V wird geset rd son Z wird ges rd son wenn ein Leihen generiert wird ur ckgesetzt wenn ein berlauf generiert wird ur ckgesetzt e wenn das Ergebnis gleich Null ist ur ckgesetzt N wird gesetzt wenn das Ergebnis negativ ist rd sonst zur ckgesetzt X bleibt unver ndert N N CkER ER oT a a a i A 68000 Assembler J Teepe 211 B Befehls bersicht r Vergleiche Konstante CMPI compare immediate Ill Format des Befehlswortes LZ 14 73 ek 14 109 8 7 6 D 4 3 2 1 O 0101010 117110 0 Gr e Effektive Adress ode Register 1 Argumentwort Wort Daten bzw Byte Daten Ye Rp ZB DE EN 2 Argumentwort Langwort Daten einschlie lich voriges Wort Bit 7 6 Gr e Feld Aufbau der 00 Byte Befehl CMPI B Argumentw rter 01 Wort Befehl CMPI W siehe Kap 3 8 10 Langwort Befehl CMPI L
193. embler Syntax d8 An Xi 110 R An d8 An Dn W oder d8 An Dn W d8 An Dn L oder d8 An Dn L d8 An An W oder d8 An An W Vorgang d8 An An L oder d8 An An L Adresse Operand d8 ist ein 8 Bit Wort An Xi d8 n in 0 7 E ADRESSREGISTER INDIREKTE ADRESSIERUNG MIT INDEX d8 An Xi 31 D Adressregister An SPEICHER ADRESSE y 0 Adressdifferenz d8 gt vy 31 D Index Register Xi gt SE AA Q Speicherstell OPERAND 72 J Teepe 68000 Assembler 5 Adressierungsarten von Befehlen Assembler Syntax Adr Art Mode Re d8 An Dn W oder d8 An Dn W d8 An Xi 110 R An d8 An Dn L oder d8 An Dn L d8 An An W oder Op An An WI d8 An An L oder Op An An Li Vorgang d8 ist ein 8 Bit Wort Adresse Operand n in 0 7 An Xi d8 Diese Adressierungsmethode erm glicht es uns die Adresse des Operanden ber gleich drei Parameter anzuw hlen d8 eine Konstante Diese Konstante hat eine Gr e von 7 Bit plus Vorzeichen An ein Adressregister Xi den Inhalt ines zweiten Daten oder Adress Registers das Index Register Dem Index Register wird eine L ngen Angabe mitgegeben So bedeutet A2 L da s mtliche Bytes des Adressregisters ber cksichtigt werden DO W bedeutet da nur die niederwertigen Bits 0 15 des Registers DO ber cksichtigt werden wobei Bit 15 als Vorzeichenbit genommen wird
194. en Bits weglassen ir D RFEN das aber nur machen wenn alle hochwertigen Bits den gleichen Wert haben wie das neue Vorzeichenbit BEISPIEL 1 Bri Torresek 9876543210 1111111111111100 Bin rzahl 4 in Wort 11111100 zum Byte A neues Vorzeichenbit Diese Umwandlung ist zul ssig weil alle Bits auf den Positionen F 8 den gleichen Wert haben wie das neue Vorzeichenbit BEISPIEL 2 Bin rzahl 11011011011011011011011011011011 in Langwort DECKER 1011011 zum Byte neues Vorzeichenbit Diese Umwandlung ist nicht zul ssig weil die mit gekennzeichneten Bits nicht alle den gleichen Wert haben wie das neue Vorzeichenbit Logisch denn der Wert im Langwort ist in einem Byte berhaupt nicht darstellbar 42 J Teepe 68000 Assembler 3 Datenstrukturen 3 6 ADRESSIERUNG VON BCD ZIFFERN 15 14 13 12 11 10 9 78 7 6 5 4 3 2 1 p 1000 BCD 0 BCD 1 BCD 2 BCD 3 MSD LSD 1000 DCD 4 BCD 5 BCD 6 BCD 7 do sde ila EE Bild 3 9 Adressierung nachfolgender BCD Ziffern 16 Bit Und hier sieht man da auch bei BCD zZiffern die hochwertigsten Teile an der niedrigsten Adresse abgespeichert werden Der 68000 benutzt diese Adressierung bei den Befehlen ABCD SBCD und NBCD siehe An
195. en Wert des X Registers o Zum Schlu erh lt das X Register den Wert der vorher im hochwertigen Bit war F r die Gesamtzahl der Rotationsschritte siehe weiter unten 328 J Teepe 68000 Assembler B Befehls bersicht Rotiere links mit Extend Bit Fer rotate left with extend ROXL L gt s ey e A v E lt lt Operand lt X lt J Nee ER MSB LSB Es gibt drei Befehlsformen Oo Der Befehl ROXL x lt data gt Dn x entspricht B W L rotiert ein Datenregister nach links um soviele Positionen wie in der Konstante angegeben ist Die Maximalzahl ist acht o Der Befehl ROXL x Dn Dn x entspricht B W L rotiert ein Datenregister nach links Ein zweites Datenregister legt fest um wieviele Positionen rotiert wird 6 Der Befehl ROXL lt ea gt rotiert in Speicherstell 16 Bit um eine Position nach links 68000 Assembler J Teepe 329 B Befehls bersicht rm Rotiere links mit Extend Bit ROXL rotate left with extend IT ee en E EE RR EM Condition Code Register C erh lt den Wert der zuletzt aus dem hochwertigen Bit des Operanden herausgeschoben wurde Jird zur ckgesetzt beim Rotieren um Null Position V wird zur ckgesetzt Z wird gesetzt wenn das Ergebnis gleich Null ist t zur ckgesetzt N wird gesetzt wenn das hochwertige Bit d
196. enfolge Bit EOR CMPM AND ULU BCD ULS ADD TL 13 15 Y vY YV YV YV Y V YV VY V YV YV YV V Vv Yy x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x ADDA ADDX ASR ASL LSR LSL ROXR ROXL ROR ROL ASR ASL LSR LSL ROXR ROXL ROR ROL Exception 11 x x J Teepe 68000 Assembler 392 F Stichwortverzeichnis Anhang F Stichwortverzeichnis 2 Complement 3 9 ASCII Tabelle 387 ASD see 64 ASR um ar AN SEIN 69 AO BIS Ab au 23 24 Assembler 9 18 AT ann ae 23 25 66 69 Axxx Befehl 117 ABER ink 139 Autovektor Ablage ur 2 aa 96 Interrupt 120 ADD Were ne 141 ADDA aa sa 145 RRE Su 147 BEE ea eye 174 ADDO Huayo Sande 149 Bean EE 174 ADDX deat ee 151 BCD Befehle 54 Adressbereich 31 BEDEZAhl ea 33 Adresse Effektive 58 BCD Ziffern 43 Adresse ungerade 112 BEHG eisen 181 Adressfehler 105 BEER sepa ect nik Mani ebe Ab 86 Adressierung 59 bis 93 BES Er se ee ara 74 von BCD Ziffern 43 Befehle von Bytes 34 37 privilegierte 22 von Langw rtern 36 37 Befehlskode in numeri VON SELLNgS rn sch
197. er C wird zur ckgesetz V wird zur ckgesetzt Z wird gesetzt wenn das Ergebnis gleich Null ist Wird sonst zur ckgesetz N wird gesetzt wenn das Wird sonst zur ckgesetz X bleibt unver ndert EE zc rgebnis negativ ist A Di S 68000 Assembler J Teepe 291 B Befehls bersicht rm Multipliziere mit Vorzeichen MULS signed multiply IL Format des Befehlswortes k 4 5 14 a a E 8 ie 1 TO i 07 Daten Register 7 6 5 4 3 2 1 0_ E WEIS Du Effektive Adress Mode Register Bit 11 9 Registerfeld w hlt eines der acht Daten register als Zieloperand an Bit 5 0 w hlt die Effektive Adresse des Quell operanden an Die folgenden Adressierungsarten sind erlaubt Adr Art Mode Reg Adr ATE Mode Re Dn 000 R Dn XXX W 111 000 An nicht erlaubt xxx L k Arte 001 An 010 R An d16 PC 111 010 An 011 R An d8 PC Xi 111 011 An 100 R An lt data gt 111 100 d16 An 101 R An Erl uterung siehe d8 An Xi 110 R An Kapitel 5 Benutzen Sie MULU wenn das Vorzeichen bei der Multiplikation nicht ber cksichtigt werden soll Siehe auch DIVS DIVU 292 J Teepe 68000 Assembler B Befehls bersicht Multipliziere ohne Vorzeichen rm unsigned multiply MULU L Quelle
198. er ndert bei Schieben um Null Positionen 166 J Teepe 68000 Assembler B Befehls bersicht Arithmetisches Schieben nach links MM 1 arithmetic shift left As IL Assembler Syntax ASL x Dn Dn ASL x lt data gt Dn x entspricht B W L Dazu geh rt das folgende Format des Befehlswortes 15 L 73 12 TI EE 9 8 7 6 5 4 3 2 1 Q E EN EE ES A WEG At z hl 1 Gr e 1 0 0 Daten Register Register Bit 11 9 zZ hlregister Feld Wenn i 0 Die Bits 11 9 geben an um wieviele Positionen die Bits des Zieloperanden nach links verschoben werden Dabei entspricht 001 einer Position usw bis 111 sieben Positionen entspricht 000 entspricht aber acht Positionen Konstante Wenn i 1 Die Bits 11 9 w hlen ein Datenregister Dn an Die niederwertigen 6 Bits des Datenregisters Dn geben an um wieviele Positionen die Bits des Zieloperanden nach links verschoben werden Bit 7 6 Gr e Feld 00 Byte Befehl ASL B 01 Vort Befehl ASL W 10 Langwort Befehl ASL W Bit 5 i Feld 0 Die Bits 11 9 beziehen sich auf eine Konstante 1 Die Bits 11 9 beziehen sich auf ein Datenregister Bit 2 0 Register Feld w hlt ein Datenregister als Zieloperand an 68000 Assembler J Teepe 167 B Befehls bersicht Arithmetisch
199. er Reihenfolg 389 von W rtern 35 37 Befehls bersicht 52 von Zeichenketten Befehls bersicht Adressierungsarten 57 Stack ke ege 103 Adressierungsfehler 105 Befehlswort 46 Adressregister 23 24 Behandlungsroutinen AND en 154 Exception 122 ANDT ee eh 158 SIE 174 ANDI zum CCR 160 Betriebssystem 21 ANDI ZUM SR sehe 162 Bezeichnung von Anwender Interrupt 12 Datentypen 33 Architektur swa 2 BER aa ee a 174 Argumentwort 46 BET siert 174 Arten von Daten 33 BHT au as rt rare 174 68000 Assembler J Teepe 393 F Stichwortverzeichnis Bin rzahlen Umwandlung 41 BEE cr ae cn 33 Bit Befehle 54 Bit Numerierung 32 SEET 174 Bluse a ne et 174 BET nen see 74 BMI ser 74 BNE duer ae ei 74 EE 174 BRA 2er lee 174 Breakpoint sees 13 BSET cead nenne a e 191 BSR ra se EE er ER 196 BIST vum n 198 EE EE 13 Bus Fehler 12 BVG nen ee 174 BVS ee 174 EE 33 E Mess 28 Carry BEG ren Are 28 CER Keck 23 26 27 28 CHR Der 105 203 GIER kee es 205 Sul en 207 EMPR E E ee 209 CMEI wig da 2 211 E Gd GE 213 COMPILER ana 10 Condition Code Register 23 26 27 28 394 DO Bis DI ara 23 24 Daten Ablage 96 Daten Kopierbefehl 52 Datenarten
200. erand ein Adressregister ist Adressierungsart An wird das Condition Code Register nicht ge ndert 360 J Teepe 68000 Assembler B Befehls bersicht Subtrahiere Konstante quick 1 8 r subtract quick suBQ I Format des Befehlswortes 15 14 732 ek Ek 760029 8 7 6 5 4 3 2 1 O 0I1 JI0 I1 Daten ON Gr e Effektive Adress Mode Register Bit 11 9 Datenfeld 000 entspricht Konstante 1 001 entspricht Konstante 2 usw bis 111 entspricht Konstante Bit 7 6 Gr e Feld 00 Byte Befehl SUBQ B 01 Wort Befehl SUBO W Langwort Befehl SUBO L oO Di Bit 5 0 Die Effektive Adresse w hlt den Zieloperand an Die folgenden Adressierungsarten sind erlaubt Adr Art Mode Reg Adr Art Mode Re Dn 000 R Dn xxx W 111 000 An Zi 001 R An xxx L 11 001 An 010 R An dl6 PC nicht erlaubt An 011 R An d8 PC Xi Jnicht erlaubt An 100 R An lt data gt nicht erlaubt d16 An 101 R An Erl uterung siehe d8 An Xi 110 R An Kapitel 5 Adressierungsart An nicht f r Byte Befehle erlaubt Benutzen Sie SUBI wenn die Konstante au erhalb des Bereiches 1 8 liegt Siehe auch SBCD SUB SUBA SUBX ADDO NEG 68000 Assembler J Teepe 361 B
201. erand wird mit dem gleichen Vorzeichen auf 32 Bit erweitert und vom Ziel Adressregister werden s mtliche 32 Bits angewendet 111 SUBA L Langwort Befehl Bit 5 0 Die Effektive Adresse w hlt den Quell operand an Alle Adressierungsarten sind erlaub Adr Art Mode Req Adr Art Mode Re Dn 000 R Dn xxx W 111 000 An 001 R An xxX L 111 001 An 010 R An al6 PC 111 010 An 011 R An d8 PC Xi 111 011 An 100 R An lt data gt 111 100 d16 An 101 R An Erl uterung siehe d8 An Xi 110 R An Kapitel 5 Siehe auch ADDA SBCD SUBA SUBI SUBQ SUBX 68000 Assembler J Teepe 357 B Befehls bersicht Iesel Subtrahiere Konstante SUBI subtract immediate IL Ziel Konstante gt Ziel Operandgr e SUBI B Byte 8 Bit SUB d dort 16 Bit SUB Langwort 32 Bit Assembler SUBI x lt data gt lt ea gt Quelle Ziel Syntax x entspricht B W L Beschreibung Die Konstante die im Speicher unmittelbar dem Befehlswort folgt wird bin r vom Zieloperand lt ea gt subtrahiert Das Ergebnis wird im Zieloperand lt ea gt abgespeichert Die Gr e der Konstante entspricht der Operandgr e ee ee En Zu ee Condition Code Register as Ali a ER C wird gese
202. erausgeschoben wurde ird zur ckgesetzt bei Schieben um Null Positione V wird zur ckgesetzt Z wird gesetzt wenn das Ergebnis gleich Null ist rd sonst zur ckgesetzt e 8 S N wird gesetzt wenn das hochwertige Bit des Ergebnisses gesetzt ist rd sonst zur ckgesetzt X erh lt den Wert der zuletzt aus dem hochwertigen Bit des Operanden herausgeschoben wurde Bleibt unver ndert bei Schieben um Null Positionen 254 J Teepe 68000 Assembler B Befehls bersicht Logisches Schieben nach links rm logical shift left LsL IL Co Assembler Syntax L x Dn Dn LSL x lt data gt Dn x entspricht B W L Dazu geh rt das folgende Format des Befehlswortes 15 14 13 1712 11 710 9 8 7 6 5 4 3 2 1 0 tl i a ig Z hl 1 Gr e ilIO I 1 Daten Register Register Bit 11 9 Z hlregister Feld Wenn i 0 Die Bits 11 9 geben an um wieviele Positionen die Bits des Zieloperanden nach links verschoben werden Dabei entspricht 001 einer Position usw bis 111 sieben Positionen entspricht 000 entspricht aber acht Positionen Konstante Wenn i 1 Die Bits 11 9 w hlen ein Datenregister Dn an Die niederwertigen 6 Bits des Datenregisters Dn geben an um wieviele Positionen die Bits des Zieloperanden nach links verschoben werden
203. erbefehl 56 TB Aue it 30 107 TAS An ae 366 Test M glichkeiten 13 TO DOD ae nu 95 e peter uni 95 Traes BiE nass 30 Trace Exception 116 F Stichwortverzeichnis TRAP Exception 21 TRAP Ste 05 368 TRAPV Sn a 05 370 IST arena ER 68000 Assembler J Teepe berlauf Bit 28 Umbiegen von Exceptions 123 Umwandlung von Bin rzahlen 41 UND srl 154 Ungerade Adress 112 UNEK EE 372 User Byte 23 26 27 28 User Mode 21 User Stack Pointer ed 23 25 66 69 96 USP ae 23 25 66 69 96 VeBit nee 28 Verletzung Privilegium 16 Verzeichnis der Fachbegriffe 131 Vorzeichen 2 022 884 38 eh A A a 33 RB Weer See ee E Se 29 ENEE 29 Zeichenketten 44 SEELEN EEN 29 Zuordnung von Exceptions 109 Zweierkomplement 39 397 F Stichwortverzeichnis 398 J Teepe 68000 Assembler ber die 2 Auflage dieses Buches ber die 2 Auflage dieses Buches Seit der Erstauflage von 1989 hat sich in der Computerwelt vieles ver ndert Waren damals die 16 Bit Prozessoren ziemlich neu so sind es jetzt 2010 die 64 Bit Prozessoren Die Notwendigkeit in Assembler zu programmieren ist inzwischen kleiner geworden inerseits weil die Prozessoren so viel schneller geworden sind da die Rechenzeit keine Rolle mehr spielt andererseits weil die Unterst t zung et
204. erlaubt d16 An 101 R An Erl uterung siehe d8 An Xi 110 R An Kapitel 5 263 B Befehls bersicht Iesel Kopiere Daten Move move date L Bit 5 0 Effektiv Adress des Quelloperanden folgenden Adressierungsarten sind erlaubt Adr Art Mode Reg Adr Art Mode Re Dn 000 R Dn xXxx W 111 000 An 001 R An xxxX L 1714 001 An 010 R An dl6 PC 111 010 An 011 R An d8 PC Xi 111 011 An 100 R An lt data gt 111 100 d16 An 101 R An Erl uterung siehe d8 An Xi 110 R An Kapitel 5 Benutzen Sie 264 MOVEA MOVEI oder MOVEO MOVEP EXG MOVE zum CCR MOVE vom SR MOVE zum SR MOVE USP wW E Befehle erlaubt der Adressierungsart An nicht f r Zi Byte loperand ein Adressregister ist lloperand eine Sie nur auf geraden oder ungeraden Adressen zugreifen Sie Daten vertauschen wenn der Qu Konstante ist wenn Wenn m chten wenn Sie das wenn Sie das SI wenn Sie das SI wenn Sie das CCR ndern m chten R lesen m chten R ndern m chten USP lesen oder ndern m chten J Teepe 68000 Assembler B Befehls bersicht Kopiere zum Condition Code Register move to the Condition Code Register Quelle gt CCR F MOVE zum cr cl Quelle ziel des Que
205. ert von Bit 4 des Quell Operanden 68000 Assembler J Teepe 267 B Befehls bersicht Tr Kopiere zum Status Register Move move to the Status Register zum SR A Format des Befehlswortes 15 14 13 12 11 10 9 Sc 6 e 4 3 2 1 O D 7 241 097 0 10T Effektive Adress Mode Register Bit 5 0 Effektive Adresse des Quelloperanden Die E folgenden Adressierungsarten sind erlaubt Adr Art Mode Req Adr Art Mode Re Dn 000 R Dn xXxx W 114 000 An nicht erlaubt XXX L 111 001 An 010 R An dl6 PC 111 010 An 011 R An d8 PC Xi 111 011 An 100 R An lt data gt 11 100 d16 An 101 R An Erl uterung siehe d8 An Xi 110 R An Kapitel 5 Benutzen Sie T MOVE vom SR wenn Sie das CCR und oder das System Byte einlesen m chten Priviligierter Befehl T MOVE zum CCR wenn Sie nur das CCR ndern m chten Siehe auch MOVE MOVEA MOVE USP T 268 J Teepe 68000 Assembler B Befehls bersicht Kopiere vom Status Register r move from the Status Register Move vom SR L SR gt Ziel Operandgr e Wort 16 Bit Assembler MOVE SR lt ea gt Quelle Ziel Syntax Beschreibung Der Inhalt des Status Registers wird in den Ziel Operand kopiert Die Operandgr e ist ei
206. erter Befehl zum CCR ll Wenn Supervisor Mode Konstante SR gt SR Wenn User Mode Ausl sung Exception 8 Kap 6 Verletzung Privilegium Operandgr e Wort 16 Bit Assembler ORI f lt data gt SR Quelle Ziel Syntax Beschreibung emm der Prozessor sich im Supervisor Mode befindet wird die Konstante die im Speicher unmittelbar dem Befehlswort folgt mit dem Status Register bitweise Exclusive ODER verkn pft Das Ergebnis wird im Status Register abgespeichert Wenn der Prozessor dagegen im User Mode ist wird eine Exception ausgel st Das Status Register wird in Kap 2 beschrieben Die Operandgr e ist ein Wort 16 Bit 68000 Assembler J Teepe 237 B Befehls bersicht Exclusives ODER mit Konstante Pen EORI exclusive or immediate zum CCR privilegierter Befehl ll ER A el Condition Code Register len Sfr A C ndert sich wenn Bit 0 der Konstante gesetzt ist Bleibt sonst unver ndert V ndert sich wenn Bit 1 der Konstante gesetzt ist Bleibt sonst unver ndert z ndert sich wenn Bit 2 der Konstante gesetzt ist Bleibt sonst unver ndert N ndert sich wenn Bit 3 der Konstante gesetzt ist Bleibt sonst unver ndert X ndert sich wenn Bit 4 der Konstante gesetzt ist Bleibt sonst unver ndert
207. ertig 1006 niederwertig 286 J Teepe 68000 Assembler B Befehls bersicht Eingabe Ausgabe zur von Peripherie r move periperal data MOVEP Ill BEISPIEL 2 3 16 Bit Daten bertragung von einer G ngeraden Speicheradresse zum Datenregister MOVEP W 2001 Di Byte Organisation im Speicher 15 8 7 0 2000 hochwertig E E 2002 niederwertig E N Byte Organisation im Register D2 21 24 23 16 15 8 7 O hochwertig niederwertig alien E ET Condition Code Register keine nderung 68000 Assembler J Teepe 287 B Befehls bersicht Eingabe Ausgabe zur von Peripherie MovEP move periperal data Ill Format des Befehlswortes T5 14 213 12 214 7027 29 8 Moore E EE EE EOE E a O Daten Operations 0 0 1 Adress l l l Register Mode l l Register Adress differenz dE Bit 11 9 Datenregisterfeld spezifiziert von oder zu welchem Datenregister die Daten bertragen werden sollen Bit 8 6 Feld Operationsmode 100 MOVEP W d16 An Dn 16 Bit bertragung Speicher gt Register 101 MOVEP L di6 An Dn 32 Bit bertragung Speicher gt Register 10 MOVEP W Dn d16 An 16 Bit bertragung Register gt Speicher T MOVEP L Dn d16 An 32 Bit bertragung Register gt Speicher
208. es Ergebnisses gesetzt ist rd sonst zur ckgesetzt X erh lt den Wert der zuletzt aus dem hochwertigen Bit des Operanden herausgeschoben wurde Bleibt unver ndert bei Schieben um Null Positionen e e ird sons e s s 330 J Teepe 68000 Assembler B Befehls bersicht Rotiere links mit Extend Bit Ir 5 1 rotate left with extend ROXL IL Assembler Syntax ROXL x Dn Dn ROXL x lt data gt Dn x entspricht B W L Dazu geh rt das folgende Format des Befehlswortes 15 14 13 1712 11 710 9 8 7 6 5 4 3 2 1 0 TE OEN E S 10 O Z hl 1 I Gr e i Tar O Daten Register Register Bit 11 9 Z hlregister Feld Wenn i 0 Die Bits 11 9 geben an um wieviele Positionen die Bits des Zieloperanden nach links rotiert werden Dabei entspricht 001 einer Position usw bis 111 sieben Positionen entspricht 000 entspricht aber acht Positionen Konstante Wenn i 1 Die Bits 11 9 w hlen ein Datenregister Dn an Die niederwertigen 6 Bits des Datenregisters Dn geben an um wieviele Positionen die Bits des Zieloperanden nach links rotiert werden Hi Bit 7 6 Gr e Feld 00 Byte Befehl ROXL B 01 Wort Befehl ROXL W 10 Langwort Befehl ROXL W Bit 5 i Feld 0 Die Bits 11 9 beziehen sich auf eine Ko
209. es Bit von Dn gepr ft wird Es werden nur die Bits 0 4 der Bitzahl benutzt Es wird also Bit Bitzahl mod 32 von Dn gepr ft 68000 Assembler J Teepe 187 B Befehls bersicht Pr fe Bit und l sche L BCLR test a bit and clear Ill Assembler Syntax BCLR L Dp Dn Dazu geh rt das folgende Format des Befehlswortes 152 14 73 72 EK VO 09 8 7 6 5 4 3 2 i 0 101101 0 0O Register 1 1 0110 0 O Register Dp Dn Bit 11 9 Feld Datenregister Dp gibt an welches Bit von Dn gepr ft wird Es werden nur die Bits 0 4 von Dp benutzt Es wird also Bit Dp mod 32 von Dn gepr ft Bit 2 0 Feld Datenregister Dn hlt das Datenregister mit dem Operand an Hierin befindet sich das Bit das gepr ft werden soll 188 J Teepe 68000 Assembler Pr fe Bit und l sche test a bit and clear B Befehls bersicht IT BCLR IL Assembler Syntax BCLR B lt data gt lt ea gt Dazu geh rt das folgende Format des Befehlswortes 11 10 9 8 1 0 0 0 4 3 2 1 Effektive Adress ode t di Effektiv Register Bitzahl Adress w h des Operanden gi genden Adressierungsarten sind erlaubt Adr Art Mode Reg Adr Art Mode Reg
210. es Schieben nach links As arithmetic shift left IL Assembler Syntax ASL lt ea gt Die 16 Bits des angew hlten Speicherwortes werden um eine Position nach links verschoben Dazu geh rt das folgende Format des Befehlswortes 15 14 3 12 11 10 9 8 7 6 5 4 3 2 1 Q GE EE enee Mode Register Bit 5 0 w hlt die Effektive Adress des Quell operanden an Die folgenden Adressierungsarten sind erlaubt Adr Art Mode Reg Adr Art Mode Req Dn nicht erlaubt XXX W 111 000 An nicht erlaubt xxx L 113 001 An 010 R An dl16 PC nicht erlaubt An 011 R An d8 PC Xi IJnicht erlaubt An 100 R An lt data gt nicht erlaubt d16 An 101 R An Erl uterung siehe d8 An Xi 110 R An Kapitel 5 F r die Adressierungsart Dn siehe auf der vorherigen Seite Benutzen Sie ASR wenn nach rechts geschoben werden soll LSL wenn das V Bit zur ckgesetzt werden soll Siehe auch LSR ROL ROR ROXL ROXR SWAP 168 J Teepe 68000 Assembler B Befehls bersicht Arithmetisches Schieben nach rechts Pr arithmetic shift right ASR DL Ziel verschoben durch lt Zahl gt gt Ziel Operandgr e ASR B Byte 8 Bit AGR MN Wort 16 Bit R R ASR L Langwort 32 Bit AS Wort 16 Bit Assembler ASR x Dn Dn Quelle Ziel Sy
211. esetzt SGE ist f r Bin rzahlen mit Vorzeichen gedacht 68000 Assembler J Teepe 345 B Befehls bersicht pi sce IL SGT SHI SLE 346 Setze lt ea gt wenn gr er Setze Byte aufgrund Bedingung set according to condition Set lt ea gt on Greater Than Das Byte in lt ea gt wird gesetzt wenn o das M Bit und das V Bit gesetzt sind und das Z Bit zur ckgesetzt ist oder 6 das N Bit das V Bit und das Z Bit alle zur ckgesetzt sind Sonst wird das Byte in lt ea gt zur ckgesetzt SGT ist f r Bin rzahlen mit Vorzeichen gedacht ist sonst hnlich SHI Setze lt ea gt wenn h her Set lt ea gt on Higher than Das Byte i und das Z n lt ea gt wird gesetzt Bit beide wird das SGE ist r ist sonst hnlich SGT ur ckgesetzt Byte in lt ea gt zur ckgesetzt Bin rzahlen ohne Vorzeichen gedacht wenn das sind Setze lt ea gt wenn kleiner oder gleich Set lt ea gt on Less than or Equal C Bit Sonst CF CH Das Byte in lt ea gt wird gesetzt wenn O das Z Bit gesetzt ist oder OG das N Bit gesetzt und das V Bit zur ckgesetzt ist oder O das N Bit zur ckgesetzt und das V Bit gesetzt ist Sonst wird das Byte in lt ea gt zur ckgesetzt SLE ist f r Bin rzahlen mit Vorzeichen gedacht ist sonst hnli
212. etzt sind und ist springe wenn h her Branch on Higher than Es wird gesprungen wenn das C Bit und das Z Bit beide zur ckgesetzt sind BGE ist f r Bin rzahlen ohne Vorzeichen gedacht ist sonst hnlich BGT J Teepe 68000 Assembler Springe bedingt branch conditionally B Befehls bersicht 71 Bee IL BLE springe wenn kleiner oder gleich Branch on Less than or Egual Es wird gesprungen wenn O O O BLE das Z Bit gesetzt ist oder das N Bit gesetzt und das V Bit zur ckgesetzt ist oder Bit zur ckgesetzt gesetzt ist ce r Bin rzahlen mit das ist N und das V Bit Vorzeichen gedacht ist sonst hnlich BLS BLS springe wenn niedriger oder gleich Branch on Lower or Same Es wird gesprungen BLS ist E oder beide gesetzt sind wenn das C Bit das Z Bit r Bin rzahlen ohne Vorzeichen gedacht ist sonst hnlich BLE BLT springe wenn kleiner Branch on Less Than O O BET das N zur ckgesetzt das N gesetzt ist ist ce r Bin rzahlen mit Es wird gesprungen wenn Bit gesetzt und das V Bit oder Bit zur ckgesetzt und das V Bit Vorzeichen gedacht BMI springe wenn Minus Branch on Minus BM Es wird ge
213. euer DERehLEe ee 54 Programmz hler 23 25 PUSH 22 ae 95 Quotient 223 227 396 Register 22 23 58 Reihenfolge der Parameter 51 Reserviert Exception 0 RESET Befehl 317 RESET Exception 111 RESE areas 223 227 ROL u near 318 ROR ein ae sat 323 Rotierbefehle 54 e 328 ROXB un Ss 333 RTE u 107 338 RIR na 339 RES were ana ers 340 R ckkehradresse 99 S BEE Wells 30 107 SBOD Can 341 SEE A 343 SEC re Sera en ee 343 Schiebebefehle 54 SEES re ee 343 SEO Ar he 343 EK Se Dee 343 SGEE nah 343 SCH een 343 DEI Seas enden 343 SLE ade sea 343 SLS yet nee 343 SET seele 343 SME ee een 343 SNE ee 343 SPE waste 343 Sprachen h here 9 SR aan 23 26 SSP sebda 23 25 66 69 96 ST ur Barren 343 J Teepe 68000 Assembler EE ba ah ee 95 Stack Befehls bersicht 103 Stack Frame 250 373 Stack Pointer Shih 23 25 66 69 Stackfehler 101 Stapel gt Stack Status Register 23 26 30 STOP an ae as 350 SELINGS aa saure 44 SUB eh nee 352 SUBA sruse 0 won 356 SUBE Ga Sem as Ecg 358 SUBO area een 360 SUBX un wesen eu 362 Supervisor Bit 30 Supervisor Mode 21 SVC ai en Ser ie 343 SUSE ee lege a ne 343 SWAP niie E en rg 365 System Byte 23 26 27 30 System Stack Pointer ls re 23 25 66 69 96 System Steu
214. f der allerletzten verf gbaren Speicherstell ablegen m chten verursacht der zugriff auf einer nicht bestehenden Speicheradress einen Busfehler der einen Trap bewirkt Wenn Sie den Fehler nicht abfangen wird Ihr Programm abst rzen BEISPIEL 1 Der Befehl MOVEM W D2 D5 1000 speichert di ni derwertigen H lften der Register D2 und D5 auf den Adressen 1000 und 1002 ab Bei einer Argumentl nge von 2 Bytes liegt die n chste Adresse 2 Bytes weiter Der Befehl MOVEM W 1000 D2 D5 ladet die niederwertigen H lften der Register D2 und D5 mit den Inhalten der Speicheradressen 1000 und 1002 Er bewirkt f r di niederwertigen Register h lften von D2 und D5 genau das entgegengesetzte von dem Befehl rsten S1004 statt 276 Es findet ein extra Speicherzugriff auf der Adresse J Teepe 68000 Assembler Befehls bersicht Kopiere mehrere Register rm move multiple registers MOvEM Ill BEISPIEL 2 Der Befehl MOVEM L DO D7 AQ A7 2000 legt Kopien von allen Registern im Speicher ab Der Speicherbereich ist usammenh ngend Das erste Register wird auf der Adresse 2000 abgelegt Weil MOVEM L eine Argumentl nge von 4 Bytes hat wird das zweite Register das in der Liste enthalten ist auf der Adresse 2
215. gger kann der Befehl NOP benutzt werden um ander Befehl wegzunehmen oder um als Platzhalter f r zuk nftige Befehle zu dienen Bei laufzeitkritischen Programmen k nnen NOPs f r eine Feinjustage der Laufzeit benutzt werden L ngere Verz gerungen erh lt man mit Z hlschleifen oder durch Ausnutzung der Clock Interrupts Condition Code Register bleibt unver ndert 68000 Assembler J Teepe 303 B Befehls bersicht Ip Logisches Komplement NoT logical complement IL Ziel gt Ziel Operandgr e NOT B Byte 8 Bit NOT W vort 16 Bit NOT L Langwort 32 Bit Assembler NOT x lt ea gt Syntax x entspricht B W L Beschreibung Vom Zieloperand wird das Einerkomplement genommen und im Zieloperand abgespeichert Das Einerkomplement wird auch als NICHT Verkn pfung bezeichnet Zur Erinnerung die Nicht Verkn pfungen 0 1 1 0 Das bedeutet konkret das jedes gesetztes Bit zur ckgesetzt und jedes zur ckgesetztes Bit gesetzt wird Fos Be ae a0 Condition Code Register C wird zur ckgesetzt V wird zur ckgesetzt Z wird gesetzt wenn das Ergebnis gleich Null ist rd sonst zur ckgesetzt N wird gesetzt wenn das hochwertige Bit des Ergebnisses gesetzt ist zeigt ein negatives Ergebnis Wird sonst zur ckgesetzt X bleibt unver ndert
216. gister Dp Gibt an welches Bit des Operanden gepr ft wird Es werden nur die Bits 0 2 dieses Registers benutzt Es wird also Bit Bit Zahl mod 8 des Operanden gepr ft Bit 5 0 w hlt die Effektive Adresse des Operanden an Die folgenden Adressierungsarten sind erlaubt Adr Art Mode Reg Adr Art Mode Req Dn nicht erlaubt xXxx W 111 000 An nicht erlaubt XXX L 111 001 An 010 R An d16 PC 111 010 An 011 R An d8 PC Xi 111 011 An 100 R An lt data gt 11 100 d16 An 101 R An Erl uterung siehe d8 An Xi 110 R An Kapitel 5 Benutzen Sie wenn das angew hlte Bit BTST nur getestet werden soll BCLR getestet und gel scht werden soll BSET getestet und gesetzt werden soll 68000 Assembler J Teepe 185 B Befehls bersicht r Pr fe Bit und l sche est a bit and clear BCLR test a bit and cl Ill angew hltes Bit des Operanden gt Z Bit 0 gt angew hltes Bit des Operanden Operandgr e BCLR B Byte 8 Bit BCLR L Langwort 32 Bit Assembler Syntax BCLR lt data gt Dn BCLR Dp Dn BCLR B lt data gt lt ea gt BCLR B Dp lt ea gt Bit Zeiger Operand Beschreibung Mit BCLR k nnen Sie di inzelnen Bits des Operanden direkt abfragen Ergebnis
217. halt abgespeichert Mit diesem Befehl werden sie angezeigt PMREG Immer wenn sich der Rechner wieder inmal aufge h ngt hat werden seine letzten Registerinhalte so abgespeichert da diese Information nach einem Reset erhalten bleiben Eben diese Wert igt der Befehl an QUIT Hiermit verlassen Si den Assembler und gelangen zur ck zum Desktop 3 Die Assemblerbefehl lie schon gesagt ntsprechen di Befehl im gro en und ganzen den allgemeinen Regeln Einige Besonderheiten 3 1 Der Assembler velangt klar formulierte Befehl Einige Beispiele Schreiben Sie ADDA A0 Al statt ADD A0 A1 CMPI 5 Al statt CMP 5 Al usw MOVEO verwendet er auch nur dann wenn es im Listing gew nscht wird 380 J Teepe 68000 Assembler C Mitgelieferte Programmdiskette 3 2 Die Wortbreite wird wie blich durch Anh ngen von B W oder L an den Befehl gekennzeichnet enn nur eine Breit rlaubt ist oder W gew nscht ist k nnen Sie darauf auch verzichten Bei der Adressierung Adressregister indirekt mit Index und Distanz m ssen Sie jedoch die Verarbeitungsbreite angeben z B 0 A0O DO W 3 3 Kurze Branch Befehle mit
218. hang B Und wie rechnet man nun mit BCD Ziffern F r jede BCD Ziffer stehen 4 Bit zur Verf gung Die g ltigen Werte innerhalb einer BCD Ziffer sind 50 59 di den dezimalen ziffern 0 bis 9 entsprechen Die Werte A SF sind nicht zugelassen So erh lt die dezimale Zahl 987654 gem Bild 3 9 die folgenden Werte BCD Ziffer 0 1 2 3 4 5 6 7 Inhalt 0 0 9 8 EN 6 5 4 Inhalt bin r 0000 0000 1001 1000 0111 0110 0101 0100 Dagegen entspricht die dezimale Zahl 987654 dem Hex Wert F1206 der als Langwort siehe Bild 3 8 ganz anders abgespeichert wird 0000 0000 0000 1111 000F 0001 0010 0000 0110 51206 68000 Assembler J Teepe 43 3 Datenstrukturen Die L nge einer beliebig festgelegt werden Vorteil bin ren Ru vom zahlen dungsfehler b Rechnen ist mit BCD Zahl BCD Zahlen kann vom Programmierer da vermied bei statt mit nen hifa katio Multipli werden nach Ko verwende vertierungen Nachteile Rechenzeit 3 7 ADR ESS Ein an der h c 6800 e Vorgabe sser cem Algoritmus zu und von durchgef hrt werden Z n Auch ichenketten k nne N k n fac je nen her in und ob ein St hsten Adresse Programmierer
219. hbegriffe Logische Befehle 53 Verzeichnis der 131 ES Bas A a e E 252 Falscher Interrupt 119 BSR nn DE 257 Fehlerkode 112 113 Fxxx Befehl 17 Maschinenkode 8 9 Mitgelieferte Programm H here Sprachen 9 diskette 19 375 Mode euren merk 58 MOVE ae 262 BIER re 30 MOVE zum CCR 265 EGAL 105 114 243 MOVE zum SR 267 Illegaler Befehl 114 MOVE vom SR 269 Inhaltsverzeichnis 3 MOVE USP Aachen 271 Initialisiert nicht MOVEA sans 2713 Exception 118 MOVEM za 275 Integer arithmetische MOVERS Ae kee 282 Befehle 53 MOVEO ae 289 INterr pe ai 104 MUGS eege na 2 91 Interrupt Anwender 121 MULU u 293 Interrupt falscher 119 Interrupt Maske 30 107 68000 Assembler J Teepe 395 F Stichwortverzeichnis NABET eat 29 NBED sad ie ken 295 NEG ung e A de Si Ee aiaia 298 Negativ nen 38 Negative Bit 29 NEE nd 300 NICHT ae sanieren 304 Nicht initialisiert Exception 118 ot EE 303 NOT 2 2a nase 304 Numerische Reihenfolg Befehlskode 389 ODER a nee 306 OR zu ae 306 ORD ehesten 310 ORI ZUM GER e tee 312 ORT ZUM SR ere let E 314 Overflow Bit 28 Parameter Reihenfolge 51 ENEE 23 25 PEA su Da nd 316 POP an e e 95 POSITIV Ran 38 Privilegierte Befehle SE Program Counter 23 25 Programmgr e 12 Programmst
220. hl 9 Multiprozessor Befehle Die Befehle werden hier kurz vorgestellt Eine komplette Beschreibung s mtlicher Befehle ist in Anhang B enthalten 4 2 1 DATEN KOPIERBEFEHLE EXG Vertausche Register LEA Lad ffektive Adresse im Register LINK Reserviere Bereich im Stack MOVE MOVEA Kopiere Daten MOVEM Kopiere mehrere Register MOVEP Eingabe Ausgabe zur von Peripherie MOVEO kopiere Konstante quick 8 Bit PEA Leg ffektive Adresse im Stack ab UNLK L se Reservierung im Stack auf 52 J Teepe 68000 Assembler 4 Befehlssatz 22 2 NTEGER ARITHMETISCHE BEFEHLE DD ADDA Addiere bin r DDI ADDO Addiere Konstante DDX Addiere mit Extend Bit LR L sche Operand MP CMPA Vergleiche PI Vergleiche Konstante Vergleiche Speicherinhalt IVS DIVU Dividiere ohne Vorzeichen Erweitere Vorzeichen ULS MULU Multipliziere EG Negiere Operand EGX Negiere Operand mit Extend Bit UB SUBA Subtrahiere bin r UBI SUBO Subtrahiere Konstante UBX Subtrahiere mit Extend Bit Pa Pr fe Operand x o oo SG SPD OOOO pp Z ljo ES 4 un 4 2 3 LOGISCHE BEFEHLE AND Logisches UND AND UND mit Konstante EOR Exclusives ODER EOR Exclusives ODER mit Konstante NOT Logisches Komplement OR Logisches ODER ORI ODER mit Konstante
221. hler nach E einer Exception Null nicht mehr verf gbar Die Exception RESET ist nicht mit dem Befehl RESET zu verwechseln Der Befehl RESET bewirkt lediglich ein hardware m iges R cksetzen der Eingabe Ausgabe ICs der Programmz hler und der Status bleiben aber beibehalten Mit dem Befehl RESET kann man vom Programm aus ein hardware Reset durchf hren und danach das Programm fortsetzen 68000 Assembler J Teepe 111 6 Stacks Exceptions und Interrupts Vektor Adresse Zuordnung Me E a 2 0008 Bus Fehler Die Exception 2 tritt auf wenn der Prozessor versucht einen Zugriff auf einer nicht existierenden geraden Speicheradresse zu machen Auf den Stack wird us tzliche Information ber den auftretenden Fehler gepushed Es h ngt von der Exception Behandlungsroutine ab ob und wie diese Information ausgewertet wird Venn aber der Prozessor einen Zugriff auf einer nicht existierenden ungeraden Adresse versucht findet nur die Exception 3 statt die Exception 2 unterbleibt Vor der Exception Nach der Exception SSP 00001000 SSP S0O0000FF2 OFFA SSP gt OFF2 Fehlerkode OFFA OFF4 Fehler Adr h W OFFA OFF6 Fehler Adr n W OFFA OFF8 Befehlswort OFFA OFFA Status Register OFFC OFFC PC hochw Wort OFFE
222. hmendem Stack Pointer e Datenl ngen dert sich der en haben um dert sich der ndert sich sondern um 2 sierungen mit iermit wird r etwa unbe ungerade Adress J Teepe zeigt 68000 Assembler 6 Stacks Exceptions und Interrupts 6 1 5 BEFEHLS BERSICHT DER STACK HANDHABUNG Wie wir oben gesehen haben k nnen sie mit z B MOVE D2 SP Daten ablegen und mit MOVE SP D2 Daten zur cklesen Sie k nnen Register z B abspeichern mit MOVEM L DO D7 AO A6 SP und zur ckholen mit MOVEM L SP r DO D7 AO A6 Dar ber hinaus stehen f r die Handhabung des Stack noch die folgenden Befehl ur Verf gung JSR Aufruf U BSR Aufruf U fe terprogramm absolut terprogramm relativ fe RTS R ckkehr vom Unterprogramm RTR R ckkehr Unterprogramm R ckladen CCR RTE R ckkehr von Exception PEA Leg ffektive Adresse im Stack ab LINK Reserviere Bereich im Stack UNLK l se Reservierung im Stack auf 68000 Assembler J Teepe 103 6 Stacks Exceptions und Interrupts 6 2 EXCEPTIONS Bine Exception Ausnahme ist ein Vorgang indem die normale Abarbeitung der Befehle abgebrochen wird und der Prozessor etwas anderes ausf hren soll Was dann passiert werden wir in diesem Kapitel bespreche
223. ie ORI wenn einer der Operanden ein Konstante ist Siehe auch AND EOR NOT TST 68000 Assembler J Teepe 309 B Befehls bersicht ODER mit Konstante ORI inclusive or immediate IL Konstante v Ziel gt Ziel Operandgr e ORI B Byte 8 Bit ORI W dort 16 Bit ORI L Langwort 32 Bit Assembler ORI x lt data gt lt ea gt Quelle Ziel Syntax x entspricht Bf W L Beschreibung Die Konstante die im Speicher unmittelbar dem Befehlswort folgt wird mit dem Zieloperand lt ea gt bitweise ODER verkn pft Das Ergebnis wird im Zieloperand lt ea gt abgespeichert Die Gr e der Konstante entspricht der Operandgr e kesak Eee Condition Code Register C wird zur ckgesetz V wird zur ckgesetzt Z wird gesetzt wenn das Ergebnis gleich Null ist rd sonst zur ckgesetzt N wird gesetzt wenn das hochwertige Bit des Ergebnisses gesetzt ist zeigt ein negatives Ergebnis rd sonst zur ckgesetzt X bleibt unver ndert ki 310 J Teepe 68000 Assembler B Befehls bersicht ODER mit Konstante rm inclusive or immediate ORI Lo Format des Befehlswortes 15 14 13 12 11 10 3 8 7 6 J 4 3 2 1 O 0101010101010 O Gr e Effektive Adress E E fee E fe A EEN 1 Argumentwort Wort Daten bzw Byte Daten 2 Argumentwort Langwor
224. iel operand lt ea gt abgespeichert Die Gr e der Konstante entspricht der Operandgr e ee ee ZS Condition Code Register C wird zur ckgesetz V wird zur ckgesetzt Z wird gesetzt wenn das Ergebnis gleich Null ist rd sonst zur ckgesetzt N wird gesetzt wenn das hochwertige Bit des Ergebnisses gesetzt ist zeigt ein negatives Ergebnis Wird sonst zur ckgesetzt X bleibt unver ndert Gh zc 158 J Teepe 68000 Assembler B Befehls bersicht UND mit Konstante Te and immediate ANDI IL Format des Befehlswortes 15 14 13 12 11 10 9 8 7 6 3 4 3 2 1 O O 10110110110 0 1 O Gr e Effektive Adress Mode Register 1 Argumentwort Wort Daten bzw Byte Daten 2 Argumentwort Langwort Daten einschlie lich voriges Wort Bit 7 6 Gr e Feld Aufbau der 00 Byte Befehl ANDI B Argumentw rter 01 Wort Befehl ANDI W siehe Kap 3 8 10 Langwort Befehl ANDI L Bit 5 0 Die Effektive Adresse w hlt den Zieloperand an Die folgenden Adressierungsarten sind erlaubt Adr Art Mode Req Adr Art Mode Re Dn 000 R Dn xxx W 111 000 An nicht erlaubt xxx L 111 001 An 010 R An d16 PC nicht erlaubt An 011 R An d8 PC Xi nicht erlaubt
225. ieser Speicherinhalt nun als Byte Wort oder Langwort genommen wird h ngt von der Datentyp Bezeichnung hinter dem Befehl ab also T Bp We oder D LT Veitere Details ber die Datentypen siehe Kap 3 4 Befehl vorher nachher MOVE L A2 D1 A2 00001000 A2 00001000 D1 11111111 D1 12345678 auf 00001000 ist 12345678 12345678 68000 Assembler J Teepe 63 5 Adressierungsarten von Befehlen Adr Art Mode Re Assembler Syntax An 011 R An An n in 0 7 Vorgang Adresse Operand An An An K K 1 2 oder 4 5 4 ADRESSREGISTER INDIREKTE ADRESSIERUNG MIT POST INKREMENT An 31 0 Adressregister An SPEICHER ADRESSE y Speicherstell OPERAND 3L 31 O Adressregister An SPEICHER ADRESSE v A Operand L ng gt gt 1 2 oder 4 Mit den drei Bits des Registerfeldes werden die Adressregister A0 A7 angew hlt In dem angew hlten Adressregister befindet sich die Adresse des Operanden Der Operand befindet sich also an der Speicherstelle wohin das Adressregister zeigt 64 J Teepe 68000 Assembler 5 Adressierungsarten von Befehlen Assembler Syntax Adr Art Mode Re An n in 0 7 An 011 R An Vorgang Adresse Operand An An An K K 1 2 oder 4 Bis
226. ilegierter Befehl I Wenn Supervisor Mode R cksetzen der Eingabe Ausgabe Kan le Wenn User Mode Exception 8 wird ausgel st siehe Kap 6 Verletzung Privilegium Operandgr e keine Assembler Syntax RESET Beschreibung Alle Eingabe Ausgabe Bausteine die mit der Leitung verbunden sind werden zur ckgesetzt Condition Code Register bleibt unver ndert 4E70 Verwechseln Sie diesen Befehl nicht mit dem Exception Reset Der Exception Reset setzt den Programmz hler neu und ist f r den Systemstart gedacht 68000 Assembler J Teepe 317 B Befehls bersicht Rotie re links ohne Extend Bit Pe ROL rotate left without extend IL Ziel rotiert dur ch lt zahl gt gt Ziel Operandgr e ROL B Byte 8 Bit ROL W vort 16 Bit ROL L Langwort 32 Bit ROL vort 16 Bit Assembler ROL x Dn Dn Quelle Ziel Syntax ROL x lt data gt Dn x entspricht B W L ROL lt ea gt Beschreibung Die Bits des Op randen werden nach links rotiert Bei jedem Rotationss Oo Das C Bit e Der Wert wi Danach erh Bits rechts chritt passiert folgendes rh lt den Wert des hochwertigen Bits rd au erdem zwischengespeichert lt das hochwertige Bit den Wert des daneben Dieses Bit erh lt dann den ert seines ert von Bi
227. in Stack ist ein Speicherverfahren Dieses Verfahren erlaubt dem Programmierer Daten die innerhalb eines Programms anfallen automatisch abzuspeichern und wieder hervorzurufen Das Abspeichern von Daten in ein Stack wird als push bezeichnet to push schieben Das Hervorrufen von Daten aus einem Stack wird d a als pop bezeichnet to pop schnell auf schreiben Wie wir in den vorherigen Kapiteln gesehen haben spielt das Adressregister A7 eine Sonderrolle weil es speziell als Stack Pointer Pointer Zeiger gedacht ist Manche Befehle nehmen implizit Bezug auf den Stack Pointer A7 E Die Bezeichnung A7 und SP sind f r den Assembler identisch Da wir in diesem Kapitel betonen m chten da es sich um den Stack Pointer handelt wird er hier mit SP bezeichnet 68000 Assembler J Teepe 95 6 Stacks Exceptions und Interrupts Es w re unn tig und verwirrend wenn Sie ein anderes Register als A7 als Stack Pointer benutzen w rden Es gibt brigens zwei verschiedene Stack Pointer A7 o Der USP User Stack Pointer Wird benutzt wenn der Prozessor in User Mode ist o Der SSP System Stack Pointer Wird bet tigt wenn der Prozessor in Supervisor Mode ist Siehe Kap 2 Wenn man Anwendungsprogramme in User Mode schreibt hat man gar nichts mit dem System Stack Pointer zu tun Ganz im Gegenteil man sollte sich normalerweis
228. ision durch Null Wird sonst zur ckgesetzt X bleibt unver ndert 224 J Teepe 68000 Assembler B Befehls bersicht Dividiere mit Vorzeichen r signed divide DIvs IL Format des Befehlswortes 15 14 13 12 11 10 9 GE 7 6 D 4 3 2 1 O ae n O a S E O Daten 1 1 1 Effektive Adress Register Mode Register Bit 11 9 Registerfeld w hlt eines der acht Datenregister als Zieloperand an Bit 5 0 W hlt die Effektive Adress des Quell operanden an Die folgenden Adressierungsarten sind erlaubt Adr Art Mode Reg Adr Art Mode Re Dn 000 R Dn XXX W 111 000 An nicht erlaubt xxe D Se TL TF 00L An 010 R An dl6 PC 111 010 An 011 R An d8 PC Xi 111 011 An 100 R An lt data gt 111 100 d16 An 101 R An Erl uterung siehe d8 An Xi 110 R An Kapitel 5 Benutzen Sie DIVU wenn das Vorzeichen bei der Division nicht ber cksichtigt werden soll Siehe auch MULS MULU 68000 Assembler J Teepe 225 B Befehls bersicht rm Dividiere ohne Vorzeichen DIVU divide unsigned Ziel Quelle gt Ziel 32 16 gt 16r 16dq Divident Divisor gt Quotient Rest Operandgr e CO Fingangswerte Divisor Wort 16 Bit Divident Langwort 32 Bit O Ergebniswerte Quotient Wort 16 Bit
229. it Vorzeichen gedacht beende Schleife wenn kein berlauf Terminate on oVerflow Clear Die Schleife wird beendet wenn das V Bit zur ckgeset tzt ist 68000 Assembler J Teepe 219 B Befehls bersicht r pr fe dekrementiere und springe DBce test condition decrement and branch le DBVS beende Schleife wenn berlauf Terminate on oVerflow Set Die Schleife wird beendet wenn das V Bit gesetzt ist DBF beende Schleife nie never terminate Die Schleife wird nur durch den Z hler beendet Viele Assembler akzeptieren DBRA als synonym f r DBF DBT beende Schleife immer always terminate Dieser Befehl bildet berhaupt keine Schleife Condition Code Register bleibt unver ndert 220 J Teepe 68000 Assembler B Befehls bersicht pr fe dekrementiere und springe rm test condition decrement and branch DBce IL Format des Befehlswortes 1 201710 4 Bedingung e D DEM BR WR GM EE Daten 16 Bit Adressdifferenz bis zum Anfang der Schleife EE Bit 11 8 Bedingungsfeld Bedingung Befehl Bedingung Befehl 0000 DBT 1000 DBVC 0001 DBF DBRA 1001 DBVS 0010 DBH 1010 DBPL 0011 DBLS 1011 DEM 01
230. ividiert wird der Operand erh lt den Wert des Quotienten Der Wert des Restes ist so nicht feststellbar HINWEIS Der Befehl ist weitgehend hnlich zum Befehl LSL Der Unterschied ist der da das L t das V Bit zur cksetzt o ehlsformen Es gibt drei Be Oo Der Befeh LSR x lt data gt Dn x entspricht B W L schiebt ein Datenregister nach rechts um soviele Positionen wie in der Konstante angegeben ist Die Maximalzahl ist acht Oo Der Befeh LSR x Dn Dn x entspricht B W L schiebt ein Datenregister nach rechts Fin zweites Datenregister legt fest um wieviele Positionen geschoben wird Oo Der Befehl LSR lt ea gt schiebt in Speicherstell 16 Bit um eine Position nach rechts 258 J Teepe 68000 Assembler B Befehls bersicht Logisches Schieben nach rechts rm logical shift right LSR IL er rer Condition Code Register C erh lt den Wert der zuletzt aus dem nieder wertigen Bit des Operanden herausgeschoben wurde Wird zur ckgesetzt bei Schieben um Null Positionen V wird zur ckgesetzt Z wird gesetzt wenn das Ergebnis gleich Null ist rd sonst zur ckgesetzt N wird gesetzt wenn das hochwertige Bit des Ergebnisses gesetzt ist zeigt ein negatives Ergebnis rd sonst zur ckgesetzt X erh lt den Wert der zuletzt aus dem nieder wertigen Bit des Operanden herausgescho
231. kurze Adressierung siehe vorherigen Abschnitt jede Speicherstelle direkt ansprechen Sie braucht aber geringf gig mehr Zeit und Speicherplatz als die Adressierungsart absolute kur Adressi rung 15 O 1 Argumentwort ar 0 2 Argumentwort o E 31 y y 0 Zusammenf gun 31 v 0 Speicherstell O PERAND 68000 Assembler J Teepe 79 5 Adressierungsarten von Befehlen Adr Art Mode Re Assembler Syntax xxx L 111 001 xxx L xxx ist eine 32 Bit Adresse Vorgang Adresse Operand xxx L BEISPIEL Der Befehl MOVE L 12345678 L D1 kopiert den Inhalt der Speicherstelle 12345678 in das Datenregister D1 Zur Erinnerung an der Erweiterung L hinter MOVE im Beispiel sehen wir dab vier Byte kopiert werden siehe Kap 3 4 Die Anordnung dieser Bytes wird in Kap 3 5 erl utert 80 J Teepe 68000 Assembler 5 Adressierungsarten von Befehlen Assembler Syntax xxX L xxx ist eine 32 Bit Adresse Adr Art Mode Re xxx L 111 001 Vorgang Adresse Operand xxx L Als Beispiel eigen wir Ihnen die Anordnung des Befehls wobei der MOVE Befehl im ersten die hochwertige H lfte der Adresse im zweiten und die niederwertige H lfte der Adresse im dritten Wort steht F r weitere Details des MOVE Befehls siehe Anhang B 1 5718
232. ll OPER AND 82 J Teepe 68000 Assembler 5 Adressierungsarten von Befehlen Assembler Syntax d16 PC oder d16 PC Stellen vor Adr Art Mode d16 PC 111 010 Re Vorgang Adresse Operand PC d16 Sie sich im Programm den folgen 2 1000 23C1 MOVE L 20 PC D1 1002 0020 1022 1234 DC L 512345678 1024 5678 Das Argumentwort liegt auf der addiert Inhalt des Argumentwortes wird Das Ergebnis ist 1002 r Befehl den Abschnitt Argumentwort Adresse 1002 Der zu seiner Adresse 20 1022 Der Operand wird also auf der Adresse Da es sich in diesem Beispiel um ein langes MOVE 1022 gesucht handelt wird ein Langwort auf 1022 gesucht wobei der hochwertige Teil auf 1022 und der niederwertig Teil auf 1024 liegt Befehl vorher nachher MOVE L__20 PC DI D1 11111111 DI 12345678 auf 00001022 ist 12345678 12345678 68000 Assembler J Teepe 83 5 Adressierungsarten von Befehlen Adr Art Mode Re d16 PC 111 010 Assembler Syntax d16 PC oder d16 PC Vorgang Adresse Operand PC d16 1 5 14 273 2 TIA 9 8 7 6 5 4 3 2 T Q 01I0 1 0 01 150 Ett gt 1 2 N 4 110101010 1 MOVE L lt reg gt lt mode gt lt mode gt lt reg gt 23C1 lt
233. lloperanden wird in das Operandgr e Wort 16 Bit Assembler MOVE lt ea gt CCR Syntax Beschreibung Das niederwertige Byt Condition Code Register ein Wort Das hochwertige kopiert Die Operandgr e ist 55595 Byte wird nicht benutzt X N Z V i 9 el ee Condition Code Register Lo l ef J C erh lt den Wert von Bit 0 des Quelloperand V erh lt den Wert von Bit 1 des Quelloperand Z erh lt den Wert von Bit 2 des Quelloperand N erh lt den Wert von Bit 3 des Quelloperand X erh lt den Wert von Bit 4 des Quelloperand ACHTUNG MOVE zum CCR ist ein Wort Befehl Die Befehle ANDI zum CCR ORI zum CCR und EOR um CCR dagegen sind Byte Befehle 68000 Assembler J Teepe 265 B Befehls bersicht Kopiere zum Condition Code Register MmovE move to the Condition Code Register zum CCR ll Format des Befehlswortes 15 14 13 12 11 10 9 8 e 6 5 4 3 2 1 0 10 4 E10 Eee Eee Effektive Adress Mode Register Bit 5 0 Effektive Adresse des Quelloperanden folgenden Adressierungsarten sind erlaubt Adr Art Mode Req Adr Art Mode Re Dn 000 R Dn xxx
234. m angezeigt Danach vergleicht der Programmierer den Programm ablauf mit seinem Programmlisting Er sieht nach weshalb das Programm etwas anderes tut als er es sich beim Programmieren vorgestellt hatte 68000 Assembler J Teepe 13 1 Einf hrung Die Ausbesserungen des im Programm listing Debugger k nnen di Programms dokumentiert Fehler aber direkt im Maschinencode behoben werden sollen nat rlich werden auch provisorisch Mit dem Man kann dann weiter testen ohne den Debugger verlassen zu m ssen 1 32 DER DISASSEMBLER DES DEBUGGERS Der Debugger hat auch eine Disassemble Funktion Er macht quasi das entgegengesetzte von dem was der Assembler tut Der Disassembler rstellt also aus Maschinencode eine Art von Assembler Listing Dieses Listing ist aber nicht perfekt denn der Disassembler kann nicht wissen welch Teil des Objectcode Programme und welche Daten sind Auch die Daten werden als Programm interpretiert was zu unsinnigen Ergebnissen f hrt BEISPIEL enn Ihr Disassembler Ihnen z B 1000 ORI B 0 DO 1002 ORI B 0 DO 1004 ORI B 0 DO 1006 ORI B 0 DO 1008 ORI B 0 DO 100A ORI B 0 DO anzeigt brauchen Sie nicht unbedingt an einen superschlauen Trick eines Ihnen unbeka
235. mierer 36 J Teepe 68000 Assembler 3 Datenstrukturen 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 Byte 0 Byte 1 1000 MSB LSB Byte 2 Byte 3 1002 MSB LSB Byte 4 Byte 5 1004 MSB LSB Bild 3 6 Adressierung nachfolgender Bytes 8 Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 b O0 Wort o0 1000 MSB LSB Wort 1 002 Wort 2 004 Bild 3 7 Adressierung nachfolgender W rter 16 Bit Ka EE T3 WA AT RO g en Ee Ek Br E O Langwort 0 L MB_ bochwertioes Wort r 1000 niederwertiges Wort LSB Langwort 1 TEMS BA eh a HEEN EEGENEN 1004 LSB Langwort 2 u MS Braa a J E Ae E sen en dE nn E 1008 LSB Bild 3 8 Adressierung nachfolgender Langw rter 32 Bit 68000 Assembler J Teepe 37 3 Datenstrukturen T 393 VORZEICHEN VON BYTES W RTERN UND LANGWORTERN wir haben gesehen da bin re Daten verarbeitet werden k nnen o als Byte 8 Bit o als Wort 16 Bit o als Langwort 32 Bit Die Angabe ob der Prozessor nun ein Byte ein Wort oder ein Langwort verarbeiten soll finden wir im letzten Buchstaben des Befehls Zo bedeutet B in dem Befehl MOVE B D2 D4 da die Operandgr e ein Byte ist Es gibt noch ein Unterscheidungsart wie wir die Bits im Speicher unseres Computers verstehen k nnen n mlich CO als Bin rzahl ohne Vorz
236. n Bit 11 9 Feld Datenregister Dp gibt an welches Bit von Dn gepr ft wird Es werden nur die Bits 0 4 von Dp benutzt Es wird also Bit Dp mod 32 von Dn gepr ft Bit 2 0 Feld Datenregister Dn hlt das Datenregister mit dem Operand an Hierin befindet sich das Bit das gepr ft werden soll 200 J Teepe 68000 Assembler B Befehls bersicht Pr fe Bit IN test a bit BTST IL Assembler Syntax BTST B lt data gt lt ea gt Dazu geh rt das folgende Format des Befehlswortes 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 170 a 1 0370 72 215021 Effektive Adress oO S S S RB Zare bh l l Bit 5 0 w hlt die Effektive Adresse des Operanden an Die folgenden Adressierungsarten sind erlaubt Adr Art Mode Reg Adr Art Mode Reg Dn nicht erlaubt xxx W 111 000 An nicht erlaubt xxx L 111 001 An 010 R An d16 PC T11 010 An 011 R An d8 PC Xi E1 011 An 100 R An lt data gt nicht erlaubt d16 An 101 R An Erl uterung siehe d8 An Xi 110 R An Kapitel 5 Feld Bitzahl gibt an welches Bit des Operanden gepr ft wird Es werden nur die Bits 0 2 der Bitzahl benutzt Es wird also Bit Bit Zahl mod 8 des Operanden gepr ft
237. n 0 Ich kann die Datenanschl sse D0 D7 des IC mit den Datenleitungen D0 D7 des Prozessors verbinden Das IC befindet sich dann an den ungeraden Speicheradressen 1 3 5 etc CG Ich kann aber auch die Datenanschl sse DO D7 mit den Datenleitungen D8 D15 des Prozessors verbinden Das IC befindet sich dann an den geraden Speicheradressen 0 2 4 etc Die Situation der ICs entspricht den beiden M glich keiten in dem Und der die zuzugreii Befehl MOV geraden ren Bild auf der n chsten Seite EP macht es uns bequem um nur auf oder auf die ungeraden Adressen 68000 Assembler J Teepe 283 B Befehls bersicht Eingabe Ausgabe zur von Peripherie MoveEP move periperal data Ii S P Fi E E E R P r xl o Datenleitungen Oberes Byte La 2 D8 D15 JI 8 Bit N e gerade Adressen s s o r E d hb hb Datenleitungen Unteres Byte 14 I EES 8 Bit IN C VI Lungerade Adressen 6 A 8 Adressleitungen 0 Al A23 0 yil 0 Bild pi Gerade und ungerade Speicherstellen 284 J Teepe 68000 Assembler B Befehls bersicht Eingabe Ausgabe zur von Peripherie r move periperal data MOVEP Ill MOVEP bertr gt Daten zwischen einem Datenregister und jeder geraden oder ungeraden Adresse im Speicher Die bertragung f ngt an der spezifizierten Speicher adres
238. n Es gibt verschiedene Ursachen f r Exceptions CO ein erw nschtes xternes hardwarem iges Ereignis auf den der Rechner gewartet hat z B wurde auf der Tastatur ein Zeichen eingegeben So ein Ereignis bezeichnen wir als Interrupt CO ein unerw nschtes xternes hardwarem iges Ereignis das evtl als Fehler zu werten ist B ein Zugriff auf einer nicht existierenden Speichersteil CO ein im Programm beabsichtigter Vorgang wir haben diese Exception aus programmtechnischen Gr nden gewollt G ein im Programm m glich auftretender Vorgang der abgefangen werden mu z B berschreiten von Grenzen oder Division durch Null 104 J Teepe 68000 Assembler 6 Stacks Exceptions und Interrupts In dem Prozessor 68000 l sen die folgenden Ereignisse eine Exception aus CO Die Befehle TRAF und ILLEGAL l sen immer eine Exception aus ebenso die nicht erlaubten Befehle und Adressierungsarten O Die Befehle TRAPV CHE DIVS und DIVU k nnen je nach Ergebnis ine Exception ausl sen CO Adressierungsfehler wie Zugriffe auf einer nicht existenten Speicherstelle oder Zugriff auf ein Wort oder Langwort auf einer ungeraden Speicherstelle l sen eine Exception aus CG Interrupts von Fingabe Ausgabe ICs wenn sie entsprechend angeschlossen sind Es findet dann ein Sprung zu einer bestimmten Adresse statt An die
239. n iner Speicherstell ur anderen Die zu kopierende Datenmenge betr gt bei MOVE B 8 Bit B Byte bei MOVE W 16 Bit W Wort bei MOVE L 32 Bit L Langwort Wir haben MOVE mit kopieren bersetzt weil die Quelldaten unver ndert im Speicher stehen bleiben 68000 Assembler J Teepe 45 3 Datenstrukturen Sense BEFEHLE OHNE ARGUMENTWORT Der Befehl MOVE L D3 D5 kopiere Datenregister D3 nach D5 bildet im Speicher ein Befehlswort von 16 Bit L nge unabh ngig von der zu kopierenden Datenmenge Adresse 1000 MOVE L D3 D5 Befehlswort Im Speicher wird direkt nach diesem Befehlswort das n chste Befehlswort angeordnet z B ADD L D2 D5 Das weite Befehlswort erh lt im Speicher in Adresse die um 16 Bit 1 Wort 2 Bytes h her liegt Adresse 1000 MOVE L D3 D5 Befehlswort 1002 ADD L D2 D5 n chstes Befehlswort Das Wort welches dem Befehlswort folgt wird als n chstes Befehlswort genommen 46 J Teepe 68000 Assembler 3 Datenstrukturen 3842 BEFEHLE MIT EINEM ARGUMENTWORT In dem Befehl MOVE B 12 D5 schreibe die Zahl 12 hex in D5 wird dem Befehlswort ein zweites Wort angeh ngt das das Argument des Befehls tr gt Adresse 1000 MOVE B lt
240. n Wort Das Status Register wird im Kap 2 beschrieben Hinweis auf den Prozessoren 68010 und 68012 verh lt sich dieser Befehl abweichend MOVE vom SR ist dort ein privilegierter Befehl so da ein Trap erfolgt wenn der Prozessor nicht in Supervisor Mode ist Der dort verf gbare nicht privilegierte Befehl MOVE vom CCR ist auf unserem Prozessor 68000 nicht vorhanden Condition Code Register keine nderungen 68000 Assembler J Teepe 269 B Befehls bersicht Tr Kopiere vom Status Register Move move from the Status Register vom SR IL Format des Befehlswortes 15 34 13 12 TI 80 D 8 7 6 5 4 3 2 1 0 150 4 01 20 09 1792 O NE Effektive Adress Mode Register Bit 5 0 Effektive Adresse des Zieloperanden folgenden Adressierungsarten sind erlaubt Adr Art Mode Req Adr Art Mode Re Dn 000 R Dn xxx W 111 000 An nicht erlaubt XXX L 111 001 An 010 R An dl l PC nicht erlaubt An 011 R An d8 PC Xi nicht erlaubt An 100 R An lt data gt nicht erlaubt d16 An 101 R An Erl uterung siehe d8 An Xi 110 R An Kapitel 5 Benutzen Sie T MOVE zum SR wenn Sie das CCR und oder das Sytem Byte ndern m chten Privilegierter Befehl T MOVE zum CCR wenn Sie nur das CCR ndern m chten
241. n nicht erlaubt xxx L 773 001 An 010 R An d16 PC 111 010 An 011 R An d8 PC Xi 11 1 011 An 100 R An lt data gt 11 100 d16 An 101 R An Erl uterung siehe d8 An Xi 110 R An Kapitel 5 Benutzen Sie DIVS wenn das Vorzeichen bei der Division ber cksichtigt werden soll Siehe auch MULS MULU 68000 Assembler J Teepe 229 B Befehls bersicht Exclusives ODER emm EOR exclusive or logical IL Quelle Ziel gt Ziel Operandgr e EOR B Byte 8 Bit EOR W Jort 16 Bit EOR Langwort 32 Bit Assembler Syntax Operation EOR x Dn lt ea gt Dn lt ea gt gt lt ea gt x entspricht B W Li Beschreibung Der Quelloperand wird mit dem Zieloperand bitweise EXCLUSIVE ODER verkn pft und das Ergebnis wird im zieloperand abgespeichert Zur Erinnerung die EXCLUSIVE ODER Verkn pfungen Das Ergebnisbit wird gesetzt wenn di Eingangsbits ungleich sind Einer der beiden Operanden mu ein Datenregister sein Die Gr des Operanden sowie die Angabe welcher Operand das Datenregister ist sind im Mode Feld enthalten 230 J Teepe 68000 Assembler B Befehls bersicht Exclusives ODER EEE exclusive or logical EOR Lo E S E Sg i0 1 Condition Code Register C wird zur ckgesetzt V wird zur ckgesetzt Z wird gesetzt wenn das E
242. nd Interrupts Vektor Adresse Zuordnung En FE EN si 3 000C Adressfehler let eech Diese Exception wird bei einem Zugriff vo oder Langwort auf einer ungeraden Sp angesprungen z B MOVE W 1001 D2 n einem Wort icherstell Normalerweise ist so ein Befehl ine Folge von einem E Programmfehler In der Exception Behand geben Sie an wie sich der Prozessor in lungsroutine diesem Fall zu verhalten hat Auch wenn Ihr Programm absichtlich sol che Befehle benutzt k nnen Sie sie in der Exception routine implementieren Auf den Stack wird zus tzliche Informati Behandlungs on ber den auftretenden Fehler gepushed und zwar im gleichen Format als bei der Exception 2 F r die sehen Sie bitte dort nach Beschreibung 114 J Teepe 68000 Assembler 6 Stacks Exceptions und Interrupts Vektor 4 Adresse 0010 Zuordnung Ill r Befehl gal EE de m ijl ee Ee Diese Exception wird erzeugt wenn eine der folgenden Befehlsformen auftritt CO Ein illegaler Befehl Die Befehle deren Code mit Axxx oder Fxxx anfangen werden als nicht implementierte Befehle verstanden sie werden in den Vektoren 10 und 11 abgefangen O ein nicht erlaubter Adressierungsmo
243. nd das Feld 16 Bit Adressdifferenz genommen Benutzen Sie JSR wenn die Sprungadresse au erhalb des Bereichs von 32 kByte liegt JMP oder BRA wenn keinen R ckkehr erw nscht ist 68000 Assembler J Teepe 197 B Befeh ISCH BTST IL angew hltes Bit des Operanden Ils bersicht P r fe Bit test a bit Operandgr e Assembler Syntax Mit BTST Beschreibung BTST L Dp Dn k nnen Si gt Z Bit BTST B Byte 8 Bit BTST L Langwort 32 Bit BTST L lt data gt Dn BTST B lt data gt lt ea gt BTST B Dp lt ea gt Bit Zeiger Operand di inzelnen Bits des Operanden direkt abfragen Erg ebnis ur ckgesetzt Bit Null ist getestetes Bit 0 gt Bit Z wird gesetzt getestetes Bit 1 gt Bit Z wird Das getestete Bit bleibt unver ndert X N Z V C Sal Feel Condition Code Register Messer ei E C bleibt unver ndert V bleibt unver ndert Z wird gesetzt wenn das getestete Wird sonst zur ckgesetzt N bleibt unver ndert X bleibt unver ndert 198 J Teepe 68000 Assembler B Befehls bersicht Pr fe Bit Da test a bit BTST IL Es gibt vier Befehlsformen o Der Befehl BTST L lt data gt Dn pr ft ein Bit des Datenregisters Dn Die Ko
244. nden gt angew hltes Bit des Operanden Operandgr e BCHG B Byte 8 Bit BCHG Langwort 32 Bit Assembler Syntax BCHG lt data gt Dn BCHG Dp Dn BCHG B lt data gt lt ea gt BCHG B Dp lt ea gt Bit Zeiger Operand Beschreibung Mit BCHG k nnen Sie di inzelnen Bits des Operanden direkt abfragen Ergebnis 0 gt Bi 1 gt Bit getestetes Bi getestetes Bi Z wird gesetzt Z wird zur ckgesetzt ara ana Das getestete Bit wird anschlie end ge ndert wenn es gesetzt ist wird es gel scht wenn es gel scht ist wird es gesetzt Fl Feet Condition Code Register bleibt unver ndert C bleibt unver ndert V bleibt unver ndert Z wird gesetzt wenn das getestete Bit Null ist Wird sonst zur ckgesetzt N bleibt unver ndert X bleibt unver ndert e l tze 68000 Assembler J Teepe 181 B Befehls bersicht Pr fe Bit und ndere pi BCHG test a bit and change IL Es gibt vier Befehlsformen o Der Befehl BCHG L lt data gt Dn pr ft ein Bit des Datenregisters Dn Die Konstante lt data gt w hlt das Bit an o Der Befehl BCHG L Dp Dn pr ft ein Bit des Datenregisters Dn Das Datenregister Dp w hlt das Bit an oO Der Befehl BCHG B lt data gt lt ea gt pr ft ein Bit in einem Byte im Speicher Die Konstant
245. ne Insel mit einer Zwischen Ansprungadresse an Auf der Insel befindet sich dann ein JMP Befehl zu der von Ihnen erw nschten Ansprungadresse Bei den Befehlen haben wir neben den deutschen auch die originalen amerikanischen Befehlsb ichnungen gegeben Damit k nnen sie sich die Mnemonics besser merken Bei den Befehlen werden di Bits N Negative Z Zero V oVerflow und C Carry des Condition Code Registers benutzt 68000 Assembler J Teepe 175 B Befehls bersicht rm Springe bedingt Bce branch conditionally IL BCC springe wenn C Bit Carry zur ckgesetzt ist BCS BEQ BGE BGT BHI 176 Branch if Carry is Clear springe wenn C Bit Carry gesetzt ist Branch if Carry is Set springe wenn gleich Branch if EQual Es wird gesprungen wenn das Z Bit Zero gesetzt ist springe wenn gr er oder gleich Branch on Greater than or Egual Es wird gesprungen wenn das N Bit Negative und das V Bit oVerflow entweder beide gesetzt oder beide zur ckgesetzt sind BGE ist f r Bin rzahlen mit Vorzeichen gedacht springe wenn gr er Branche on Greater Than Es wird gesprungen wenn o das N Bit und das V Bi das Z Bit zur ckgesetz oder Oo das N Bit das V Bit und das Z Bit alle zur ckgesetzt sind BGT ist f r Bin rzahlen mit Vorzeichen gedacht ist sonst hnlich BH ges
246. ne Ihre Routine angesprungen Sie k nnen in die urspr ngliche wieder aufrufen Ihrer Routine Exception falls erw nscht Behlandlungsroutine auch turbelegung so ndern da die rfolgte einen Atari UU Eindeutschung BEISPIEL Sie m chten die Tastat Belegu Hiermit k nnen Sie z B oder in bereits r ckg ngig zu machen 68000 Assembler J Teen e ngen der Tasten Y und 2 verwechselt werden eindeutschen wieder 123 6 Stacks Exceptions und Interrupts Der Vorgang ist wi hier beschrieben CO Zuerst retten Sie in Ihrem Programm die Sprung adresse der Atari Tastaturbehandlungsroutine Danach biegen Sie den Sprung auf Ihre Routine um o n Ihrer Routine rufen Sie die Atari Tastatur routine als Unterprogramm auf Bedenken Sie bei Aufruf dieser Routine da sie mit einem RTE Befehl beendet wird Er soll in diesem Fall eine R ckkehr zu Ihrem Programm bewirken O Schauen Sie in Ihrem Programm nach dem Tastatur kode Der Kode des Y und y wird durch z bzw z ersetzt der Kode des Z und z durch Y bzw y Alle anderen Kode bleiben unver ndert CO Ihr Programm wird mit einem RTE Befehl beendet berschrieben wird vorhanden bleibt Beim Laden mu das Programm reside
247. ng Aa BR BERSICHT DER COMPUTERSPRACH Wenn ich inem Menschen twas brauche ich dazu eine Sprache sowohl von mir als auch von mein beherrscht werden mit bin ren und n Ein Verzeichnis ufgenommen EN E mitteilen m chte Diese Sprache soll em Gespr chspartner Wenn ich einem Computer mitteilen m chte was er f r mich auszuf hren hat brauche ich dazu eine Computersprache so eine Mitteilung bezeichnet man als Programm Diese Sprache soll sowohl von mir als auch von dem Computer verstanden werden In dieser Sprache kommunizieren also Mensch und Maschine Die Programme in den meisten Computersprachen sehen auf den ersten Blick in etwa so aus wie eine Zwischenform von Englisch und Algebra Es gibt als grobe Einteilung Computersprachen de Maschinencod Assembler KR H here Sprachen 3 K nstliche Intelligen 68000 Assembler J Teepe drei Stufen der 1 Einf hrung br MASCHINENCODE ASSEMBLER Maschinencode ist wenn man so will die nat r liche Sprache des Prozessors Mit dem Defehl 0000 011
248. nnten Programmierers u denken Der Disassembler ist vielmehr in einen Zahlenblock hineingelaufen der aus lauter Nullen besteht 14 J Teepe 68000 Assembler 1 Einf hrung In einem Disassembler Listing sind au erdem symbolischen Namen die der Programmierer ben hat nicht mehr vorhanden und die Kommentare fehl die utzt n F r den Assemblerprogrammierer der berpr fen m chte ob er an der richtigen Stell seines Programms ist reicht das Disassembler Listing allemal Ohne Debugger ist es kaum m glich ein Assembler Programm auszutesten Die M glichkeiten des Debuggers sind aber keineswegs u der Fehlersuche innerhalb selbst erstellter Assemblerprogramme be schr nkt 68000 Assembler J Teepe 15 1 Einf hrung 1 3 3 WEITERE M GLICHKEITEN DES DEBUGGERS Da Assembler die nat rliche Sprache des Prozessors ist k nnen Sie sich im Prinzip JEDES Programm mit dem Disassembler anschauen ob es nun Teil des Betriebssystems sind Kompilate oder Programme von denen nur der ablauff hige Code vorliegt Sie k nnen einen Eindruck der Funktionsweise Ihres Compilers erhalten indem Sie ein Programm schreiben wie z B for 1 to 3 do writeln hallo und sich das Ergebnis mit dem Debugger anschauen Sie werden die Speicheradresse von n finden und Sie werden sehen
249. nstante l Die Bits 11 9 beziehen sich auf ein Datenregister Bit 2 0 Register Feld w hlt ein Datenregister als Zieloperand an 68000 Assembler J Teepe 331 B Befehls bersicht Rotiere links mit Extend Bit fr ROXL rotate left with extend IL Assembler Syntax ROXL lt ea gt Die 16 Bits des angew hlten Speicherwortes werden um eine Position nach links rotiert Dazu geh rt das folgende Format des Befehlswortes 15 14 Et 10 9 8 7 6 5 4 3 2 1 0 E a ee C E aa EE TEN E E N Effektive Adress Mode Register Bit 5 0 w hlt die Effektive Adress des Quelloperanden an Die folgenden Adressierungsarten sind erlaubt Adr Art Mode Reg Adr ATE Mode Re Dn nicht erlaubt XXX W 111 000 An nicht erlaubt xxxX L ET 001 An 010 R An dl16 PC nicht erlaubt An 011 R An d8 PC Xi IJnicht erlaubt An 100 R An lt data gt nicht erlaubt d16 An 101 R An Erl uterung siehe d8 An Xi 110 R An Kapitel 5 F r die Adressierungsart Dn siehe auf der vorherigen Seite Benutzen Sie ROXR wenn nach rechts rotiert werden soll ROL Wenn die Rotation nicht durch das X Bit laufen soll Siehe auch ASL ASR LSL LSR ROR SWAP 332 J Teepe 68000 Assembler B Befehls bersicht Rotiere rechts mit Exten
250. nstante lt data gt w hlt das Bit an E CO Der Befeh BTST L Dp Dn pr ft ein Bit des Datenregisters Dn Das Datenregister Dp w hlt das Bit an o Der Befehl BTST B lt data gt lt ea gt pr ft ein Bit in einem Byte im Speicher Die Konstante lt data gt w hlt das Bit an E FH CO Der Befeh BTST B Dp lt ea gt pr ft ein Bit in einem Byte im Speicher Das Datenregister Dp w hlt das Bit an Assembler Syntax BTST L lt data gt Dn Dazu geh rt das folgende Format des Befehlswortes 15 F413 EE I TO I 8 7 6 D 4 3 2 1 0 0 010 On u 0 0 0 l Dn E Bit 2 0 Feld Datenregister Dn w hlt das Datenregister mit dem Operand an Hierin befindet sich das Bit das gepr ft werden soll Feld Bitzahl gibt an welches Bit von Dn gepr ft wird Es werden nur die Bits 0 4 der Bitzahl benutzt Es wird also Bit Bitzahl mod 32 von Dn gepr ft tr A ara 68000 Assembler J Teepe 199 B Befehls bersicht mm Pr fe Bit BTST test a bit Assembler Syntax BTST L Dp Dn Dazu geh rt das folgende Format des Befehlswortes 152 14 73 72 EK VO 09 8 7 6 5 4 3 2 i 0 101101 0 0O Register 11 01101101 0 O Register Dp D
251. nt gemacht werden d h da es nicht vom n chsten Programm sondern im Speicher weiterhin Man macht ein Programm beim Laden durch entspre chende Aufruf Das lustige ist nun des Betriebssystems resident da so ein Umbiege Programm auch wieder umgebogen w rden kann Wenn Sie das Programm zweimal laden findet die Verwechslung von Y und Z zweimal statt so da sich die beiden Programme in ihrer Wirkung aufheben Es k nnen sich im Speicher lange Ketten von Umbiege Programmen befinden Insbesondere an der Uhr Exception h ngen manchmal lange Ketten von residenten Programmen die im Hintergrund arbeiten 124 J Teepe 68000 Assembler 6 Stacks Exceptions und Interrupts 6 3 NTERRUPTS 6 3 1 WAS IST EIN INTERRUPT Am End jeden Befehls pr ft der Prozessor die Signalpegel der drei Leitungen IPLO IPL1 und IPL2 IPL Interrupt Priority Level Der normale Ablauf ist da dies drei Pegel Null 5 Volt sind Es passiert dann nichts besonderes am Ende dieses Befehls wird der n chste Befehl aus dem Speicher geholt und ausgef hrt Venn aber eine von diesen drei Leitungen Eins 0 Volt ist dann passiert am Ende des Befehls etwas besonderes Diesen
252. ntax ASR x lt data gt Dn x entspricht B W L ASR lt ea gt Beschreibung Die Bits des Operanden werden nach rechts verschoben Bei jedem Schiebeschritt passiert folgendes O Bit 0 gibt seinen Wert an das C Bit und das X Bit ab CO Danach gibt Bit 1 seinen Wert an Bit 0 und Bit 2 seinen Wert an Bit 1 usw bis das hochwertige Bit seinen ert an seinen rechten Nachbarn abgibt o Das hochwertige Bit beh lt aber w hrend des ganzen Schiebvorganges seinen eigenen Wert F r die Gesamtzahl der Schiebeschritte sieh weiter unten 68000 Assembler J Teepe 169 B Befehls bersicht Arithmetisches Schieben nach rechts mr ASR arithmetic shift right IL Ein ASR um n Positionen bedeutet da der Operand als Bin rzahl mit Vorzeichen aufgefa t durch 2n dividiert wird der Operand erh lt den Wert des Quotienten Der Wert des Restes ist so nicht feststellbar er l t sich mit DIVU ermitteln Das Vorzeichen verbleibt unver ndert in Bit 0 HINWEIS Der Befehl ist weitgehend hnlich zum Befehl LSR Der Unterschied ist der da das LSR das hochwertige Bit des Opera nden zur cksetzt Befehlsformen Es gibt drei Der Befehl ASR x i lt data gt Dn x entspricht B W L schiebt ein Da
253. o da die n chste Adress in geradzahlige ist Durch Voranstellen eines Ausrufezeichens k nnen Si in einer Kette von Bytes oder Worten ein Langwort festlegen Beispiel DC B l 2 LABEL 4 3 Mit DS oder auch DS l t sich Speicher reservieren Auch hier k nnen Si wieder mit B W und L arbeiten 4 Der Befehl EVEN bewirkt da die n chste zu bearbeitende Adress ine geradzahlige ist 4 5 Wenn Sie eine ausf hrbare Programmdatei erstellen wollen mit PRGASM und PRGSAVE m ssen Sie drei Sektionen unterscheiden Eine in der das Programm steht eine f r intialisierte Daten und eine f r unintialisierte Daten Dieser Assembler verlangt da diese Bl cke schon im Listing der genannten Reihenfolge auftauchen Um sie zu kennzeichnen schreiben Sie DATA am Beginn der definierten Daten und BSS am Beginn der Undefinierten D Labels Selbstverst ndlich k nnen Sie auch Labels verwenden Sie m ssen unmittelbar am Zeilenanfang stehen Im Gegensatz dazu mu vor den Assemblerbefehlen minde tens ein Leerzeichen stehen Die Labels d rfen beliebig lang sein allerdings werden nur die ersten 10 Zeichen unterschieden Die Labels d rfen nicht mit einem Doppelpunkt abgeschlossen werden Ein Label mu mit einem Buchstaben beginnen und darf weiterhin nur Buchstaben Zahlen oder das Zeichen enthalten
254. ogisches UND un and logical AND DRECK ON Sg i0 1 Condition Code Register C wird zur ckgesetz V wird zur ckgesetz Z wird gesetzt wenn das Ergebnis gleich Null ist rd sonst zur ckgesetzt N wird gesetzt wenn das hochwertige Bit des Ergebnisses gesetzt ist zeigt ein negatives Ergebnis rd sonst zur ckgesetzt X bleibt unver ndert aa Format des Befehlswortes LZ L 13 32 I 102 9 8 7 6 5 4 3 2 1 O 11 1 O O Register Operations Effektive Adress Dn Mode Mode Register Bit 11 9 Registerfeld w hlt eines der acht Datenregister Dn an Bit 8 6 Feld Operationsmode AND B AND W AND L Operation 000 001 010 lt ea gt Dn gt Dn 100 101 110 Dn lt ea gt gt lt ea gt 68000 Assembler J Teepe 155 B Befehls bersicht r Logisches UND AND and logical IL Bit 5 0 Wenn die Effektive Adresse der Quelloperand ist also lt ea gt Dn gt Dn sind die folgenden Adressierungsarten erlaubt Adr Art Mode Req Adr Art Mode Re Dn 000 R Dn xxx W 111 000 An nicht erlaubt xxx L 111 001 An 010 R An d16 PC 111 010 An 011 R An d8 PC Xi 111 011 An 100 R An lt data gt 111 100 d16 An 101 R An Erl uterung siehe d8 An Xi 110 R An Kapitel 5 Bit 5 0 Wenn die
255. olgenden Adressierungsarten sind erlaubt Adr Art Mode Req Adr Art Mode Re Dn 000 R Dn xxx W 111 000 An nicht erlaubt xxx L 111 001 An 010 R An al6 PC 111 OTO An 01 R An d8 PC Xi 111 011 An 100 R An lt data gt 11 100 d16 An 101 R An Erl uterung siehe d8 An Xi 110 R An Kapitel 5 Benutzen Sie MULS wenn das Vorzeichen bei der Multiplikation ber cksichtigt werden soll Siehe auch DIVS DIVU 294 J Teepe 68000 Assembler B Befehls bersicht Negiere BCD Zahl mit Extend Bit rm negate decimal with extend NBCD L 0 ziel g X gt Ziel erandgr e NBCD B Byte 8 Bit g ein Byte enth lt wei BCD Zahlen Assembler NBCD B lt ea gt Syntax Beschreibung Der Quelloperand und das X Bit werden von Null subtrahiert das Ergebnis wird im Zieloperand abgespeichert Die Subtrahierung findet als BCD Arithmetik statt Das Ergebnis ist das Zehnerkomplement des Ziel operanden wenn das X Bit gesetzt ist und das Neunerkomplement wenn das X Bit zur ckgesetzt ist F r eine Darstellung von BCD Ziffern siehe Kap 3 6 Kees e dl Zu ee A A Condition Code Register Lo E ae I C wird gesetzt wenn ein dezimale Leihe generiert wird Wird sonst zur ckgesetzt V nicht definiert Z wird gel scht wenn d
256. pr ft 194 J Teepe 68000 Assembler B Befehls bersicht Pr fe Bit und setze A test a bit and set BSET IL Assembler Syntax BSET B Dp lt ea gt Dazu geh rt das folgende Format des Befehlswortes 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 010 Oal Register l t K a E Effektive Adress Dp ode Register Bit 11 9 Feld Datenregister Dp Gibt an welches Bit des Operanden gepr ft wird Es werden nur die Bits 0 2 dieses Registers benutzt Es wird also Bit Bit Zahl mod 8 des Operanden gepr ft Bit 5 0 w hlt die Effektive Adresse des Operanden an Die folgenden Adressierungsarten sind erlaubt Adr Art Mode Reg Adr Art Mode Reg Dn nicht erlaubt XXX W 111 000 An nicht erlaubt XXX L 111 001 An 010 R An d16 PC 111 010 An 011 R An d8 PC Xi T1 011 An 100 R An lt data gt 11 100 d16 An 101 R An Erl uterung siehe d8 An Xi 110 R An Kapitel 5 Benutzen Sie wenn das angew hlte Bit BTST nur getestet werden soll BCLR getestet und gel scht werden sol BCHG getestet und ge ndert werden sol 68000 Assembler J Teepe 195 B Befehls bersicht rn Aufruf Unterprogramm relativ BSR branch to subroutine IL SP 4 gt SP
257. r der unter mst nden genauso aussieht vielleicht nicht mehr Et l uft 6 23 DIE VERSCHIEDENEN EXCEPTIONS Jetzt werden wir nacheinander alle Exceptions behandeln wann sie auftreten und was dann passiert Ob eine bestimmte Exception erw nscht oder uner w nscht ist liegt im Ermessen des Programmierers wir beschreiben hier nur Vorg nge 110 J Teepe 68000 Assembler 6 Stacks Exceptions und Interrupts Vektor Adresse Zuordnung 0 0000 Reset Anfangswert SSP 1 0004 Reset Anfangswert PC Die Exception Null Reset tritt auf bei einer Signal nderung auf dem entsprechenden Pin des Prozessor ICs Sie hat die h chste Priorit t Der Reset ist f r den Systemstart gedacht Beim Finschalten und auch bei Bet tigung der Reset Taste wird diese Exception aktiviert Der Programmz hler erh lt dabei den Wert der sich auf der Adresse 0004 befindet Dieser Wert soll u der Initialisierungs routine des Computers zeigen Anders als bei den anderen hiernach zu besprechenden Exceptions erh lt auch der Supervisor Stack Pointer einen Anfangswert und zwar von der Adresse 0000 Selbstverst ndlich soll der Zeiger der SSP in RAM Random Access Memory Schreib Lese Speicher zeigen Weil der alte SSP dabei verloren geht sind das alte Status Register und der alte Programmz
258. r ndert 246 J Teepe 68000 Assembler B Befehls bersicht Aufruf Unterprogramm rm jump to subroutine JSR DL Format des Befehlswortes LZ 14 73 el 14 09 8 7 6 5 4 3 2 1 O 01 001 E10 110 Effektive Adress Mode Register Bit 5 0 Die Effektive Adresse w hlt die Sprung dresse an Die folgenden Adressierungsarten sind erlaubt Adr Art Mode Req Adr Art Mode Re Dn nicht erlaubt xxx W 111 000 An nicht erlaubt xxx L 111 001 An 010 R An d16 PC 111 010 An nicht erlaubt d8 PC Xi 11 011 An nicht erlaubt lt data gt nicht erlaubt d1l6 An 101 R An Erl uterung siehe d8 An Xi 110 R An Kapitel 5 Benutzen Sie BSR wenn Sie die Sprungadresse relativ adressieren und dabei Speicherplatz sparen m chten BRA finden Sie unter dem ber begriff Bcc JMP oder BRA wenn keine R ckkehr erw nscht ist 68000 Assembler J Teepe 247 B Befehls bersicht Lade effektive Adresse im Register LEA load effective address IL Quelle gt Ziel Operandgr e Langwort 32 Bit Assembler LEA lt ea gt An Quelle Ziel Syntax Beschreibung Der Quelloperand wird in das spezifizierte Adressregister kopiert Es werden immer alle 32 Bits des Adressregisters beeinflu t
259. r Quelloperand das Extend Bit und der Zieloperand werden addiert Das Ergebnis wird im Zieloperand abgespeichert Die Addition findet als BCD Arithmetik statt Die Operanden k nnen in zwei Arten adressiert werden Dn An F r eine Darstellung von Datenregister zu Datenregister Die Operanden sind die niederwertigsten Bytes des Daten registers Von Speicherplat u Speicherplat Diese Art ist gedacht um mehrere BCD Zahlen im Speicher zu addieren Die Operanden werden durch das adressiert im Pr dek Adressregister Da der 68000 B CD Zahlen m rement Mod Byte auf der mehrere Bytes ine weit it dem niederwertigsten h chsten k nnen Sie auf der h chsten Adresse anfangen automatisch re Beschrei F r BCD 2 Speicherstell ablegt Ur um abzuarbeiten bung siehe bei NBCD iffern siehe Kap 3 6 68000 Assembler J Teepe 139 B Befehls bersicht Addiere BCD Zahl mit Extend Bit r ABCD add decimal with extend Ill De Se E E a Re E Condition Code Register C wird gesetzt wenn ein dezimaler bertrag generiert wird Wird sonst zur ckgesetzt V nicht definiert Z wird gel scht wenn das Ergebnis ungleich Null ist Bleibt sonst unver ndert N nicht definiert X Erh lt den gleichen Wert wie das C Bit Format des Befehlswortes
260. r immediate EORI IL Konstante Ziel gt Ziel Operandgr e EORI B Byte 8 Bit FORI W dort 16 Bit EOR Langwort 32 Bit Assembler EORI x lt data gt lt ea gt Quelle Ziel Syntax x entspricht B W L Beschreibung Die Konstante die im Speicher unmittelbar dem Befehlswort folgt wird mit dem Zieloperand lt ea gt bitweise EXCLUSIVE ODER verkn pft Das Ergebnis wird im Zieloperand lt ea gt abgespeichert Die Gr e der Konstante entspricht der Operandgr e Et be a EE EC Condition Code Register C wird zur ckgesetzt V wird zur ckgesetzt Z wird gesetzt wenn das Ergebnis gleich Null ist rd sonst zur ckgesetzt N wird gesetzt wenn das hochwertige Bit des Ergebnisses gesetzt ist zeigt ein negatives Ergebnis Wird sonst zur ckgesetzt X bleibt unver ndert r fI 68000 Assembler J Teepe 233 B Befehls bersicht r Exclusives ODER mit Konstante EORI exclusive or immediate IL Format des Befehlswortes 15 14 13 12 J 11 10 9 8 7 6 5 4 3 2 1 0 Gr e Effektive Adress Mode Register 1 Argumentwort Wort Daten bzw Byte Daten L S 2 Argumentwort Langwort Daten einschlie lich voriges Wort Bit 7 6 Gr e Feld Aufbau der 00 Byte Befehl EORI B Argumentw
261. randen nach rechts rotiert werden Dabei entspricht 001 einer Position usw bis 111 sieben Positionen entspricht 000 entspricht aber acht Positionen Konstante Wenn i 1 Die Bits 11 9 w hlen ein Datenregister Dn an Die niederwertigen 6 Bits des Datenregisters Dn geben an um wieviele Positionen die Bits des Zieloperanden nach rechts rotiert werden Bit 7 6 Gr e Feld 00 Byte Befehl ROR B 01 Vort Befehl ROR 10 Langwort Befehl ROR W et Bit 5 i Feld 0 Die Bits 11 9 beziehen sich auf eine Konstante l Die Bits 11 9 beziehen sich auf ein Datenregister Bit 2 0 Register Feld w hlt ein Datenregister als Zieloperand an 326 J Teepe 68000 Assembler B Befehls bersicht Rotiere rechts ohne Extend Bit Ip rotate right without extend ROR IL Assembler Syntax ROR lt ea gt Die 16 Bits des angew hlten Speicherwortes werden um eine Position nach rechts rotiert Dazu geh rt das folgende Format des Befehlswortes 15 I4 13 CT TI 10 9 8 Pr 6 5 4 3 2 1 0 kea TTE EE O O O R EE T i Oe Eee Effektive Adress Mode Register Bit P P w hlt die Effektive Adress des Quell operanden an Die folgenden Adressierungsarten sind erlaubt
262. rgebnis gleich Null ist Jird sonst zur ckgesetzt N wird gesetzt wenn das hochwertige Bit des Ergebnisses gesetzt ist zeigt ein negatives Ergebnis Wird sonst zur ckgesetzt X bleibt unver ndert Format des Befehlswortes 15 714 13 III 10 9 8 7 6 e 4 3 2 1 0 E Ae AS O E E E S V Daten Operations Effektive Adress REgister Mode Mode Register Bit 11 9 Registerfeld w hlt eines der acht Datenregister an Bit 8 6 Feld Operationsmode EOR B EOR W EOR L Operation 100 101 110 Dn lt ea gt gt lt ea gt 68000 Assembler J Teepe 231 B Befehls bersicht rm Exclusives ODER EOR exclusive or logical IL Bit 5 0 spezifiziert die Effektive Adresse des zieloperanden Die folgenden Adressierungsarten sind erlaubt Adr Art Mode Req Adr Art Mode Re Dn 000 R Dn xxx W JL 000 An nicht erlaubt xxxX L 111 001 An 010 R An dl16 PC nicht erlaubt An 011 R An d8 PC Xi Inicht erlaubt An 100 R An lt data gt nicht erlaubt d16 An 101 R An Erl uterung siehe d8 An Xi 110 R An Kapitel 5 Benutzen Sie FORI wenn einer der Operanden ein Konstante ist Siehe auch AND OR NOT TST 232 J Teepe 68000 Assembler B Befehls bersicht Exclusives ODER mit Konstante rm exclusive o
263. rtigen Teile auf der niedrigen Adresse und die niederwertigen Teile auf der h heren Adresse abgespeichert werden Also befindet sich das hochwertige Datenteil 0123 auf der Adresse SOFFC und das niederwertige Teil 4567 auf der Adresse SOFFE Vor dem Befehl Nach dem Befehl MOVE L D2 SP MOVE L D2 SP D2 01234567 D2 501234567 SP 500001000 SP 00000FFC OFFC SP gt OFFC 4567 OFFE OFFE 0123 SP gt 1000 1000 1002 1002 68000 Assembler J Teepe 97 6 Stacks Exceptions und Interrupts Nachdem die Routine die den Inhalt von Register D2 zerst rt beendet ist m chten wir den alten Inhalt von D2 wieder aus unserem Stack hervorholen Beim Befehl MOVE L SP D2 pop D2 vom Stack wird zuerst der Inhalt der Speicherstelle wohin SP eigt in D2 kopiert Da SP den Wert SOFFC hat erh lt D2 den auf der Adresse SOFFC abgespeicherten Wert Das ist der Wert 01234567 Danach wird das Adressregister SP um die Datenl nge vergr ert Da die Datenl nge 4 ist erh lt SP den Wert SOFFC 4 1000 T Vor dem Befehl Nach dem Befehl MOVE L SP D2 MOVE L SP D2 D2 Ste D2 501234567 SP SO0000FFC SP 500001000 SP gt OFFC 4567 OFFC 4567 OFFE 0123 OFFE 0123 10009 2 SP gt 1000 10902 2 1002 Dieser Vorgang durch welchen das Register D2 wieder mit dem Wert aus dem Stack geladen wird bezeichnet man
264. rungsart Befehle deren Code mit Axxx oder FXXX anfangen Verletzung Privilegien Hardware Fehler Interrupts F r weitere Details siehe Kap 6 2 4 2 8 2 MOVE zum CCI ANDI zum CC EOR um CC SYSTEM STEUERBEFEHLE ZUM CCR N N Ke ORI zum CCR ODER 56 Kopiere zum Condition Code Register UND mit Konstante zum CCR Exclusives ODER mit Konstante zum CCR mit Konstante zum CCR J Teepe 68000 Assembler 5 Adressierungsarten von Befehlen Kapitel 5 Adressierungsarten der Befehl Die meisten hier oben genannten Befehle haben mehrer Adressierungsarten e Wa innerhalb eines Befehls kann ich di Operanden in verschiedenen Arten adressieren Dadurch da so viel Befehl in so vielen Adressierungsarten benutzt werden k nnen zeigt sich die Vielseitigkeit des 68000 Prozessors Vielzahl der vielleicht geworden das M glichkeiten Schwierigste In der B meisten fehl in Befehls bersicht im Anhang bersicht der n arten e twa nach Adr Art Model Reg diesem Muster ist des dieses ganzen Durch diese Kapitel Buches B steht bei den Adr Art Mode Req n Xxx W Adressierungs 000 D An A An Steht Dei iner Adressierungsart der Vermerk
265. rviert wird Stack Pointer Ein Register oder eine Stelle im Speicher das die Position des letzten Wortes oder Bytes des Stacks beinhaltet 136 J Teepe 68000 Assembler A Verzeichnis der Fachbegriffe Stapel gt Stack Supervisor Mode Der Modus wenn das S Bitr Bit 13 des Status Registers gesetzt ist Es werden dann auch privilegierte Befehle ausgef hrt Vektor Eine Position im Speicher die zu einer bestimmten Exception geh rt In dieser Speicherposition ist die Adresse der Routine enthalten die die Exception behandeln soll Wort Bine Bin rzahl von 16 Bits 2 Bytes User Mode Der Modus wenn das S Bit Bit 13 des Status Registers ur ckgesetzt St Die privilegierten Befehle werden dann nicht ausgef hrt Zweierkomplement Eine Darstellung von negativen Bin rzahlen wobei die negative Zahl als das Zweierkomplement der entsprechenden positiven Zahl dargestellt wird 68000 Assembler J Teepe 137 A Verzeichnis der Fachbegriffe 138 J Teepe 68000 Assembler Addiere BCD Zahl mit Extend Bit add decimal with extend B Befehls bersicht Mo ABcD L i Operandgr e ABCD B Byte 8 Bit ein Byte enth lt zwei BCD Zahlen Assembler ABCD B Dn Dn Syntax ABCD B An An Quelle Ziel Beschreibung De
266. s Lee Nee WE e WI ee GE e H en D een O OO a T EG OO 9 oO gal Ka bis 100 3FC bis Bild GT Zuordnung Reset Anfangswert SSP Reset Anfangswert PC Bus Fehler Adressfehler Illegaler Befehl Division durch Null CHK Befeh TRAPV Befehl Verletzung Privilegium Trace Line 1010 Emulator Line 1111 Emulator reser viert nicht initialisiert reser viert falscher Interrupt Ebene 1 Autovektor Interr Ebene 2 Autovektor Interr Ebene 3 Autovektor Interr Ebene 4 Autovektor Interr Ebene 5 Autovektor Interr Ebene 6 Autovektor Interr Ebene 7 Autovektor Interr TRAP Befehl 0 15 reser viert Anwender Interrupts 0 191 ZUORDNUNG VON EXCEPTIONS 68000 Assembler J Teepe up up up up up up up CT rr rr CT 109 6 Stacks Exceptions und Interrupts Das Wort reserviert in dieser Tabelle bedeutet da dieser Vektor durch den Hersteller des 68000 f uk nftige Erweiterungen reserviert ist Er bitte Sie diese Vektoren aus Kompatibilit tsgr nden nich zu belegen CT CT H CO Und warum sollten wir di reservierten Vektoren belegen Es sind noch so viele Vektoren frei da wir nicht das Risiko eingehen sollten da unser Programm auf U einem zuk nftigen 68000 Prozesso
267. s Siehe Kap 6 TRAP Exception TRAP Exception Vektor Vektor Adresse Vektor Vektor Adresse 0 32 50080 8 40 0040 1 33 50084 9 41 0044 2 34 0088 10 42 0048 3 33 SO0OSC EE 43 SOOAC 4 36 50090 12 44 00B0 5 371 50094 13 45 00B4 6 38 0098 14 46 00B8 7 39 009C 15 47 SOOBC Condition Code Register bleibt unver ndert 368 J Teepe 68000 Assembler B Befehls bersicht trap TRAP IL Format des Befehlswortes 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 O I0111I101I01I11I11I1I01I01I11I01I0 Vektor 4E4x Feld Vektor legt fest welche Exception 32 47 ausgel st wird TRAF eignet sich dazu um Befehle des Betriebssystems zu implementieren Eine hnliche Wirkung haben die Axxx und Fxxx Emulationen siehe bei Exception 10 und 11 nach Siehe auch TRAPV ILLEGAL 68000 Assembler J Teepe 369 B Befehls bersicht fc Trap wenn berlauf TRAPV trap on overflow Ill Wenn V Bit gesetzt dann wird Exception 7 ausgel st Operandgr e keine Assembler Syntax TRAPV Beschreibung denn das V Bit berlauf gesetzt ist wird die Exception 7 ausgel st siehe Kap 6 denn das V Bit berlauf dagegen zur ckgesetzt ist findet keine Aktion statt Der n chste Befehl im Speicher wird dann ausgef hrt Condition Code Register bleibt unver nder
268. s der Fachbegriffe Bit Abk rzung f r Binary digIT Ein Bit ist ein inzeln ziffer einer Bin rzahl Sie kann einen Wert von Eins oder Null annehmen Byte Eine Bin rzahl von acht Bit Die meisten Computer verarbeiten ein oder mehrere Bytes auf einmal Datei gt File Debugger Fin Programm das dem Programmierer eine Hilfe gibt Programme auf Fehler zu berpr fen und sie auszubessern Dezimal Eine Zahl in der jede Ziffer Werte von 0 9 annehmen kann Disassemblieren Umwandlung von Maschinenkode zur Assemblersprache Exception Die F higkeit des 68000 Prozessors den aktuellen Ablauf des Programms zu unterbrechen und etwas anderes zu tun Exceptions werden verursacht durch Programmfehler oder durch hardware Ereignisse File Eine Versammlung von Bytes blicherweise auf einer Platt oder iner Diskett abgespeichert Die File Datei hat einen Namen sie wird vom Betriebssystem als eine Einheit behandelt 132 J Teepe 68000 Assembler A Verzeichnis der Fachbegriffe Halbleiterspeicher Fine Halbleiterschaltung die Information aufhebt und auch wieder zur ckliefert Es gibt die folgenden Arten von Halbleiterspeichern O RAM Randorn Access Memory Schreib Lese Speicher CO ROM Read Only Memory Nur Lese Speicher Eine Art von R
269. s erleichtert hervorragend den Einstieg in die Maschinensprache Bei der Beschreibung der Befehle wird in der Erkl rung auf Befehle mit f hnlicher Wirkung hingewiesen Weiterhin erh lt der Leser hier umfang d reiche Informationen und bei auftauchenden Begriffen einen Verweis auf das entsprechend Kapitel im Buch e insg esamt sind im Buch mehrere hundert Querverweise aufgenom men Dadurch ist man an jeder Stelle dieses Buches imstande sich die n tige Information zu einem Begriff oder einer Erkl rung nachzu schlagen Das Buch will f r seine Leser auch eine Einf hrung zur Nutzung und Anwendung weiterer Literatur sein Deshalb zeichnet es sich auch ganz besonders dadurch aus da zu den definierten deutschen Fachbegriffen auch der entsprechende englische Ausdruck gezeigt re wird Wo es erforderlich war wird im Buch auch auf die Hardware des Compu ters Bezug genommen e Damit der Leser das Erlernte auch gleich in die Praxis umsetzen kann enth lt das Buch eine Diskette mit einer INTERAKTIVEN ASSEMBLER ENTWICKLUNGSSOFTWARE d Ein Buch f r alle ATARI Anwender die den richtigen Einstieg in die ASSEMBLER PROGRAMMIERUNG suchen Auf 3 2 Diskette enthalten WI ISBN 3 923250 77 0 INTERAKTIVES Bestell Nr B 436 ASSMELBER DM 59 ENTWICKLUNGSSYSTEM
270. se an die Adresse wird nach der bertragung jeweils um zwei vergr ert Das hochwertige Byte des Datenregisters wird uerst bertragen das nieder wertige Byt uletzt Di Speicheradresse wird angew hlt mit dem Adress register indirekt Adressierung mit Adressdifferen dl6 An Wenn die Adress gerad ist finden alle bertragungen zu den Datenleitungen D8 D15 statt wenn die Adresse ungerade ist zu den Datenleitungen DO D7 Die Anwendung von MOVEP ist nicht auf Prozessoren mit einer Datenbus Breite von 16 Bit beschr nkt Auch bei Prozessoren mit einer Busbreite von 8 oder 32 Bit bewirkt MOVEP da jedes zweit Byt angesprochen wird F r die Diskussion der hochwertigen und nieder wertigen Bits und Bytes und die geraden und ungeraden Speicherstellen siehe auch Kap 3 68000 Assembler J Teepe 285 B Befehls bersicht Eingabe Ausgabe zur von Peripherie MovEP move periperal data Ill BEISPIEL 1 32 Bit Daten bertragung von einem Daten register zu einer geraden Speicheradress MOVEP L Dl 1000 Byte Organisation im Register Dl 31 24 23 16 15 87 0 hochwertig mitte hochw mitte niedw niederwertig 3 BE ET E EEE Byte Organisation im Speicher 15 8 7 0 1000 hochwertig 1002 mitte hochwertig 1004 mitte niederw
271. ser Stelle wird die Exception Behandlungsroutine erwartet Der Prozessor findet diese Adress in der entspre chenden Speicherstell gem der Exceptiontabelle siehe Kap 6 2 2 68000 Assembler J Teepe 105 6 Stacks Exceptions und Interrupts 6 2 1 WAS PASSIERT BEI EINER EXCEPTION T Zuerst werden das Status Register und der Programmz hler gerettet Sie werden auf den System Stack gepushed Auf dem Stack befinden sich also der Inhalt des Status Registers wi r gerade vor Eintreten der Exception war und die Adresse des n chsten Befehls im Speicher Die Adresse des n chsten Befehls ist also die Adresse von diesem Befehl der im Speicher direkt auf den Befehl folgt bei dem die Exception ausgel st wurde Siehe auch Kap 6 1 2 2 Ablage von R ckkehradressen Nat rlich liegt der System Stack Pointer nicht auf s1000 Wir benutzen aber gerne konkrete Adressen in unseren Beispielen um damit irref hrende Begriffe wie oben und unten zu vermeiden Vor der Exception Nach der Exception SSP 500001000 SSP S00000FFA OFFA SSP gt OFFA Status Register OFFC OFFC PC hochw Wort OFFE OFFE PC niederw Wort SSP gt 1000 1000 1002 1002 106 J Teepe 68000 Assembler 6 Stacks Exceptions und Interrupts SCH Das Status Register wird modifiziert D
272. sicht Negiere BCD Zahl mit Extend Bit rm negate decimal with extend NBCD L Vor Anfang der Operation setzen Sie das Z Bit und l schen Sie das X Bit Gebrauchen Sie dazu z B den Befehl MOVE W 4 CCR Sie fangen die Abarbeitung bei dem niederwertigen Byte auf der h chsten Adresse an und benutzen di pr dekrement Adressierung An um nacheinander die hochwertigeren Bytes auf der niedrig werdenden Adresse zu adressieren enn bei der Verarbeitung eines Bytes ein Leihen bzw ein bertrag entsteht wird das X Bit gesetzt Dieses Leihen bzw dieser bertrag wird rechnerisch korrekt verarbeitet indem das n chsth here Byte um eins 1 verringert wird Das X Bit bernimmt im n chsten Aufruf diese Aufgabe Das Z Bit wird zur ckgesetzt wenn ein Byte ungleich Null ist Es ndert sich aber nicht wenn ein Byte Null ist Ist also am Ende der Operation das Z Bit immer noch gesetzt ist die ganze Bin rzahl Null en Siehe auch ABCD NEGX SBCD 68000 Assembler J Teepe 297 B Befehls bersicht m Negiere Operand NEG negate IL 0 Ziel gt Ziel Operandgr e NEG B Byte 8 Bit NEG W dort 16 Bit NEG Langwort 32 Bit Assembler NEG x lt ea gt Syntax x entspricht B W L Beschreibung Der Operand der Zieladress
273. sprungen ist f r wenn das N Bit gesetzt ist Bin rzahlen mit Vorzeichen gedacht aa 68000 Assembler J Teepe 177 B Befehls bersicht rm Springe bedingt Bce branch conditionally IL BNE springe wenn ungleich BPL BVC BVS BRA 178 Branch on Not Equal Es wird gesprungen wenn das Z Bit zur ckgesetzt ist springe wenn Plus Branch on PLus Es wird gesprungen wenn das N Bit zur ckgesetzt ist BPL ist f r Bin rzahlen mit Vorzeichen gedacht springe wenn kein berlauf Branch on oVerflow Clear Es wird gesprungen wenn das V Bit zur ckgesetzt ist springe wenn berlauf Branch on oVerflow Set Es wird gesprungen wenn das V Bit gesetzt ist springe unbedingt BRanch Always Es wird immer gesprungen unabh ngig vom CCR J Teepe 68000 Assembler B Befehls bersicht Springe bedingt rm branch conditionally Bce I bersicht der Sprung Bedingungen BCC BEQ BGT BLE BLT BNE BVC BRA BCS BGE BHI BLS BMI BPL BVS N Z V C vVVVVVVVVVVVVVVYV 0000 00071 H Qw 0 0 0 1 0100 0 0 1 0 1 0 0 gt 1000 0O 0 1 O 1 0 0 100 O 1 1 0 bedeutet der Sprung findet statt bedeutet der
274. ster bleibt unver ndert Format des Befehlswortes LZ L 13 St T0 9 8 7 6 5 4 3 2 1 O loal aa hoa 1 1 1710 I0 1101 a 0 Adress ls Ep le Fe Me ET Se SE Se ee ee Register Adressdifferenz 16 Bit Bit 2 0 Feld Adressregister spezifiziert in welchem Adressregister der alte Stack Pointer aufgehoben werden soll Feld Adressdifferenz enth lt eine 16 Bit Bin rzahl mit Vorzeichen Dieser Wert wird zu dem Stack Pointer addiert 68000 Assembler J Teepe 251 B Befehls bersicht Pi Logisches Schieben nach links LSL logical shift left IL Ziel verschoben durch lt Zahl gt gt Ziel Operandgr e SL B Byte 8 Bit SL W Wort 16 Bit SL L angwort 32 Bit S Wort 16 Bit Assembler SL x Dn Dn Quelle Ziel Syntax SL X lt data gt Dn x entspricht B W L SL lt ea gt Beschreibung Die Bits des Operanden werden nach links verschoben Bei jedem Schiebeschritt passiert folgendes o Das C Bit und das X Bit erhalten den Wert des hochwertigen Bits o Danach erh lt das hochwertige Bit den Wert des Bits rechts daneben Dieses Bit erh lt dann den ert seines rechten Nachbarns usw bis Bit 1 den ert von Bit 0 erh lt o Zum Schlu erh lt Bit 0 den Wert Null F r die Gesamtzahl der Schiebeschritte sieh weiter unten
275. t Format des Befehlswortes 4E76 Benutzen Sie CHK nn eine Grenz berschreitung ines Datenregisters eine xception verursachen soll bi oo zs Siehe auch TRAP ILLEGAL 370 J Teepe 68000 Assembler B Befehls bersicht Pr fe Operand test an Operand TST IL Pr fe Operand gt Condition Code Register Operandgr e TST B Byte 8 Bit TST W vort 16 Bit TST L Langwort 32 Bit Assembler TST x lt ea gt Syntax x entspricht B W L Beschreibung Der Operand wird mit Null verglichen und das Condition Code Register wird entsprechend gesetzt Der Operand wird nicht ver ndert ae Sa ee eo H Condition Code Register C wird zur ckgesetzt V wird zur ckgesetzt Z wird gesetzt wenn das Ergebnis gleich Null ist rd sonst zur ckgesetzt N wird gesetzt wenn das hochwertige Bit des Ergebnisses gesetzt ist zeigt ein negatives Ergebnis rd sonst zur ckgesetzt X bleibt unver ndert 68000 Assembler J Teepe 371 B Befehls bersicht r Pr fe Operand TST test an Operand IL Format des Befehlswortes 15 14 732 ek E E09 8 7 6 5 4 3 2 1 O O 11 0 0 321 0 1 O Gr e Effektive Adress l l l l Mode Register Bit 7 6 Gr e Feld Aufbau der 00 Byte Befehl TST B Argumentw rter
276. t als der Prozessor Priorit t findet der Interrupt statt Dann tritt eine Exception auf Es wird ein Sprung gemacht zu der Stelle wo die et wird Wir sagen dann der Interrupt wird Interrupt Behandlungsroutine erwart BE D ENT CO Wenn der Interrupt eine niedrigere En Ebene als der Prozessor Priorit t hat Interrupt Die Tatsache da Interrupt Anfrage stattgefunde abgespeichert Sobald die Pro unterbleibt der n in ha niedriger t wird aber essor Priorit t Interrupt doch noch bedient niedriger wird als die Interruptnummer wird der 126 J Teepe 68000 Assembler 6 Stacks Exceptions und Interrupts Die Priorit t der anliegenden Interrupts richtet sich nach dieser Tabelle IPL2 IPL1 IPLO Ergebnis 0 0 O kein Interrupt 0 0 d Interrupt 1 0 0 Interrupt 2 0 1 Interrupt 3 1 0 0 Interrupt 4 0 Interrupt 5 1 0 Interrupt 6 Interrupt 7 Bild 6 2 Interrupt Priorit ten enn die Interrupt Priorit t gr er Priorit t niedrigste h chste oder gleich der mu der Interrupt warten Englisch PENDING Es ist gef hrlich einen Interrupt Quelle bevor der erste bedient wurd Interruptmaske ist wird der Interrupt b
277. t ziel Operandgr e ADDA W Wort 16 Bit ADDA L Langwort 32 Bit Assembler ADDA x lt ea gt An Quelle Ziel Syntax x entspricht W L Beschreibung Der Quelloperand in lt ea gt wird bin r zum Ziel Adressregister An addiert Das Ergebnis wird im Ziel Adressregister An abgespeichert Vom Zielregister An werden s mtliche Bytes angewendet unabh ngig von der Operandgr e Condition Code Register keine nderungen 68000 Assembler J Teepe 145 B Befehls bersicht mr ADDA IL Format des Addiere Adresse add address Befehlswortes LE 32510 1029 SA 6 5 4 gt 3 2 1 0_ 1 11 O 1 Register Operations Effektive Adress Dn Mode Mode Register Bit 11 9 Registerfeld w hlt eines der acht Bit 8 011 Adressregister An an Es ist der Zieloperand 6 Feld Operations Mode ADDA W Wort Befehl Der Quellopperand wird mit dem gleichen Vorzeichen auf 32 Bit erweitert und vom Ziel Adressregister werden s mtliche 32 Bits angewen det 111 ADDA L Langwort Befeh Bit 5 0 Die Effektive Adresse w hlt den Quell operand an Alle Adressierungsarten sind erlaubt Adr Art Mode Reg Adr Art Mode R
278. t Daten einschlie lich voriges Wort Bit 7 6 Gr e Feld Aufbau der 00 Byte Befehl ORI B Argumentw rter 01 Wort Befehl ORI W siehe Kap 3 8 10 Langwort Befehl ORI L Bit 5 0 Die Effektive Adresse w hlt den Zieloperand an Die folgenden Adressierungsarten sind erlaubt Adr Art Mode Req Adr Art Mode Re Dn 000 R Dn xxx W 111 000 An nicht erlaubt xxx L 111 001 An 011 R An d16 PC nicht erlaubt An 010 R An d8 PC Xi nicht erlaubt An 100 R An lt data gt nicht erlaubt d16 An 101 R An Erl uterung siehe d8 An Xi 110 R An Kapitel 5 Argumentwort Bit 7 6 00 gt Datenfeld ist die niederwertig H lfte des 1 Argumentwortes Bit 7 6 01 gt Datenfeld ist das 1 Argumentwort Bit 7 6 10 gt Datenfeld ist 1 2 Argumentwort Siehe auch ANDI OR EORI NOT TST 68000 Assembler J Teepe 311 B Befehls bersicht Fc ODER mit Konstante zum CCR ORI inclusive or immediate to CCR zum CCR I Konstante v CCR gt CCR Operandgr e Byte 8 Bit Assembler ORI lt data gt CCR Quelle Ziel Syntax Beschreibung Die Konstante die im Speicher unmittelbar dem Befehlswort folgt wird mit dem Condition Code Register bitweise ODER verkn pft Das Ergebnis wird im Condition Code Register a
279. tenregister Bit 2 0 Register Feld w hlt ein Datenregister als Zieloperand an 68000 Assembler J Teepe 321 B Befehls bersicht Rotiere links ohne Extend Bit rt ROL rotate left without extend IL Assembler Syntax ROL lt ea gt Die 16 Bits des angew hlten Speicherwortes werden um eine Position nach links rotiert Dazu geh rt das folgende Format des Befehlswortes JK e EE E 8 7 6 5 4 3 2 1 Q DESE a e E TE CA 3 HA NS KA HESE Ta Bel e DE ee KEN Effektive Adress Mode Register Bit 5 0 w hlt die Effektive Adress des Quell operanden an Die folgenden Adressierungsarten sind erlaubt Adr Art Mode Reg Adr Art Mode Re Dn nicht erlaubt xxx W 111 000 An nicht erlaubt xxxX L 111 001 An 010 R An dl6 PC nicht erlaubt An 011 R An d8 PC Xi Jnicht erlaubt An 100 R An lt data gt nicht erlaubt d16 An 101 R An Erl uterung siehe d8 An Xi 110 R An Kapitel 5 F r die Adressierungsart Dn siehe auf der vorherigen Seite Benutzen Sie ROR wenn nach rechts rotiert werden soll ROXL Wenn die Rotation auch durch das X Bit laufen soll Siehe auch ASL ASR LSL LSR ROXR SWAP 322 J Teepe 68000 Assembler B Befehls bersicht Rotiere rechts ohne Extend Bit
280. tenregister nach rechts um soviele Positionen wie in der Konstante angegeben ist Die Maximalzahl ist acht Der Befeh ASR x Dn Dn x entspricht B W L schiebt ein Datenregister nach rechts Fin zweites Datenregister legt fest um wieviele Positionen geschoben wird CO Der Befehl ASR lt ea gt schiebt in Speicherstell 16 Bit um eine Position nach rechts 170 J Teepe 68000 Assembler B Befehls bersicht Arithmetisches Schieben nach rechts ri arithmetic shift right ASR DL er rer Condition Code Register C erh lt den Wert der zuletzt aus dem nieder wertigen Bit des Operanden herausgeschoben wurde Wird zur ckgesetzt bei Schieben um Null Positionen V wird zur ckgesetzt Z wird gesetzt wenn das Ergebnis gleich Null ist rd sonst zur ckgesetzt N wird gesetzt wenn das hochwertige Bit des Ergebnisses gesetzt ist zeigt ein negatives Ergebnis rd sonst zur ckgesetzt X erh lt den Wert der zuletzt aus dem nieder wertigen Bit des Operanden herausgeschoben wurde Bleibt unver ndert bei Schieben um Null Positionen 68000 Assembler J Teepe 171 B Befehls bersicht Ip Arithmetisches Schieben nach rechts ASR arithmetic shift right IL Assembler Syntax ASR x Dn Dn ASR x lt data gt Dn x entspricht B W L Dazu geh rt das folgende Format des Befehlswortes 15 14 13 III 10 9 8 7 6 5 4 3 2 1 0
281. tion 000 im Registerfeld w hlt nicht ein Register an er dient vielmehr dazu um zusammen mit dem Wert im Mode Feld die Adressi rungsart festzulegen Der Wort Operand adressiert eine 16 Bit Adresse im Speicher Dabei wird Bit 15 als Vorzeichen benutzt Die Werte s0000 S7FFF adressieren daher die Speicherstellen 00000000 bis SO0007FFF also die ersten 32 kByte des Speicherbereichs Die Werte 8000 bis SFFFF adressieren die Speicherstellen FFFF8000 bis FFFFFFFF Da bei dem 68000 die h chstwertigen 8 Adressbits nicht ausgewertet werden ist der Einsatz dieser Werte nicht sinnvoll Mit der Adressierungsart absolute lang Adressi rung n chster Abschnitt k nnen Sie s mtliche Speicherpl tze absolut adressieren 76 J Teepe 68000 Assembler 5 Adressierungsarten von Befehlen Assembler Syntax xxX W xxx ist eine 16 Bit Adresse Adr Art Mode Re xxx W 111 000 Vorgang Adresse Operand xxx W Argumentwort Speicherstell BEISPIEL Der Befehl MOVE L S1111 31 v 0 kopiert den Inhalt der Speicherstelle 00001111 in das Datenregister D1 Zur Erinnerung an der Erweiterung L hinter MOVE im Beispi sehen wir da vier Byte kopiert werden siehe Kap 3 4 Die Anordnung dieser Bytes wird in Kap 3 5 erl utert 68000 Assembler J
282. tzt V wird gesetzt wenn ein berlauf generiert wird rd sonst zur ckgesetzt Z wird gel scht wenn das Ergebnis ungleich Null Iste Bleibt sonst unver ndert N wird gesetzt wenn das Ergebnis negativ ist rd sonst zur ckgesetzt X Erh lt n gleichen Wert wie das C Bit 68000 Assembler J Teepe 363 B Befehls bersicht nenn Subtrahiere mit Extend Bit SUBx subtract with extend IL Format des Befehlswortes T5 14 I3 EE TO 29 8 32 1 0 de EAO EAEE OCL a Ziel it A Quell l l l Register Register Bit 11 9 Registerfeld w hlt eines der acht Daten oder Adressregister als Zieloperand an Bit 3 Das A Bit w hlt die Adressierungsart an 0 Adressierungsart Dn Die Operation erfolgt von Datenregister zu Datenregister 1 Adressierungsart An Die Operation erfolgt von Speicherplat u Speicherplatz Die Operan den werden durch das Adressregister in Pr dekrement mode adressiert Siehe Kap 5 Bit 2 0 Registerfeld w hlt eines der acht Daten oder Adressregister als Quelloperand an Siehe auch ADDX SUBI SBCD SUB SUBA SUBQ 364 J Teepe 68000 Assembler B Befehls bersicht Vertausche Register H lften rm swap register halves SWAP L Register 16 31 lt gt Register 0 15 Operandgr e
283. tzt wenn ein Leihen generiert wird rd sonst zur ckgesetzt V wird gesetzt wenn ein berlauf generiert wird rd sonst zur ckgesetzt Z wird gesetzt wenn das Ergebnis gleich Null ist rd sonst zur ckgesetzt N wird gesetzt wenn das Ergebnis negativ ist rd sonst zur ckgesetzt X Erh lt den gleichen Wert wie das C Bit 358 J Teepe 68000 Assembler B Befehls bersicht Subtrahiere Konstante r subtract immediate SUBI L Format des Befehlswortes LZ 14 T3 12 j 11 109 8 H 6 D 4 3 2 1 O O IO0I 0 0 O0 121 0O0 O Gr e Effektive Adress ode Register 1 Argumentwort Wort Daten bzw Byte Daten Ye Rp ZB DE EN 2 Argumentwort Langwort Daten einschlie lich voriges Wort Bit 7 6 Gr e Feld Aufbau der 00 Byte Befehl SUBI B Argumentw rter 01 Wort Befehl SUBI W siehe Kap 3 8 10 Langwort Befehl SUBI L Bit 5 0 Die Effektive Adresse w hlt den Zieloperand an Die folgenden Adressierungsarten sind erlaubt Adr Art Mode Req Adr Art Mode Re Dn 000 R Dn xxx W 111 000 An nicht erlaubt xxx L 111 001 An 010 R An d16 PC nicht erlaubt An 011 R An d8 PC Xi Jnicht erlaubt An 100 R An
284. ubt lt data gt nicht erlaubt d16 An 101 R An Erl uterung siehe d8 An Xi 110 R An Kapitel 5 PROGRAMMIERHINWEIS Die Sprungadresse kann auch das Ergebnis einer Berechnung sein Der Sprung kann dann direkt zur richtigen Stell innerhalb einer Tabelle stattfinden So richtet Sprungadresse sich beim nach der einer Konstante Benutzen Sie JSR BRA wenn Sie m chten wenn Sie relat Befehl Summ JMP zweier 8 A3 D4 die und Speicherplat finden Sie un 68000 Assembler J Teepe sparen m chten Register ein Unterprogramm aufrufen tiv adressieren und dabei BRA ter dem Oberbegriff Bee 245 B Befehls bersicht rm Aufruf Unterprogramm JSR jump to subroutine IL SP 4 gt SP PC gt SP lt ea gt gt PC Assembler Syntax JSR lt ea gt Beschreibung Die 32 Bit Adress des Befehls der im Speicher direkt auf den BSR Befehl folgt wird auf den Stack gepushed Danach geht die Ausf hrung des Programms weiter bei der angegebenen Speicheradress Ein Beispiel wird in Kap 3 10 gegeben PROGRAMMIERHINWEIS Beenden Sie das Unterprogramm mit RTS Die Programmausfuhr geht dann weiter mit dem Befehl der im Speicher direkt auf den JSR Befehl folgt Condition Code Register bleibt unve
285. ute Gr nden auch dann in Assembler zu programmieren wenn viele Hochsprachen zur Verf gung stehen Die Benutzung des Assemblers erg nzt damit die M glichkeiten die die h heren Sprachen uns bieten Lt COMPILERBAU Der erste Compiler er wandelt ein Programm einer h heren Sprache in ein Programm in Maschinensprache um war in Assembler bzw Maschinencode geschrieben weil es z Zt der Entwicklung des Compilers noch keinen Compiler gab das Huhn und Ei Effekt 10 J Teepe 68000 Assembler 1 Einf hrung Man kann aber mit einem provisorischen Assembler einen PLM Compiler schreiben und dann anschlie end den schicken Macro Assembler in PLM programmieren wie Intel es tat Man kann nat rlich einen Basic nterpreter in C schreiben Hiermit wird die Programmierung in Assembler aber nicht berfl ssig Jeder Compiler braucht irgendeinen Sockel der in Assembler bzw Maschinencode erstellt wurde Die Qualit t dieses Assembler Sockels bestimmt die Leistungsf higkeit des Compilers entscheidend mit 1 232 GESCHWINDIGKEIT Wenn Sie ein Programm in Assembler erstellen ist die Ablaufzeit des Programms meistens um ein vielfaches k rzer als wenn Sie das Programm in einer h heren Sprache schreiben Als relativ schnell gelten Programme von einem C Compiler als ausgesprochen
286. w hlt die obere Grenze an Die folgenden Adressierungsarten sind erlaubt Adr Art Mode Req Adr Art Mode Re Dn 000 R Dn xxx W 111 000 An nicht erlaubt xxx L 111 001 An 010 R An al6 PC 111 010 An 01 R An d8 PC Xi 111 011 An 100 R An lt data gt 111 100 d16 An 101 R An Erl uterung siehe d8 An Xi 110 R An Kapitel 5 Benutzen Sie TRAPV wenn in gesetztes V Bit eine Exception ausl sen soll 204 J Teepe 68000 Assembler B Befehls bersicht L sche Operand m clear an operand CIR IL 0 gt Ziel Operandgr e CLR B Byte 8 Bit CLR W Jort 16 Bit CLR L Langwort 32 Bit Assembler CLR x lt ea gt Syntax x entspricht B W L Beschreibung Das Ziel erh lt den Wert Null Der Operandgr e kann ein Byte ein Wort oder ein Langwort sein based m Condition Code Register wird zur ckgesetzt wird zur ckgesetzt wird gesetzt wird zur ckgesetzt bleibt unver ndert IT CT Gd E bs CH CT CT 68000 Assembler J Teepe 205 B Befehls bersicht rm L sche Operand CIR clear an operand L Format des Befehlswortes 15 14 732 ek E E09 8 7 6 5 4 3 2 1 O l De HEEL EG ke EOAR E O Gr e Effektive Adress
287. wa durch den neuesten C Compiler so viel besser geworden ist da man damit schneller und zuverl ssiger zum Ergebnis kommt Und den Atari ST und den tollen Prozessor in diesem Buch gibt s nicht mehr allerdings h tte es ohne die damaligen Prozessoren die heutigen Prozessoren nicht gegeben denn man braucht bekanntlich einen Computer um einen Computer entwerfen zu k nnen Und den Heim Verlag gibt s nicht mehr Und den Nachfolgeverlag im Ortsmitte von Darmstadt Eberstadt gibt s auch nicht mehr Ich habe mich daher entschieden dieses entsprechend obsolet gewordenes Buch selber aufzulegen damit ich es mir nochmal anschauen und anderen zeigen kann Joris Teepe Kleve 2010 68000 Assembler J Teepe 399 H 68000 ASSEMBLER Einf hrung in die ASSEMBLER PROGRAMMIERUNG t t WICHTIGE MERKMALE i Dieses Buch ist eine Einf hrung und damit f r alle ATARI Besitzer din leicht verst ndlicher Einstieg in die M glichkeiten der ASSEMBLER PROGRAMMIERUNG Vorausgesetzt wird die Beherrschung wenig e stens einer h heren Computersprache die Bedienung des Betriebs j Aueren und das Rechnen mit bin ren und hexadezimalen Zahlen e Gro er Wert wurde auf eine klare Sprache und Darstellung gelegt So wurde Fachjargon vermieden Alle neuen Fachbegriffe werden deutlich 1 und didaktisch definiert Bewu t ist das Eingangsniveau niedrig gehalten Kenntnisse von ande ren ASSEMBLERN sind nicht erforderlich Die
288. wort falsch l u 3 89 41 y Wenn wir Vorzeichen B von Langwort m ssen wir aber FES u Byte oder aufpassen MWANDLUNG VON KLEIN groben Formaten umwandeln n geht das relativ einfach Langwort Wir kopieren das Byte rechtsb ndig i umwandeln von da von dort zu nichts EN ZU GROSSEN FORMATI EN F Bin rzahlen mit Vorzeichen von kleinen zu n chten z B Byte zu n das Langwort hinein und kopieren zus tzlich das Vorzeichenbit in belegten Bitpositionen alle nicht 0000000000000000000000000000001 Vorzeichenbit v 00000 0000000000000 Bit 76543210 011 Bin rzahl 3 in Byte 01 zum Wort zum Langwort BEISPIEL 2 Vorzeichenbit vy Bit 19 4 5 9876543210 1111111111111100 Bin rzahl 4 in Wort 11111111111111111111111111111100 zum Langwort Sie brauchen das nicht selber auszut fteln der Befehl EXT hrt das problem 68000 Assembler J Teepe os f r Sie durch 41 3 Datenstrukturen 3 5 4 2 UMWANDLUNG VON GROSSEN ZU KL T NEN FORMATEN Wenn wir Bin rzahlen mit Vorzeichen von gro en zu kleinen Formaten umwandeln m chten z B von Byte zu Langwort geht das noch einfacher indem wir die nicht ben tigten Bits an der linken Seite die hochwertig
289. yte 1 004 Byte 0 hochwertiges Byte Wort _ Byte 1 niederwert Byte 2 Bild 3 4 Adressierung nachfolgender W rter 8 Bit wir sehen hier da das hochwertig Byt ines Wortes auf di niedrige Adresse abgelegt wird Wenn ich also das Wort 1234 in die Speicheradresse 1000 abspeichere dann kommt 12 in 1000 und 34 in STOOT Programmierer die fr her mit Int gearbeitet haben gew hnt da 12 bzw 012H m ssen in 1001 und 34 in 1000 hier umdenken speichert wird 68000 Assembler J Teepe denn sie sind abge 35 3 Datenstrukturen 7 6 5 4 3 2 I 0 Byte 0 hochwertiges 1000 Byte 1 Langwort dort Byte 2 0 niederwertiges Byte 3 dort Byte 0 hochwertiges 1004 Byte 1 Langwort dort Byte 2 1 niederwertiges Byte 3 dort MSB LSB Bild 3 5 Adressierung nachfolgender Langw rter 8 Bit Auch die Adressierung der Langw rter ist hier konsequent durchgef hrt die hochwertigsten Teile kommen an die niedrigste Adresse 3 932 DARSTELLUNG IN 16 BIT Wenn wir jetzt ber cksichtigen da wir tats chlich einen 16 Bit Prozessor statt inem 8 Bit Prozessor haben erscheinen die nachfolgenden Diagramme Die Erscheinung nach au en aber genau die gleiche um Programmierer ist als die hier oben in 3 5 1 beschrieben Deswegen auch Achtung hier Intel Program
Download Pdf Manuals
Related Search
Related Contents
EDGE Tech QL Series User's Manual Broadband IP-Sharer User Manual Avaya Configuring SNMP, BOOTP, DHCP, and RARP Services User's Manual A 新製品・新商品 Schlage F-Series User's Manual - Bematech RESERVE_boisson anti age fiche produit.p[...] NuVo NV-WA40W Wall Zone Amplifier charte (63.35 Ko, pdf) - Université de Bordeaux Bugatti Vela Evolution Copyright © All rights reserved.
Failed to retrieve file