le BCD ou même plus bourrin, 1 octet par décimale est aussi intéressant, en particulier si tes octets correspondent déjà aux caractères à afficher
+dans le cas d'un octet par décimale, si tu as vraiment besoin de temps machine, tu peux afficher un caractère, puis un autre plus tard, puis un autre, ...
Inscription : 05 Août 2011, 14:38 Message(s) : 204
Ceci transforme un chiffre hexa en décimal il suffit d'écrire le nombre qu'on veut convertir à la place du chiffre ici &41DE pour l'exemple à la fin du programme.
org &2000
ld de,decimal ; ecrit en decimale humain ld hl,(hexaici) ; lire en hexa DispHL:
ld bc,-10000 call Num1 ld bc,-1000 call Num1 ld bc,-100 call Num1 ld bc,-10 call Num1 ld c,-1 Num1: ld a,'0'-1 Num2: inc a add hl,bc jr c,Num2 sbc hl,bc call &bb5a ; resultat a l'ecran ld (de),a inc de ret
hexaici: db &de,&41 ; ici nombre en hexa qu'on veut convertir decimal: db 00,00 ; ici resultat en chiffre decimal
Ça y est, j'ai capté. J'ai pu faire un programme pour additioner des nombres 16 bits avec DAA
DAA c'est pour faire des additions en BCD mais pas pour convertir un nombre en BCD, ll faut donc fournir les 2 nombres déja convertis en BCD. J'avais oublié tout ça...
J'ai codé une routine qui convertit les nombres 8 ou 16 bits en BCD, ce qui sera pratique pour afficher des scores ou autres en décimal.
J'ai juste fait des soustractions au lieu de faire des divisions donc je n'ai pas eu besoin de faire de décalage de bits.
Tu testes juste si le nombre est supérieur ou égal a 10.000 par exemple, tu lui soustrait 10.000 avec une boucle et tu obtiens le chiffre des dizaines de mille. Idem pour les milliers, centaines, dizaines et unités. Et voila ton BCD en quelques lignes de code.
Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 3 invité(s)
Vous ne pouvez pas publier de nouveaux sujets dans ce forum Vous ne pouvez pas répondre aux sujets dans ce forum Vous ne pouvez pas éditer vos messages dans ce forum Vous ne pouvez pas supprimer vos messages dans ce forum Vous ne pouvez pas insérer de pièces jointes dans ce forum