# Assembler-Programmierung für x86-Prozessoren

Dieses Buch steht im Regal Programmierung.

## Vorwort

Dieses Buch ist eine Einführung in Assembler, die ihren Lesern gleichzeitig ein besseres Verständnis darüber geben will, wie Computer wirklich in ihrem Inneren arbeiten. Wenn der Leser die Lower-Level-Grundlagen der Programmierung verstanden hat, kann er oftmals auch in Hochsprachen viel produktivere Programme entwickeln. Assembler (englisch: Assembly Language) ist eine äußerst maschinennahe Sprache, da der Programmierer, im Gegensatz zu Hochsprachen, mit den Befehlen der CPU arbeitet.
Das Programmieren in Assembler ist, eine gute Einführung vorausgesetzt, nicht schwerer als das Erlernen einer modernen Programmiersprache wie C, C++, Java oder C#. Leider gibt es in der deutschsprachigen Literatur relativ wenige gute Bücher über die Programmierung in Assembler. Dieses Werk soll diese Lücke schließen.
In der Praxis wird Assembler bei sehr zeitkritischen Projekten eingesetzt. Häufig wird Assembler nicht alleine verwendet, sondern der Programmcode wird in Programme anderer Sprachen eingebettet. Dies bezeichnet man als Inline-Programmierung, das heißt eine Hochsprache greift auf Assemblerbefehle zurück.

## Zusammenfassung des Projekts

„Assembler-Programmierung für x86-Prozessoren“ ist nach Einschätzung seiner Autoren zu 30 % fertig
* Buchpatenschaft/Ansprechperson: Florian
* Sind Co-Autoren gegenwärtig erwünscht? Ja, sehr gerne.
* Zielgruppe: Das Buch richtet sich an Assembler-Anfänger. Es werden jedoch Grundkenntnisse in einer imperativen Programmiersprache vorausgesetzt. Es wird nicht erklärt, was eine Schleife ist.
* Projektumfang: In einem ersten Schritt soll zunächst die Programmierung mit der 8086/88 unter DOS beschrieben werden. Wenn das Buch soweit vollständig ist, soll es schrittweise ergänzt werden um Themen wie Makros, Opcode, Inline-Programmierung, 80x87-Coprozessorprogrammierung, 80286 / 80386 Protected Mode, Paging, Virtueller 8086-Modus und Systemprogrammierung unter Windows und Linux sowie MMX/SSE.
* Themenbeschreibung: Das Buch beschreibt die Programmierung mit Assembler auf Rechnern der 80x86-Architektur
* Lernziele: Die Grundlagen der Assemblerprogrammierung auf einem 8086/88 erlernen. Wie oben beschrieben, soll das Buch der Reihe nach und nach um fortgeschrittene Themen ergänzt werden.
* Abgrenzung zu anderen Wikibooks: Maschinensprache i8086 enthält elementare Programme, um einige Grundlagen sowie die Methode des Testens von Programmen zu lernen.
* Policies:
   * Kommentare und Anregungen sind erwünscht. Auch bezüglich der Themen, die gewünscht werden.
   * Auch Verständnisfragen von Anfängern zu diesem Buch sind ausdrücklich erwünscht. Diese bitte auf die Diskussionsseite des entsprechenden Kapitels stellen.
* Aufbau des Buches: Siehe Inhaltsverzeichnis. Weitere Kapitel werden schrittweise ergänzt.

## Inhaltsverzeichnis
### Einleitung

Hier wird ein kleiner Überblick über die Entwicklung von der Maschinen- zur Assemblersprache gegeben. Es wird geklärt, wo Assembler nützlich ist, welche Software benötigt wird, um in die Assemblerprogrammierung einzusteigen und welche Vorkenntnisse vorausgesetzt werden.

### Grundlagen

Hier wird eine Einführung in die verschiedenen Zahlensysteme gegeben, die in Zusammenhang mit hardwarenaher Programmierung verwendet werden. Dazu wird ein kleiner Überblick über verschiedene Zeichencodierungen und Zeichensätze, sowie die Probleme die damit einhergehen, gegeben. Wer sich bereits mit der Verwendung von Binär- und Hexadezimalzahlen auskennt, kann dieses Kapitel getrost überspringen.
* Der Prozessor
* Das erste Assemblerprogramm
* Rechnen mit dem Assembler
* Sprünge und Schleifen
* Unterprogramme und Interrupts
* Stringbefehle

## Referenz

* Befehlsreferenz, gruppiert
* Befehlsliste, alphabetisch
* Literatur und Weblinks