Es gibt Controller mit Befehlen für BCD-Arithmetik; ob Deiner das kann, weis ich nicht.
Mein PIC kennt keine BCD-Arithmetik und ich verwende deshalb die Routine "Such0_9" (Ziffer suchen) bei den Assembler-Beispielen.
2 Unterschiede:
1. bei mir ist es nur ein Byte (0...255), Du mußt es auf 2 Byte erweitern.
2. ich Suche nach ASCII-Zahlen und muß diese entsprechend in BCD 0...9 umwandeln, bei Dir sind es bereits BCD-Werte, die Du nibble-weise von links nach rechts abarbeiten mußt:
2 * 10 ... + 3
23 * 10 ... + 4
234 * 10 ... + 5
Das ganze steht dann als 16 Bit-Wert 0929h in 2 Registern mit je 8 Bit.
Wenn Dein Controller einen MULtiplikations-Befehl hat, super.
Andernfalls: Eine Multiplikation mit 10 kannst Du einfach realisieren, indem Du den Wert 1 mal nach links schiebst (* 2) und dann kopierst. Die Kopie schiebst Du noch 2 mal nach links (... * 4 ... * 8 ). Dann addierst Du dieses Ergebnis zu dem mit 2 multiplizierten Wert. Das Ergebnis ist dann * 2 + * 8 = * 10