ATARI ST Programmieren in Maschinensprache

ATARI ST
Programmieren
in Maschinensprache
Christian Nieber
SYBEX
DÜSSELDORF • SAN FRANCISCO • PARIS • LONDON
Inhaltsverzeichnis
Vorwort
9
Kapitel 1: Was ist Maschinensprache?
Der Aufbau eines Computers
Wie sage ich's meinem Computer
Und was kommt nach dem Assembler?
Was tut ein Linker?
13
13
17
19
22
Kapitel 2: Einführung in Maschinensprache
Der innere Aufbau des MC68000
Erste Schritte
Die Addition in Maschinensprache und das Userbyte
Die Subtraktion in Maschinensprache
Die Multiplikation
Die Division
SHIFT und ROTATE
SHIFT-Befehle
ROTATE-Befehle
Logische Operationen
Der AND-Befehl
DerOR-Befehl
Der EOR-Befehl
Der NOT-Befehl
Bedingte Verzweigungen
Flags als Verzweigungsbedingung
Verzweigungen nach CMP
Sonstige Verzweigungen
Die DBcc-Befehle
Adreßberechnung bei Verzweigungsbefehlen
Die Adressierungsarten des MC68000
Register-direkte Adressierung
Konstanten-Adressierung
Absolute Adressierung
Indirekte Adressierung des Speichers
Implizite Adressierung eines Registers
Programmzähler-relative Adressierung
25
25
29
32
37
38
43
45
45
51
52
53
54
55
56
57
59
59
62
62
65
66
67
67
68
68
72
72
ATARI ST - Programmieren in Maschinensprache
Stackorganisation und Programmsprünge
DerStack
Unterprogramme
Parameterübergabe zu Unterprogrammen
Kontrollstrukturen in Assembler
IF-THEN-ELSE
Realisierung von Schleifen
Organisation von ATARI ST-Programmen
Grundlagen der Bedienung eines Assemblers
Befehle
Assembler-Direktiven
Das erste lauffähige Programm
Die Benutzung einer RAM-Disk
Makros
Die Benutzung eines Debuggers
Besonderheiten des Prozessors MC68000
Der Supervisormodus
Das Systembyte
.'
Kapitel 3: Die Befehle des MC68000 in systematischer Reihenfolge
Ein-Operand-Befehle
Schieben und Rotieren
Arithmetische und logische Ein-Operand-Befehle
EXTundSWAP
Zwei-Operand-Befehle
Die MOVE-Befehle
Arithmetische Befehle
Logische Befehle
Bit-Befehle
Bedingte Befehle
Sprungbefehle
Sonstige Befehle
74
74
76
78
81
81
82
84
90
91
95
101
111
112
118
123
123
124
129
131
: 132
142
150
153
153
165
189
196
201
206
214
Kapitel 4: Zusammenarbeit mit dem Betriebssystem
DasGEMDOS
DasBIOS
DasXBIOS
Die GEM-Aufrufe
AES-Aufrufe
Das VDI (Virtual Device Interface)
Die LINE-A-Routinen
227
228
241
245
254
255
257
261
Kapitel 5: Einige nützliche Routinen
Ausgabe von Zeichenketten
269
269
Inhaltsverzeichnis
Eingabe von Zeichenketten
Ausgabe von hexadezimalen Zahlen
Eingabe von hexadezimalen Zahlen
Ausgabe von Dezimalzahlen
Eingabe von Dezimalzahlen
Die Langwortdivision
272
277
278
280
284
286
Kapitel 6: Maschinennahe Programmierung
Setzen eines Punktes in hoher Auflösung
Setzen eines Punktes in niedriger Auflösung
Linien ziehen in hoher und niedriger Auflösung
Programmierung von Interrupts
Klangerzeugung durch direkte Amplitudensteuerung
EineRAM-Disk
289
289
292
296
308
319
325
Kapitel 7: Tips und Tricks für schnellere Programme
Optimierungen auf Befehlsebene
Allgemeine Optimierungen
Optimierung von MO VE-Befehlen
Optimierung von arithmetischen Befehlen
Optimierung von Verzweigungsbefehlen
Selbstmodifizierender Code
Optimierung auf der Realisierungsebene
Optimierung auf der Algorithmenebene
333
334
335
336
338
341
342
344
350
Anhang A: Zahlendarstellung in Maschinensprache
355
Anhang B: Unterschiede verschiedener Assembler
365
Anhang C: Tips für Umsteiger
373
Anhang D: Tips zum Einbinden von Assembler
in andere Programmiersprachen
375
Anhang E: Tips zur Fehlersuche
395
Anhang F: Befehlstabelle
Adressierungsarten und Ausführungszeiten
399
Anhang G: Glossar
409
Stichwortverzeichnis
419