Besoin d'aide pour une conversion ascii/hexa en assembleur
cs_MTHOMAS
Messages postés8Date d'inscriptionjeudi 23 décembre 2004StatutMembreDernière intervention11 janvier 2005
-
9 janv. 2005 à 02:03
cs_redwings
Messages postés24Date d'inscriptionjeudi 2 décembre 2004StatutMembreDernière intervention28 avril 2008
-
11 janv. 2005 à 21:15
Salut,
Je voudrais faire une conversion Ascii vers hexa en assembleur (pic 16F630):
le paramètre d'entrée (déposé dans w) est un nombre hexadecimal codé
en ascii, le parametre de sortie (w egalement) est ce même nombre codé
en hexadecimal.
Ascii: $30 - $31 - $32 ....... $45 - $46
hexa: 0 - 1 - 2 ........ E - F
Je n'ai pas d'idée pour ce programme, un coup de main ne serait pas de refus.
cs_redwings
Messages postés24Date d'inscriptionjeudi 2 décembre 2004StatutMembreDernière intervention28 avril 20082 10 janv. 2005 à 00:23
n'hesitez pas à me mailer red.wings@voila.fr
salut, j'ai depose un programme complet, où on peut afficher la table ascii complete et en code hexadecimal
clique sur mon profil puis xx sources sur tout cs et tu trouvera
rylryl
Messages postés311Date d'inscriptionmardi 9 mars 2004StatutMembreDernière intervention15 décembre 20061 10 janv. 2005 à 05:38
Je ne sais pas si j'ai bien compris mais bon.!.!
et comme ça:
;;Attention ! sans tester si ascii entrant compris
entre h30..h39=0..9 , h41..h46=A..F.!
movfw MonASCII ; ton w entrant ASCII
sublw 0x39 ; test si > h39(9)
btfss STATUS,C ; alors forcement tranche (h41..h46=A..F)
goto conv_AF ; aller vers tranche (h41..h46=A..F)
conv_09
movfw MonASCII ; si ok ressort la val de ton w entrant ASCII
xorlw 0x30 ; soustraire h30 pour correspond..
;(h30=0 ,h31=1 ...h39=9)
movwf MonHEX ; et le placer dans ton w sortant
goto fini
conv_AF
movfw MonASCII ; ressort la val de ton w entrant ASCII
xorlw 0x41 ; soustraire h41 pour correspond..
;(h41=A ,h42=B ...h46=F)
movwf MonHEX ; et le placer dans ton w sortant
;goto fini ;
fini
scuse si je suis a cotés!
ryl...
Vous n’avez pas trouvé la réponse que vous recherchez ?
phenojeff
Messages postés87Date d'inscriptionjeudi 10 octobre 2002StatutMembreDernière intervention 4 avril 2008 11 janv. 2005 à 05:00
Si jai bien compris un ascii en hex
;*****************************************************************************
; CONVERSION ASCII VERS HEXA *
;*****************************************************************************
;-----------------------------------------------------------------------------
; tranforme les digits contenu dans car1 et car2 en 1 nombre hexa
; réponse contenu dans car2 EXEMPLE envoi de 41 en ascii -> 0x41
;-----------------------------------------------------------------------------
ashex
; convertir premier digit
; -----------------------
movlw -0x07 ; écart entre lettre et chiffre
btfsc car1,6 ; tester si code ASCII = 4x
addwf car1,f ; oui, soustraire 7 du code ASCII
movlw -0x30 ; 30 à soustraire
addwf car1,f ; obtenir valeur
; convertir second digit
; ----------------------
movlw -0x07 ; écart entre lettre et chiffre
btfsc car2,6 ; tester si code ASCII = 4x
addwf car2,f ; oui, soustraire 7 du code ASCII
movlw -0x30 ; 30 à soustraire
addwf car2,f ; obtenir valeur
; concaténation
; -------------
swapf car1,w ; charger digit fort swappé
iorwf car2,f ; ajouter au digit faible
RETURN ; et fin
a++
rylryl
Messages postés311Date d'inscriptionmardi 9 mars 2004StatutMembreDernière intervention15 décembre 20061 11 janv. 2005 à 20:13
slu.
Non, pas bon deja a cause des "call" et pour d'autres raisons.
le coup du test bit6 lui par contre est valable.
La methode de Mr phenojeff est plus courte (mieux) mais il a groupé deux ascii ,sert toi de l'une de ses routines de conversion.
a+
ryl...