Exercices instructions arithmétiques et logiques - informati

Informatique Industrielle : Exercices Instructions arithmétiques et logiques

Télécharger PDF

Instructions 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).

Cela peut vous intéresser :

Partagez vos remarques, questions , propositions d'amélioration ou d'autres cours à ajouter dans notre site

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