correction exercices: instructions arithmétiques et logiq

Informatique Industrielle : Correction exercices: Instructions arithmétiques et logiq

Télécharger PDF

Obtenir le pack complet des cours, TDs, TPs et projets sur Informatique Industrielle : Microprocesseur & Microcontrôleur!

Vous souhaitez maîtriser les microprocesseurs et Microcontrôleurs ? Ne cherchez plus, nous avons le pack parfait pour vous.

pack complet des cours, TDs, TPs et projets sur Informatique Industrielle : Microprocesseur & Microcontrôleur

Accédez à une collection complète des supports de cours, des travaux dirigés (TD) corrigés, des travaux pratiques (TP) et des projets.

Obtenir le pack maintenant

1/4 N. ROUSSAFI Instructions arithmétiques et logiques Instructions arithmétiques et logiques

Exercice 1

Instructions Description états des registres après exécution movlw 0x05 0x05  (w) (w) = 0x05 movwf xdata (w)  (xdata) (xdata) = 0x05 movlw 0x01 0x01  (w) (w) = 0x01 movwf ydata (w)  (ydata) (ydata) = 0x01 movf xdata,w (xdata)  (w) (w) = 0x05 incf ydata,w

(ydata) +1  (w) (w) = 0x01 + 1 = 0x02 addlw 0x01 (w) + 0x01  (w) (w) = 0x02 + 0x01 = 0x03 sublw 0x05 0x05 – (w)  (w) (w) = 0x05 - 0x03 = 0x02 decf xdata,f (xdata) -1  (xdata) (xdata) = 0x05 - 0x01 = 0x04 2/4 N. ROUSSAFI Instructions arithmétiques et logiques

Exercice 2

Instructions Description états des registres après exécution movlw 0xD5 0xD5  (w) (w) = 0xD5 movwf X (w)  (X) (X) = 0xD5 movlw 0x93 0x93  (w) (w) = 0x93 movwf Y (w)  (Y) (Y) = 0x93 movlw 0xF0 0xF0  (w) (w) = 0xF0 andwf X,f (X) . (w)  (X) (X) = 0xD5 AND 0xF0 0xD5 = 1101 0101 0xF0 = 1111 0000 (X) = 1101 0000 = 0xD0 0 . 0 = 0 0 . 1 = 0 1 . 0 = 0 1 . 1 = 1 iorwf Y,f (Y) OR (w)  (Y) (Y) = 0x93 OR 0xF0 0x93 = 1001 0011 0xF0 = 1111 0000 (Y) = 1111 0011 = 0xF3 0 + 0 = 0 0 + 1 = 1 1 + 0 = 1 1 + 1 = 1

comf Y,f NOT(Y)  (Y) (Y) = NOT(0xF3) (Y) = NON (1111 0011) (Y)= 0000 1100 = 0x0C ̅ = 1 ̅ = 0

3/4 N. ROUSSAFI Instructions arithmétiques et logiques

Exercice 3

PCL Instructions Description états des registres après exécution 0x10 movlw 0xFD 0xFD  (w) (w) = 0xFD 0x11 xorlw 0xFF 0xFF  (w)  (w) (w) = 0xFF  0xFD (w) = 1111 1111 

1111 1101 (w)=0000 0010 = 0x02 0  0 = 0 0  1 = 1 1  0 = 1 1  1 = 0 0x12 movwf MEM1 (w)  (MEM1) (MEM1) = 0x02 0x13 addlw 0x01 0x01 + (w)  (w) (w) = 0x01+ 0x02 = 0x03 0x14 movwf MEM2 (w)  (MEM2) (MEM2) = 0x03 0x15 andwf MEM1,w

(MEM1) . (w)  (w) (w) = 0x02 . 0x03 = 0x02 0x16 movwf MEM3 (w)  (MEM3) (MEM3) = 0x02 0x17 decf MEM3,f (MEM3) -1(MEM3) (MEM3) = 0x02 - 0x01 = 0x01 0x18 addwf PCL,f (PCL) + (w)  (PCL) (PCL)=0x18 + 0x01 + 0x02 = 0x1B PCL pointe l’adresse de la prochaine instruction : 0x18 + 0x01 0x19 movlw 0xFD instructions non exécutées (instructions sautées) 0x1A iorlw 0xFF 0x1B incf MEM2,f (MEM2)+1(MEM2) (MEM2) = 0x03 + 0x01 = 0x04 0x1C Instruction suivante (PCL) = 0x1C (MEM1) = 0x02, (MEM2) = 0x04, (MEM3) = 0x01 , (w) = 0x02 et (PCL) = 0x1C

4/4 N. ROUSSAFI Instructions arithmétiques et logiques

Exercice 4

Soit le registre STATUS : IRP RP1 RP0 ̅̅̅̅̅̅̅̅ Z DC C 1. Lorsque le microcontrôleur traite une instruction (arithmétique, logique ou remise à zéro : CLR), le bit Z indique si le résultat est nul (Z=1) ou non (Z=0). 2. Lorsque le microcontrôleur traite une instruction arithmétique le bit DC indique si on a une retenue sur les 4 bits de poids faible. 3. Lorsque le microcontrôleur traite une instruction arithmétique le bit C indique si on a une retenue sur 8 bits. L’état du registre STATUS au départ est : b

7 b

6 b

5 b

4 b

3 b

2 b

1 b0 4. On exécute la partie du programme suivante :

w STATUS movlw 0x18 0 0 0 1 1 0 0 0 b

7 b

6 b

5 b

4 b

3 b

2 b

1 b0 movwf STATUS 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 movlw 0xFF 1 1 1 1 1 1 1 1 0 0 0 1 1 0 0 0 addlw 0x01 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 5. Le PIC16F84A est piloté par un quartz de 8 MHz ; donc la fréquence de fonctionnement est : 8 MHz /4 = 2 MHz et la durée d’un cycle est : 1 / 2 MHz = 0,5 μs.

Durée en cycle movlw 0x18 1 movwf STATUS 1 movlw 0xFF 1 addlw 0x01 1 Total 4 La durée de cette partie du programme est : 4 x 0,5 μs = 2 μs

Partagez vos remarques, questions ou propositions d'amélioration ici...

Enregistrer un commentaire (0)
Plus récente Plus ancienne

Publicité 1

Publicité 2