bonsoir Mai
J''ai voulu comparer les tailles , entre la fonction equivalente mikroC WordToHex ,
qui transforme un mot de 16 bits en sa representation HEXADECIMAL Ascii
... alors que ta fonction transforme un mot de 16 bits en sa representation DECIMALE..
J'ai utilisé la possibilité d'entrer de l'ASM dans MikroC et les outils du debugger Watch Clock et Watch value
je retouve bien 222 cycles pour ta fonction.. mais je comparais alors 2 fonctions differentes..
Il me semble qu'il y a un bug dans ta fonction , qui donne des valeurs abherantes pour certaines valeur
qui serait dû (conditionnel !) au branch BRA Cent1+2
le MOVLW 0x64 devant prendre qu'un seul cycle.. on devrait avoir BRA Cent1+1 ...
je ne peux pas ecrire sous cette forme..(msg error compil ?? ) j'ai donc placé une etiquette Cent11 juste apres le movlw
et là, la fonction Decimal To String donne bien de bons resultats..
Code : Tout sélectionner
*********************** centaines **********************************
Cent:
MOVLW 0XE8
ADDWF _NBHEXL,F
MOVLW 0X03
ADDWFC _NBHEXH,F ;NBHEXH,NBHEXL+1 000
Cent1:
MOVLW 0x64
Cent11: ;
SUBWF _NBHEXL,F ;NBHEXL-100
BTFSS STATUS,C
BRA Cent2 ;test débordement oui
INCF _ASCII2 ,F ;non cent+1
BRA Cent11 ; on retourne Peux-tu verifier et confirmer ou infirmer..
voici le projet, en MikroC , complet, avec listing
:
18F47J53_Test_asm.zip
Cohabitation ASM et C avec MikroC
MikroC_Cohabitation_ASM_C.jpg
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.