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)

Documents pareils