; Projet : Fibonaci Assembleur ; Nom : ass_fibo_ass ; Auteur : philou (Ph. Bovey) ; Date Créa : 06.11.13 ; Date Mode : 09.01.14 MASQUE = H'0F ; représente le masque à appliquer pour le traitement de l'affichage INIT_VAR: MOVE #H'00, X ; val de départ de la suite de FIBO MOVE #H'01, B ; val de départ de la suite de FIBO ; initialisation de l'afficahge MOVE #H'5B, H'C01 ; valeur représente les 7 segments de l'affichage --> ici H MOVE #H'3F, H'C02 ; idem --> ici 0 MOVE #H'3F, H'C03 ; idem --> ici 0 RECORD_B: PUSH B ; sauvegarde de la valeur Y dans la pile / PP0 CALCUL_FIBO: ADD X,B ; addition de X et Y dans Y POP X ; MAJ de la valeur préenregistrée PUSH B ; Sauvegarde de Y pour AFFICH_HEXA: ; traitement du LSB MOVE B,A ; récupération de la valeur AND #MASQUE,A ; application d'un masque PUSH A ; sauvegarde dans la pile du LSB ; traitement du MSB MOVE B,A ; récupération de la valeur RR A ; décalage a droite de 4bits RR A ; RR A ; RR A ; AND #MASQUE,A ; application du masque PUSH A ; sauvegarde la pile du MSB ; associé valeur aux affichages 7seg --> digit 3 depuis la gauche ; remarque : obligation d'utiliser du regsitre Y pour la premier fonction MOVE -> lecture de tableau POP Y ; récuperer le MSB MOVE H'038+{Y}, A ; équivalence hexa --> affichage MOVE A, H'C02 ; --> envoyer la valeur sur l'affichage ;digit 4 POP Y ; récuperer le MSB MOVE H'038+{Y}, A ; équivalence hexa --> affichage MOVE A, H'C03 ; --> envoyer la valeur sur l'affichage TEST_LIMIT: COMP #H'E9, B JUMP,CC INIT_VAR JUMP RECORD_B ; correspondance hexa --> affichage 7segment TABLE #16 BYTE #H'3F ;0 BYTE #H'03 ;1 BYTE #H'6D ;2 BYTE #H'67 ;3 BYTE #H'53 ;4 BYTE #H'76 ;5 BYTE #H'7E ;6 BYTE #H'23 ;7 BYTE #H'7F ;8 BYTE #H'77 ;9 BYTE #H'7B ;A BYTE #H'5E ;b BYTE #H'3C ;C BYTE #H'4F ;d BYTE #H'7C ;E BYTE #H'78 ;F