SourceForge Routines arithmétiques 8 et 16 bits sur Microchip
Transcription
SourceForge Routines arithmétiques 8 et 16 bits sur Microchip
?? SourceForge www.didel.com/pic/MulDiv.pdf Routines arithmétiques 8 et 16 bits sur Microchip – 100223 Commentaires généraux www.didel.com/pic/Arith.pdf Comment multiplier et diviser par quelques constantes, Multiplications et divisions 8 et 16 bits Les routines suivantes sont disponible en CALM sur Pic 12 et 14 bits. Le nombres sont positifs 8 ou 16 bits. Les routines ont parfois été faites avec l’un des opérandes et le résultat en complément à 2. Les opération plus générales avec des nombres en complément à 2, ou avec d’autres représentation négatives sont plus compliquées. C’est conseillé de garder les noms ses variables. Si on doit multipier la variable Vitesse, on déclarera en constante MulA = Vitesse en début de routine. Les variables Cx sont locales et peuvent aussi être réassignées, par exemple CxCnt = Cx0. \rout:Mul8x8 positifs 13 bytes, 71 cycles \in: MulA MulB (MulA n'est pas modifié) \out: MulPH MulPL \rout:Mult8x8a 16 bytes, 95 cycles \in: MulA MulB (MulA peut être négatif \out: MulPH MulPL \rout:Mul16x8 \in: MulH MulL MulB \out: MulPHH MulPH MulPL \rout:Div8p8 reset si div par 0 \in: DivL DivD \out: DivQ DivP \rout:Div16p8 \in: DivH DivL DivD \out: DivQH DivQL DivP Le test de ces routines avec un écran est conseillé (voir http://www.didel.com/pic/TestArith.pdf) Les tests ont été fait avec des Microdules. Les paramètres sont lus sur des commutateurs, avec les ports correspondant en entrée. Les résultats sont affichées sur les mêmes ports, les commutateurs ayant une résistance en série. Les poussoirs sur RA passent du mode attente pour la séléction des paramètres au mode lecture du résultat. Programmes de test : Mul8x8.asm Mul8x8a.asm Mul16x8.asm Div8p8.asm Div16p8.asm Div8X8Debug.asm (visualise des états intermédiaires)