Fast alle Arithmetikbefehle der 8086/88 - CPU arbeiten mit schlichten 16 - Bit Zahlen. Dabei beschränkt sich der Befehlssatz auf die Grundrechenoperationen. Aus der Sicht des Prozessors \"hochkomplizierte\" Funktion wie Wurzel oder gar trigonometrische Funktionen gibt es nicht. Das hängt damit zusammen, daß diese Funktionen nur relativ selten benötigt werden. Der größte Teil seiner Arbeit besteht darin, einen Wert von einem Register in den Speicher zu transportieren oder zwei Zahlen zu addieren.
Dabei werden die vorhandenen einfachen Befehle extrem schnell ausgeführt. Rein theoretisch könnten mit einem 8 MHz - CPU in einer Sekunde fast 3,5 Millionen (!) Additionen ausgeführt werden (In der Praxis verlangsamt der Speicherzugriff die Arbeit erheblich).
Die 8086/88 - CPU kann mit zwei verschiedenen Zahlenformaten arbeiten :
Binärformat - Hier wird jedes Bit als Zweierpotenz angesehen. Damit reicht das Format bei vorzeichenlosen Zahlen von 0 bis 255 (8-Bit) bzw. 65535 (16-Bit) und bei vorzeichenbehafteten Zahlen (sogenannte Zweierkomplemetzahlen) von -128 bis +127 bzw. von -32768 bis +32767.
Dezimalformat - Diese sind immer vorzeichenlos. Bei einer Zahl im BCD-Format (\"Binary Coded Decimal\") wird jede Ziffer separat durch eine 4- oder 8-Bit Zahl dargestellt. Bei einer gepackten Zahl werden in einem Byte zwei Ziffern gespeichert (in jeder Hälfte eine), während im ungepackten Format nur der niederwertige Teil belegt ist, der höher-wertige also immer Null enthält. Ein Byte kann also 0 bis 99 darstellen. (siehe 1.8.)
Die Frage ist, wie unterscheidet der Prozessor die beiden Formate ? Antwort : Er tut es gar nicht. Für die beiden Formate sind dieselben Rechenbefehle zuständig. Bei BCD-Zahlen müssen nach der Berechnung spezielle Korrekturbefehle angewandt werden.
|