Architektur und Organisation von Rechnersystemen (im Rahmen von Informatik III) Thema heute: Zahlendarstellungen Micro_ArcOrg17-V4 am 21.05.2016 Ulrich Schaarschmidt HS Düsseldorf, WS 2017/18 Quellenhinweise Rübel, Manfred: 8/16 bit-mikroprozessorsysteme Teubner Verlag, 1991 Rübel, Manfred; Schaarschmidt, Ulrich: Elektronik-Aufgaben, Digitale Schaltungen und Systeme Vieweg und Teubner Verlag, 1996 (c) U.G. Schaarschmidt, HS D 2 (c) Prof. Dr. U. G. Schaarschmidt 1
Zahlendarstellung im Rechner Einfache Addition Addiere die Zahlen 25 + 34. (= 59) In ASCII 3235h + 3334h Kann man rechnen, indem die höheren Nibbles der jeweiligen Bytes stehen bleiben und die unteren addiert werden. 3235h + 3334h = 3539h. (= 59d) Nur der Rechner ist nicht zu überzeugen nur bestimmte Nibbles zu rechnen. (c) U.G. Schaarschmidt, HS D 3 BCD-Darstellung Was ist die BCD-Darstellung? BCD = Binary Coded Decimal Darstellung der Ziffern 0 bis 9 in einem Nibbel (pro Byte somit maximal 99) im Gegensatz zur Dualzahlendarstellung, die in einem Nibbel 1 bis F darstellt- in einem Byte also bis zu 256 verschiedene Bitkombinationen. (c) U.G. Schaarschmidt, HS D 4 (c) Prof. Dr. U. G. Schaarschmidt 2
BCD-Darstellung II Eine Dezimalziffer zwischen 0 und 9 wird in gewöhnlicher Weise dual codiert allerdings in einer konstanten Länge der Bitfolge von 4 (1/2 Byte = Nibble). 6 mögliche (bei der Hex-Darstellung genutzte A bis F) Pseudotetraden bleiben hierbei ungenutzt sie könnten zur Darstellung eines Vorzeichens genutzt werden. (c) U.G. Schaarschmidt, HS D 5 BCD-Darstellung III Die BCD-Darstellung der Dezimalzahl 4739 lautet 0100 0111 0011 1001 4 7 3 9 Die Darstellung der BCD-Zahl ist also leicht herstellbar bzw. rückwandelbar. Auf der folgenden Seite ist ein Rechenbeispiel, das zeigt, wo Komplikationen auftauchen. (c) U.G. Schaarschmidt, HS D 6 (c) Prof. Dr. U. G. Schaarschmidt 3
Rechnen mit BCD I (c) U.G. Schaarschmidt, HS D 7 Rechnen mit BCD II Dezimalanpassung (c) U.G. Schaarschmidt, HS D 8 (c) Prof. Dr. U. G. Schaarschmidt 4
Prozessor-Befehle zur ASCII bzw. BCD-Korrektur Die BCD-Darstellung entstand aus den Anforderungen an die Computer- Rechengenauigkeit der Finanzmathematik. Die meisten Prozessoren haben zum Zweck der BCD- bzw. ASCII-Korrektur extra Befehle: Bei 80x86 / Pentium AAA, AAD, AAM, AAS korrigieren nach Auftreten eines Übertrags bzw. einer Pseudotretrade durch Addition einer 6. (c) U.G. Schaarschmidt, HS D 9 Prozessor-Befehle zur ASCII bzw. BCD-Korrektur Der Nachteil der eventuell erforderlichen Korrektur besteht darin, dass sie nur im Akkumulator und nur bei einem Byte angewendet wird. Außerdem löscht er nach Durchführung der Korrekturen das höherwertige Halbbyte (Nibble) von AL, so dass bei der Addition von 34 + 32 nach der Korrektur 06 herauskommt. Damit wird automatisch der Fehler korrigiert, der bei der Addition der höherwertigen Tetraden entsteht. (c) U.G. Schaarschmidt, HS D 10 (c) Prof. Dr. U. G. Schaarschmidt 5
ASCII Adjust for Addition O=Overflow, D=Direction down, I=Enable Interrupt, T=Trap, S=Negativ, Z=Zero, A=Auxiliary, P=Parity, C=Carry (c) U.G. Schaarschmidt, HS D 11 Beispiel für AAA (c) U.G. Schaarschmidt, HS D 12 (c) Prof. Dr. U. G. Schaarschmidt 6
AAD ASCII Adjust for Division (c) U.G. Schaarschmidt, HS D 13 AAM ASCII Adjust for Multiplication (c) U.G. Schaarschmidt, HS D 14 (c) Prof. Dr. U. G. Schaarschmidt 7
AAS Adjust for Subtraction (c) U.G. Schaarschmidt, HS D 15 Beispiel zur AAS-Korrektur (c) U.G. Schaarschmidt, HS D 16 (c) Prof. Dr. U. G. Schaarschmidt 8
ASCII-/ BCD-Korrektur In vielen Prozessoren steht ein Flagbit bereit (hier AF bzw. AC = Auxiliary Carry), das den Übertrag vom unteren Nibble zum nächsten Nibble anzeigt. Achtung: muss vom Programmierer richtig interpretiert werden, d.h. im Programm berücksichtigt werden (s. Beispielrechnung weiter hinten). (c) U.G. Schaarschmidt, HS D 17 Carry als Korrektur für die Überschreitung des Wortes Je nach Prozessor wird ein Überlauf eines Bytes bzw. eines Wortes durch Setzen des Carry-Flags angezeigt. Die Berechnung des nächsthöheren Bytes bzw. Wortes muss dies berücksichtigen. Bei 80X86 / Pent. dient der Befehl Addition mit integriertem Übertrag: ADC Integer Add with Carry (ohne C = ADD). (c) U.G. Schaarschmidt, HS D 18 (c) Prof. Dr. U. G. Schaarschmidt 9
ADC Int Add with Carry (c) U.G. Schaarschmidt, HS D 19 ADD Int Add (Addieren) (c) U.G. Schaarschmidt, HS D 20 (c) Prof. Dr. U. G. Schaarschmidt 10
Beispiel-Programm Es ist ein Programm zu entwerfen, das folgendes leistet: In einem Wortregister soll, von Null beginnend, fortlaufend hochgezählt werden. Die Anzeige des Registerinhaltes soll in Form einer zweistelligen Dezimalzahl auf dem Bildschirm erfolgen. 1. Programm-Ablaufplan (c) U.G. Schaarschmidt, HS D 21 Init Zähler (2Byte) ASCIIKorrekt. Nur im Akku! 0-Add z. AF-Korrekt. 0X0Y muss korrig. (c) U.G. Schaarschmidt, HS D 22 (c) Prof. Dr. U. G. Schaarschmidt 11
START: MOV CX,0000h ;Zaehler init M1: MOV AX,CX AAA ADD AL,00 ;Rücksetzen des Aux-Flag MOV CX,AX MOV AL,CH AAA MOV CH,AL ADD CX,3030h ;Umwandl. in ASCII MOV DL,CH MOV AH,02h INT21h MOV DL,CL MOV AH,02h INT21h MOV DL,20h ;Leerzeichen (auch ' ') MOV AH,02h INT21h WARTE 2000 ;Warteschleife INC CX JMP M1 END START (c) U.G. Schaarschmidt, HS D 23 Zahlendarstellung Festpunkt - Festkomma Signed dual fixed-point numbers In Programmiersprachen: INT Als Darstellungseinheiten werden vorzugsweise Maschinenwörter der Länge n = 8, 16, 32, 64 bit benutzt. Die linke erste Binärstelle (MSB Most Significant Bit), Vorzeichenbit oder Signbit s, codiert das Vorzeichen der Zahl: s=0 + (positive), s=1 -(negative Zahl); 0= + Zahl. (c) U.G. Schaarschmidt, HS D 24 (c) Prof. Dr. U. G. Schaarschmidt 12
Zahlendarstellung Festpunkt Festkomma II Die restlichen n-1 Binärstellen codieren den ganzzahligen Absolutwert der dualen Zahl. Daraus folgt: Alle Operationen führt der Computer so aus, als stünde der Punkt unmittelbar hinter der letzten Binärstelle des Wortes, also rechtsbündig zum Wort. Negative Zahlen werden stets als n-stelliges Zweierkomplement K n, d.h. mit der Ergänzung ihres Betrages zu 2 n, dargestellt. (c) U.G. Schaarschmidt, HS D 25 Festpunktdarstellung 1 Byte n=8 bit (Wert +27 und 27), zugeordnet hexadezimale Und oktale Darstellungen. (c) U.G. Schaarschmidt, HS D 26 (c) Prof. Dr. U. G. Schaarschmidt 13
Zahlendarstellung Festpunkt Festkomma III K n = 2 n - X n (X n = n-stellig), Man benutze dazu das Dualsystem, denn damit entsteht von selbst das richtige Format und das mit 1 belegte s-bit (c) U.G. Schaarschmidt, HS D 27 Die Wortlänge n entscheidet über den zulässigen Wertebereich Vorzeichenfreie duale Festpunktzahlen (Unsigned dual fixed-point numbers) haben statt des Vorzeichenbits ein weiteres Wertebit (s. rechter Tabellenteil). (c) U.G. Schaarschmidt, HS D 28 (c) Prof. Dr. U. G. Schaarschmidt 14
ASCII / BCD Binär - Wandlung Wenn intern mit Zahlen gerechnet werden soll, wie sie in der Tabelle der vorherigen Seite dargestellt wurden, sie aber über die Tastatur eingegeben werden, muss eine Umwandlung erfolgen. 2 Verfahren werden gezeigt: (c) U.G. Schaarschmidt, HS D 29 1. Umwandlungsverfahren Jede Dezimalziffer wird mit ihrem Stellenwert multipliziert (Einer, Zehner, Hunderter, Tausender, usw.) und addiert diese Produkte auf. 345 heißt 3*100 + 4*10 + 5*1 2345 = 2*1000 + 3*100 + 4*10 + 5*1 (c) U.G. Schaarschmidt, HS D 30 (c) Prof. Dr. U. G. Schaarschmidt 15
2. Umwandlungsverfahren Man multipliziert mit der höchstwertigen Stelle beginnend mit 10, addiert die nächste Stelle auf, multipliziert die Summe wieder mit 10, usw. bis zur letzten Stelle, die dann nur noch aufaddiert wird. 2345 = ((2*10+3)*10+4)*10+5 (c) U.G. Schaarschmidt, HS D 31 Binär BCD Wandlung 1 2345 : 10 = 234 Rest 5 234 : 10 = 23 Rest 4 23 : 10 = 2 Rest 3 2 : 10 = 0 Rest 2 Dies Verfahren funktioniert mit allen Basen, also auch mit 16 für die HEXoder 8 für die Oktal-Darstellung. (c) U.G. Schaarschmidt, HS D 32 (c) Prof. Dr. U. G. Schaarschmidt 16
Binär BCD Wandlung 2 2345 : 1000 = 2 345 : 100 = 3 45 : 10 = 4 5 : 1 = 5 (c) U.G. Schaarschmidt, HS D 33 Stellenwertsysteme (c) U.G. Schaarschmidt, HS D 34 (c) Prof. Dr. U. G. Schaarschmidt 17
Einfache Rechenoperationen Addition und Subtraktion (c) U.G. Schaarschmidt, HS D 35 Multiplikation und Division (c) U.G. Schaarschmidt, HS D 36 (c) Prof. Dr. U. G. Schaarschmidt 18
Es gibt nicht nur Integer Festkommazahlen gibt es auch (c) U.G. Schaarschmidt, HS D 37 Mit Festkommazahlen einfach rechnen (c) U.G. Schaarschmidt, HS D 38 (c) Prof. Dr. U. G. Schaarschmidt 19
Wie kommt man vom Dezimalbruch zur Dualzahl? (c) U.G. Schaarschmidt, HS D 39 Andere Darstellung der Umwandlung (c) U.G. Schaarschmidt, HS D 40 (c) Prof. Dr. U. G. Schaarschmidt 20
Gleitkommadarstellung (1) (c) U.G. Schaarschmidt, HS D 41 Gleitkommadarstellung (2) (c) U.G. Schaarschmidt, HS D 42 (c) Prof. Dr. U. G. Schaarschmidt 21
Gleitkommadarstellung nach IEEE 754 (1) (c) U.G. Schaarschmidt, HS D 43 Gleitkommadarstellung nach IEEE 754 (2) (c) U.G. Schaarschmidt, HS D 44 (c) Prof. Dr. U. G. Schaarschmidt 22
(c) U.G. Schaarschmidt, HS D 45 (c) Prof. Dr. U. G. Schaarschmidt 23