Bienvenue aux nouveaux arrivants sur FantasPic !

- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.

--- L’équipe FantasPic ---
Bout de code posé là !

Modérateur : Jérémy

ASM: Multiplication sur 16 bits
F6FCO
Avatar de l’utilisateur
Expert
Expert
Messages : 2846
Âge : 99
Enregistré en : décembre 2017
Localisation : Banlieue sud de Klyntar
Contact :

#1 Message par F6FCO » mar. 14 mai 2024 20:15

Multiplication sur 16 bits.

Code : Tout sélectionner

;********************************************************************
;            
Multiplication sur entiers 16bits _ F6FCO                  
;     Il faut préalablement déclarer les variables sur 16 bits         
;         multiplicande16multiplicateur16resultat16                
;                valeur1valeur2 (sur 16bits)                        
;                      
et report16                                    
;                                                                    
poids faible nombre1 dans multiplicande16                            
poids fort nombre1  dans multiplicande16+1                           
;                                                                    
poids faible nombre2 dans multiplicateur16                        
poids fort nombre2 dans multiplicateur16+1                        
;                                                                    
Le résultat sera dans resultat16 et resultat16+1                     
si dépassement le carry est dans report16                            
;                                                                    
utilise les routines addition16 et soustraction16                    
;                                                                    
;********************************************************************   
multiplication16
            clrf    resultat16
            clrf    resultat16
+1        
mult161        
test si multiplicateur sur 16bits =0
            movf    multiplicateur16
+1,multiplicateur16+1
            bnz        mult162
            bcf        STATUS
,Z
            movf    multiplicateur16
,multiplicateur16
            bz        finmult16
mult162        movff    resultat16
,valeur1
            movff    resultat16
+1,valeur1+1
            movff    multiplicande16
,valeur2
            movff    multiplicande16
+1,valeur2+1
            call     addition16
            movff    valeur2
,resultat16
            movff    valeur2
+1,resultat16+1
            
on décrémente le compteur        
            movff    multiplicateur16
,valeur1
            movff    multiplicateur16
+1,valeur1+1
            clrf    valeur2
+1
            movlw    1
            movwf    valeur2
            call    soustraction16
            movff    valeur2
,multiplicateur16
            movff    valeur2
+1,multiplicateur16+1
            bra        mult161
finmult16    
return

 
Une porte nand prend 2 bits en entrée... :eek:

Retourner vers « Recueil de mini programmes »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité