FAQ der Newsgroup de.comp.lang.assembler (d.c.l.a.)

Was ist BCD-Kodierung?

BCD ist eine Kodierung, bei der die Dezimalziffern einer Zahl direkt gespeichert werden. Bei ungepacktem BCD steckt in den unteren 4 Bit (auch Nibble genannt) eines Bytes die Ziffer binär kodiert, die oberen 4 Bit sind unbenutzt und können z.B. mit einer "3" gefüllt werden - dann läßt sich die BCD-Ziffer direkt als ASCII ausgeben.
Da diese Darstellung ziemlich verschwenderisch mit dem Speicher umgeht gibt es noch ein zweites, gepacktes BCD-Format, bei dem sowohl in dem oberen als auch dem unteren Nibble je eine Dezimalziffer kodiert wird.

Der Vorteil von BCD neben der leichteren Ausgabe der Zahlen besteht darin, daß exakt wie im Dezimalsystem gerechnet und gerundet werden kann.

Der x86-Befehlssatz enthält spezielle Befehle zur Konversion von BCD-Zahlen vor bzw. nach einer binären Rechenoperation: AAA, AAD, AAM und AAS für ungepackte, DAA sowie DAS für gepackte BCD-Zahlen.

Text der ursprünglichen FAQ von de.comp.lang.assembler.x86 Juli 2005