Amstrad Plus Forum Index

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

 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Convertisseur Hexadecimal -> Decimal

 
Post new topic   Reply to topic    Amstrad Plus Forum Index -> Programmation Cpc -> Calcul
Previous topic :: Next topic  
Author Message
zisquier


Offline

Joined: 18 Jun 2015
Posts: 52
Localisation: Caen
Masculin
Point(s): 10
Moyenne de points: 0.19

PostPosted: Sat 4 Jan - 20:22 (2020)    Post subject: Convertisseur Hexadecimal -> Decimal Reply with quote

Hello !


Bon j'ai du mal à voir à quel moment je n'ai pas été précis dans une routine dans laquelle, à partir d'un nombre en Hexa, 8 bits, je peut retrouver son équivalent en décimal. J'ai commencé à coder çà : 

Code:

ORG #8000
   ld      hl,hexa_a_convertir         ; j'utilise HL, au cas où je voudrait plus tard, aller au delà de 255
   ld      bc,#0A               ; tous les #0A hexa, on change de dizaine décimale
   ld      de,0                  ; DE recueille le résultat du nombre de boucle, je l'initialise à zéro

compteur_boucle
   sbc      hl,bc                  ; on soustrait #0A de HL, DE fois
   ld      (reste),hl               ; et je stock le resultat dans ce qu'il "reste" à soustraire
   jp      c,stop_boucle            ; si le résultat est négatif (flag C) alors on stop la boucle
   inc      DE                  ; j’incrémente le compteur de boucle
   ld      (chiffre_des_dizaine),de      ; et je stock ce résultat qui correspond au nombre de dizaine ayant pu être soustraites
   jp      compteur_boucle
stop_boucle
   add      hl,bc                  ; pour connaitre les unités j'additionne le reste "négatif" de HL avec #0A
   ld      (chiffre_des_unite),hl         ; et je stock les unités
   ret
reste         ds   2,0               ; a chaque soustraction on garde de coté ce qui reste du nombre hexa du départ 
chiffre_des_dizaine   ds   2,0         
chiffre_des_unite   ds   2,0
hexa_a_convertir   equ   #5D            ; 93 en décimale







Bon j'ai l'impression que çà fonctionne, en écrivant çà ici, je me suis rendu compte d'une connerie ...


Back to top
Publicité






PostPosted: Sat 4 Jan - 20:22 (2020)    Post subject: Publicité

PublicitéSupprimer les publicités ?
Back to top
zisquier


Offline

Joined: 18 Jun 2015
Posts: 52
Localisation: Caen
Masculin
Point(s): 10
Moyenne de points: 0.19

PostPosted: Sat 4 Jan - 20:41 (2020)    Post subject: Convertisseur Hexadecimal -> Decimal Reply with quote

Bon j'ai trouvé ma connerie, j'ai oublié de faire les centaines .... voici ce que j'ai rajouté et çà fonctionne à merveille Smile Smile Smile

Code:

hexa_a_convertir   equ   254            ; 93 en décimale

ORG #8000
   ld      hl,hexa_a_convertir      ; j'utilise HL, au cas où je voudrait plus tard, aller au delà de 255
   ld      bc,#0A            ; tous les #0A hexa, on change de dizaine décimale
   ld      de,0            ; DE recueille le résultat du nombre de boucle, je l'initialise à zéro
compteur_boucle
   sbc      hl,bc            ; on soustrait #0A de HL, DE fois
   ld      (reste),hl         ; et je stock le resultat dans ce qu'il "reste" à soustraire
   jp      c,stop_boucle         ; si le resultat est négatif (flag C) alors on stop la boucle
   inc      DE            ; j’incrémente le compteur de boucle
   ld      (chiffre_des_dizaines),de   ; et je stock ce resultat qui correspond au nombre de dizaine ayant pu être soustraites
   jp      compteur_boucle
stop_boucle
   add      hl,bc            ; pour connaitre les unités j'additionne avec le reste "négatif" de HL avec #0A
   ld      (chiffre_des_unites),hl      ; 
   ex      hl,de            ; on recupère les dizaines DE dans HL
   sbc      hl,bc            ; et on vérifie si çà dépasse ou égale à #0A
   jp      NC,calc_suivant         ; si c'est le cas on continu de calculer
   ld      a,0
   ld      (chiffre_des_centaines),a
   ret
calc_suivant
   ld      hl,(chiffre_des_dizaines)
   ld      de,0
compteur_boucle2
   sbc      hl,bc            ; on soustrait #0A de HL, DE fois
   ld      (reste),hl         ; et je stock le resultat dans ce qu'il "reste" à soustraire
   jp      c,stop_boucle2         ; si le resultat est négatif (flag C) alors on stop la boucle
   inc      DE            ; j’incrémente le compteur de boucle
   ld      (chiffre_des_centaines),de   ; et je stock ce resultat qui correspond au nombre de dizaine ayant pu être soustraites
   jp      compteur_boucle2
stop_boucle2
   add      hl,bc            ; pour connaitre les unités j'additionne avec le reste "négatif" de HL avec #0A
   ld      (chiffre_des_dizaines),hl      ; 
   ret
reste         ds   2,0         ; a chaque soustraction on garde de coté ce qui reste du nombre hexa du départ 
chiffre_des_centaines   ds   2,0
chiffre_des_dizaines   ds   2,0         
chiffre_des_unites   ds   2,0
hexa_a_convertir   equ   #5D            ; 93 en décimale


Back to top
zisquier


Offline

Joined: 18 Jun 2015
Posts: 52
Localisation: Caen
Masculin
Point(s): 10
Moyenne de points: 0.19

PostPosted: Sat 4 Jan - 20:42 (2020)    Post subject: Convertisseur Hexadecimal -> Decimal Reply with quote

mince on peut pas éditer les messages ??  c'est pas beau à lire mon truc ? on fait comment ?

Back to top
Ast
Administrateur

Offline

Joined: 05 Sep 2014
Posts: 2,976
Masculin
Point(s): 389
Moyenne de points: 0.13

PostPosted: Sun 5 Jan - 02:08 (2020)    Post subject: Convertisseur Hexadecimal -> Decimal Reply with quote

zisquier wrote:
mince on peut pas éditer les messages ??  c'est pas beau à lire mon truc ? on fait comment ?




Normalement, tu devrais pouvoir le faire ^^


Dis thomas, faudrait parfois penser à lire un peu les articles du forum. Ca peut aider parfois Razz
_________________
Ast/iMP4CT

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


Back to top
Display posts from previous:   
Post new topic   Reply to topic    Amstrad Plus Forum Index -> Programmation Cpc -> Calcul All times are GMT + 2 Hours
Page 1 of 1

 
Jump to:  

Index | Administration Panel | Create a forum | Free support forum | Free forums directory | Report a violation | Cookies | Charte | Conditions générales d'utilisation
Powered by phpBB © 2001, 2005 phpBB Group