10'a bölme? 10000,1000,100 ve 10 çıkartarak saymaca

25213 olsun rakam:
a=0
(25213-10000) >0 a++ geriye 15213
15213-10000>0 a++ kaldı 5213
(5213-10000) >0 ? değil, [a=2], ilk decimal haneyi bulduk. a'yı bir yere kaydedip, 10000'i geri ekleyip 1000'liklere geçelim:
a=0
(5213-1000) >0? doğru a++
...
şeklinde sıra sıra 10k,1k,100 ve 10 çıkartarak tüm haneleri bulmaca.
Tabii z80'de 16 bit registerler var, bir de SBC komutu var. Bu iş kolay oluyor 3-4 komutla çıkıyor. 6502'de de çok zor olacağını sanmıyorum.
z80'de çok kabaca şöyle olur:
ld hl, <hiscore> ;2 byte'lık hi score 0-65535 arasında
ld bc, <string adresi> ;bu adrese 5 byte'lık bir char string oluşturacak
ld de,10000
call hanebul
ld de,1000
call hanebul
ld de,100
call hanebul
ld de,10
call hanebul
hanebul:
xor a ;a=0
haneloop:
or a ;C flag reset
sbc hl,de ; hl-de
jr c, sonrakihane ; <0?
inc a ;a++
jr haneloop ;loop
sonrakihane:
add 48 ;ascii tablosuna göre "0"=dec 48 (c64'ünkü farklıydı sanırım)
ld bc,a ;char'ı ram'e yaz
inc bc ; indeksi ilerlet
adc hl,de ;son çıkarılan rakamı geri ekle
ret ;bu hane bitti, sonraki haneye geçelim
bu işlem sonucunda "string adresi" lokasyonunda 5 byte boyunca decimal gibi görünen string çıkacak, bunları bir şekilde yazdıracaksın işte.

kafadan yazdım, çalışmıyordur büyük ihtimal, ama fikir verecektir.
edit: kod denemesi eklendi, wizofwor bahane edilerek z80 pratik edildi
