Die PC Assemblersprache


 

Paul A. Carter
Inhaltsverzeichnis
Vorwort xi
2 Grundlagen der Assemblersprache 25
3 Bitoperationen 43
4 Unterprogramme 59
5 Arrays 85
6 Fließpunkt 105
7 Strukturen und C++ 127
A 80x86 Befehle 155
Index 162
Tabellenverzeichnis
Vorwort
Ziel
Danksagungen
Quellen im Internet1
Feedback
1.1 Zahlensysteme
1.1.1 Dezimal
1.1.2 Bin¨ar
1.1.3 Hexadezimal
1.2 Aufbau eines Computers
1.2.1 Speicher
1.2.2 Die CPU
1.2.3 Die 80x86 CPU-Familie
1.2.4 16 bit Register der 8086
1.2.5 32 bit Register der 80386
1.2.6 Real Mode
1.2.7 16-bit Protected Mode
1.2.8 32-bit Protected Mode
1.2.9 Interrupts
1.3 Assemblersprache
1.3.1 Maschinensprache
1.3.2 Assemblersprache
1.3.3 Operanden der Befehle
1.3.4 Grundlegende Befehle
1.3.5 Direktiven
1.3.6 Eingabe und Ausgabe (I/O)
1.3.7 Debugging (Fehlersuche)
1.4 Ein Programm erstellen
1.4.1 Erstes Programm
1.4.2 Compiler-Abh¨angigkeiten
1.4.3 Assemblierung des Codes
1.4.4 Kompilation des C Codes
1.4.5 Linken der Objektdateien
1.4.6 Die Ausgabe eines Assembler-Listings verstehen
1.5 Programmgeru¨st
2.1 Arbeiten mit Integern (Ganzzahlen)
2.1.1 Die Darstellung von Integerwerten
2.1.2 Vorzeichenerweiterung
2.1.3 Arithmetik im Zweierkomplement
2.1.4 Beispielprogramm
2.1.5 Arithmetik mit erho¨hter Genauigkeit
2.2 Kontrollstrukturen
2.2.1 Vergleiche
2.2.2 Sprungbefehle
2.3 Die U¨ bersetzung von Standard-Kontrollstrukturen
2.3.1 If Anweisungen
2.3.2 While Schleifen
2.3.3 Do while Schleifen
2.4 Beispiel: Primzahlsuche
3.1 Schiebeoperationen
3.1.1 Logische Schiebeoperationen
3.1.2 Anwendungen der Schiebeoperationen
3.1.3 Arithmetische Schiebeoperationen
3.1.4 Rotierbefehle
3.1.5 Eine einfache Anwendung
3.2 Boolesche bitweise Operationen
3.2.1 Die AND Operation
3.2.2 Die OR Operation
3.2.3 Die XOR Operation
3.2.4 Die NOT Operation
3.2.6 Anwendungen der Bitoperationen
3.3 Vermeidung bedingter Spru¨nge
3.4 Bitmanipulationen in C
3.4.1 Die bitweisen Operatoren von C
3.4.2 Die Verwendung bitweiser Operatoren in C
3.5 Big and little endian Repr¨asentationen
3.5.1 Wann man sich um die Bytefolge sorgen muss
3.6 Bits z¨ahlen
3.6.1 Methode Eins
3.6.2 Methode Zwei
3.6.3 Methode Drei
4.1 Indirekte Adressierung
4.2 Einfaches Unterprogramm-Beispiel
4.3 Der Stack
4.5 Aufrufkonventionen
4.5.1 Parameteru¨bergabe u¨ber den Stack
4.5.2 Lokale Variable auf dem Stack
4.6 Programme mit mehreren Modulen
4.7 Assembler in Verbindung mit C
4.7.1 Register sichern
4.7.2 Labels von Funktionen
4.7.3 Parameteru¨bergabe
4.7.4 Berechnen der Adressen lokaler Variablen
4.7.5 Ru¨ckgabewerte
4.7.6 Andere Aufrufkonventionen
4.7.7 Beispiele
4.7.8 Der Aufruf von C Funktionen von Assembler aus
4.8 Reentrante und rekursive Unterprogramme
4.8.1 Rekursive Unterprogramme
4.8.2 Wiederholung der Speicherklassen von C
5.1 Einfu¨hrung
5.1.1 Arrays definieren
5.1.2 Auf Elemente des Arrays zugreifen
5.1.3 Fortgeschrittenere indirekte Adressierung
5.1.4 Beispiel
5.1.5 Mehrdimensionale Arrays
5.2 Array/String Befehle
5.2.1 Speicherbereiche lesen und schreiben
5.2.2 Das REP Befehlspr¨afix
5.2.3 Vergleichende Stringbefehle
5.2.4 Die REPx Befehlspr¨afixe
5.2.5 Beispiel
6.1 Fließpunkt-Darstellung
6.1.1 Nicht-ganzzahlige bin¨are Zahlen
6.1.2 IEEE Fließpunkt Repr¨asentation
6.2 Fließpunkt-Arithmetik
6.2.1 Addition
6.2.2 Subtraktion
6.2.3 Multiplikation und Division
6.2.4 Ableger fu¨r die Programmierung
6.3 Der numerische Coprozessor
6.3.1 Hardware
6.3.2 Befehle
6.4 Beispiele
6.4.1 Quadratische Formel
6.4.2 Einen Array aus einer Datei lesen
6.4.3 Primzahlen finden
7.1 Strukturen
7.1.1 Einfu¨hrung
7.1.2 Speicherausrichtung
7.1.3 Bitfelder
7.1.4 Strukturen in Assembler benutzen
7.2 Assembler und C++
7.2.1 U¨ berladung und Dekoration5 von Namen
7.2.2 Referenzen
7.2.3 Inline Funktionen
7.2.4 Klassen
7.2.5 Vererbung und Polymorphismus
7.2.6 Andere C++ Merkmale
A.1 Nicht Fließpunkt-Befehle
A.2 Fließpunkt-Befehle
Index