Amstrad Plus Index du Forum

Amstrad Plus
Découverte de la gamme Old et Plus des Cpc d'Amstrad.

 FAQFAQ   RechercherRechercher   MembresMembres   GroupesGroupes   S’enregistrerS’enregistrer 
 ProfilProfil   Se connecter pour vérifier ses messages privésSe connecter pour vérifier ses messages privés   ConnexionConnexion 

How to convert an hexa value to decimal ?

 
Poster un nouveau sujet   Répondre au sujet    Amstrad Plus Index du Forum -> Bienvenue sur ce forum -> Programmation
Sujet précédent :: Sujet suivant  
Auteur Message
Ast
Administrateur

Hors ligne

Inscrit le: 05 Sep 2014
Messages: 2 229

MessagePosté le: Jeu 29 Oct - 23:47 (2015)    Sujet du message: How to convert an hexa value to decimal ? Répondre en citant

Why this topic? Because, when i was coding iMPdraw v1.2 (Latest version since 28th October 2015), i need to convert an hexadecimal value to a decimal one (#ff - 255) to know how free space was on my floppy disc and display it on the screen.

Then i had some reflexions about it and made my own routine. The way i used is counting and incrementing/decrementing counters in my program.
But, i don't really know if it was the best way i took. What would be your solution ?
----------
Pourquoi ce topic? Parce que lorsque je codais iMPdraw v.1.2 (la dernière version depuis le 28 Octobre 2015), j'ai eu besoin de convertir une valeur hexadécimal en décimal (#ff -> 255) pour savoir combien d'espace libre était sur ma disquette et l'afficher sur mon écran.


Donc, j'ai réflèchi et fait ma propre routine. La solution employée était de compter et d'incrémenter/décrémenter des compteurs dans mon programme.
Mais, je ne sais vraiment pas si c'est la meilleure solution. Qu'aurait été votre solution ?
_________________
Ast/iMP4CT

"Par le pouvoir du crâne ancestral...."


Revenir en haut
Publicité






MessagePosté le: Jeu 29 Oct - 23:47 (2015)    Sujet du message: Publicité

PublicitéSupprimer les publicités ?
Revenir en haut
Ast
Administrateur

Hors ligne

Inscrit le: 05 Sep 2014
Messages: 2 229

MessagePosté le: Ven 30 Oct - 15:02 (2015)    Sujet du message: How to convert an hexa value to decimal ? Répondre en citant

Here is a sample of iMPdraw v1.2 using this code. So is there any way to do it faster ?
-------
Voici un echantillon du code d'iMPdraw v1.2. Donc, y'a t'il une façon de faire plus rapide ?

Code:
          LD   A,(bused) ; nb Bytes used
calcdec   LD   IX,dec1
;
loocpt    LD   C,A
          OR   A
          RET  Z
;
          LD   A,(IX+2)
          INC  A
          CP   &3A
          JR   NZ,nocpt
          CALL ch2
          LD   A,&30
nocpt     LD   (IX+2),A
          DEC  C
          LD   A,C
          JR   NZ,loocpt
          RET
;   
ch2
          LD   A,(IX+1)
          INC  A
          CP   &3A
          JR   NZ,nocpt2
          LD   A,(IX+0)
          INC  A
          LD   (IX+0),A
          LD   A,&30
nocpt2    LD   (IX+1),A
          RET
;
bused BYTE 178          ; total bytes used in the disk
dec1  BYTE &30,&30,&30  ; Counter is loaded with 000





_________________
Ast/iMP4CT

"Par le pouvoir du crâne ancestral...."


Revenir en haut
Demoniak


Hors ligne

Inscrit le: 10 Sep 2015
Messages: 24
Localisation: Dunkerque

MessagePosté le: Mar 10 Nov - 13:59 (2015)    Sujet du message: How to convert an hexa value to decimal ? Répondre en citant

Voici un bout de code que j'utilisais pour afficher une valeur 8 bits en décimal :


 


 
Code:
     ORG    #A000

    LD    A,231
    CALL    PrintNum
    RET

;
; Afficher valeur decimale contenue dans le registre A
;
PrintNum:
    LD      B,100
    LD      C,#FF                     ; Démarrer à -1 pour les centaines
PrintNum1:
    INC     C                         ; Incrémenter les centaines
    SUB     B                         ; A = A - 100
    JR      NC,PrintNum1              ; Tant que A>=0
    CALL    PrintDeci                 ; Afficher valeur contenue dans C
    LD      B,10
    LD      C,#FF                     ; Démarrer à -1 pour les dixaines
PrintNum2:
    INC     C                         ; Incrémenter les dixaines
    SUB     B                         ; A = A - 10
    JR      NC,PrintNum2              ; Tant que A>=0
    CALL    PrintDeci
    JR      PrintDeci2                ; Puisque a contient les unités
PrintDeci:
    ADD     A,B                       ; Remettre A > 0 (car dernière soustraction a généré une retenue)
    LD      B,A                       ; Sauvegarde A
    LD      A,C                       ; C = digit à afficher
PrintDeci2:
    ADD     A,'0'                     ; Code ASCII '0' + valeur de A
    CALL    #BB5A                     ; le #BB5A préserve tous les registres
    LD      A,B                       ; Récupérer A
    RET
   



Revenir en haut
Longshot


Hors ligne

Inscrit le: 21 Nov 2015
Messages: 57

MessagePosté le: Sam 21 Nov - 18:15 (2015)    Sujet du message: How to convert an hexa value to decimal ? Répondre en citant

Tu peux aussi considérer d'emblée que ta valeur est en BCD et tu fais tes calculs dessus avec des ajustements via DAA, qui est faite pour ça.

Ou sinon tu convertis ta valeur en bcd, et après tu peux l'afficher en allant récupérer chaque quartet.

L=valeur binaire, DE=résultat bcd (ex : L=#FF DE=#255)
     LD B, 8
     LD L,#FF
     LD DE,0
BINBCD_L1
     SLA L
     LD A,E
     ADC A,A
     DAA
     LD E,A
     LD A,D
     ADC A,A
     DAA
     LD D,A
     DJNZ BINBCD_L1
     RET


Revenir en haut
Ast
Administrateur

Hors ligne

Inscrit le: 05 Sep 2014
Messages: 2 229

MessagePosté le: Sam 21 Nov - 18:24 (2015)    Sujet du message: How to convert an hexa value to decimal ? Répondre en citant

Pas mal cette version, je vais tester pour voir. Merci et Bravo.
_________________
Ast/iMP4CT

"Par le pouvoir du crâne ancestral...."


Revenir en haut
Ast
Administrateur

Hors ligne

Inscrit le: 05 Sep 2014
Messages: 2 229

MessagePosté le: Sam 21 Nov - 18:55 (2015)    Sujet du message: How to convert an hexa value to decimal ? Répondre en citant

Il y a déjà trois exemples donc si certains veulent proposer d'autres point de vue, ils sont les bienvenues.
On attends donc vos exemples.
_________________
Ast/iMP4CT

"Par le pouvoir du crâne ancestral...."


Revenir en haut
Contenu Sponsorisé






MessagePosté le: Aujourd’hui à 21:20 (2017)    Sujet du message: How to convert an hexa value to decimal ?

Revenir en haut
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    Amstrad Plus Index du Forum -> Bienvenue sur ce forum -> Programmation Toutes les heures sont au format GMT + 2 Heures
Page 1 sur 1

 
Sauter vers:  

Index | Panneau d’administration | Creer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Powered by phpBB © 2001, 2005 phpBB Group
Traduction par : phpBB-fr.com