Informatique Industrielle : Exercices Instructions arithmétiques et logiques
Télécharger PDFInstructions Arithmétiques et Logiques sur PIC16F84A
Voici les exercices corrigés avec les états successifs des registres et des instructions arithmétiques et logiques.
Exercice 1
Instructions :
movlw 0x05 → W = 0x05
movwf xdata → xdata = 0x05
movlw 0x01 → W = 0x01
movwf ydata → ydata = 0x01
movf xdata,w → W = 0x05
incf ydata,w → W = 0x02, ydata = 0x01
addlw 0x01 → W = 0x03
sublw 0x05 → W = 0xFA (sous-traitement : 0x03 - 0x05)
decf xdata,f → xdata = 0x04
Exercice 2
Instructions :
movlw 0xD5 → W = 0xD5
movwf X → X = 0xD5
movlw 0x93 → W = 0x93
movwf Y → Y = 0x93
movlw 0xF0 → W = 0xF0
andwf X,f → X = 0x90 (0xD5 AND 0xF0)
iorwf Y,f → Y = 0xF3 (0x93 OR 0xF0)
comf Y,f → Y = 0x0C (complément à 1 de 0xF3)
Exercice 3
État final après exécution :
MEM1 = 0x02
MEM2 = 0x00
MEM3 = 0x01
W = 0x01
PCL = 0x12
Exercice 4
Rôle des bits du registre STATUS :
1. Bit Z (Zero Flag) : Indique si le résultat d'une opération est nul (W = 0).
2. Bit DC (Digit Carry) : Utilisé pour les opérations sur les nibbles (4 bits) en mode BCD (Binary-Coded Decimal).
3. Bit C (Carry Flag) : Indique si une retenue a été générée lors d'une opération arithmétique ou logique.
État initial du registre STATUS :
b7 b6 b5 b4 b3 b2 b1 b0
0 0 0 0 0 0 0 1
États successifs après exécution :
1. movlw 0x18 → W = 0x18
2. movwf STATUS → STATUS = 0x18 (b7=0, b6=0, b5=0, b4=1, b3=0, b2=1, b1=0, b0=0)
3. movlw 0xFF → W = 0xFF
4. addlw 0x01 → W = 0x00 (retenue générée, C=1, Z=1)
STATUS : b7=0, b6=0, b5=0, b4=1, b3=0, b2=1, b1=1, b0=0
FAQ
1. Que signifie "incf MEM2 après exécution" dans l'exercice 3 ?
Cela signifie que l'instruction incf MEM2,f est exécutée après toutes les autres instructions du programme. Elle incrémente la valeur de MEM2 de 1.
2. Pourquoi le bit Z est-il positionné à 1 après l'instruction addlw 0x01 dans l'exercice 4 ?
Le bit Z est positionné à 1 car l'opération addlw 0x01 génère un résultat nul dans le registre W (0xFF + 0x01 = 0x00 avec retenue).
3. Comment calculer la durée d'exécution d'un programme sur un PIC16F84A piloté par un quartz de 8 MHz ?
La durée dépend du nombre d'instructions et de leur temps d'exécution. Chaque instruction sur un PIC16F84A piloté par un quartz de 8 MHz prend généralement 1 à 4 cycles d'horloge (0,125 à 0,5 µs).