Für die Wandlung in BCD brauchst Du in Assembler ein kleines Programm.
Entweder ziehst Du von der maximal Möglichen Zahl die 10000, 1000, 100, und 10 Stellen ab, lässt in der jeweiligen Funktion einen Zähler mitlaufen der dann den BCD Wert der entsprechenden Stelle angibt.
Oder Du teilst deinen Wert durch 10 und wertest die Reste aus.
Vermutlich gibts auch noch andere Lösungsansätze.
Kürzlich hab ich hier mal im Forum sogar mal einen Codeschnipsel für so etwas gesehen, aber Frag mich jetzt bitte nicht mehr welcher Beitrag das war.

EDIT! Habs gefunden schau mal hier https://www.roboternetz.de/phpBB2/viewtopic.php?t=22705 rein.

Eine BCD Zahl in eine ASCII umzuwandeln ist relativ einfach. Zum BCD Wert wird einfach 0x30 dazugeodert
LDI r16,bcdzahl
ORI r16,0x30
Im Register r16 steht jetzt eine Stelle deiner ASCII Zahl.
Da die Zahlen im ASCII Code bei 0x30 beginnen kriegt man somit BCD Zahlen auf ASCII umgestrickt.