correction exercices: instructions arithmétiques et logiq

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

Télécharger PDF

Instructions Arithmétiques et Logiques en Assembleur PIC16F84A

Exercice 1

Instructions Description états des registres après exécution

movlw 0x05 → (w) = 0x05

movwf xdata → (xdata) = 0x05

movlw 0x01 → (w) = 0x01

movwf ydata → (ydata) = 0x01

movf xdata,w → (w) = 0x05

incf ydata,w → (ydata) + 1 → (w) = 0x02

addlw 0x01 → (w) + 0x01 → (w) = 0x03

sublw 0x05 → 0x05 – (w) → (w) = 0x02

decf xdata,f → (xdata) - 1 → (xdata) = 0x04

Exercice 2

Instructions Description états des registres après exécution

movlw 0xD5 → (w) = 0xD5

movwf X → (X) = 0xD5

movlw 0x93 → (w) = 0x93

movwf Y → (Y) = 0x93

movlw 0xF0 → (w) = 0xF0

andwf X,f → (X) & (w) → (X) = 0xD0 (0xD5 AND 0xF0)

iorwf Y,f → (Y) | (w) → (Y) = 0xF3 (0x93 OR 0xF0)

comf Y,f → NOT(Y) → (Y) = 0x0C (NOT(0xF3))

Exercice 3

Instructions Description états des registres après exécution

PCL = 0x10

movlw 0xFD → (w) = 0xFD

xorlw 0xFF → (w) XOR 0xFF → (w) = 0x02 (0xFD XOR 0xFF)

movwf MEM1 → (MEM1) = 0x02

addlw 0x01 → 0x01 + (w) → (w) = 0x03

movwf MEM2 → (MEM2) = 0x03

andwf MEM1,w → (MEM1) & (w) → (w) = 0x02

movwf MEM3 → (MEM3) = 0x02

decf MEM3,f → (MEM3) - 1 → (MEM3) = 0x01

addwf PCL,f → (PCL) + (w) → (PCL) = 0x1B (0x18 + 0x01 + 0x02)

PCL pointe l’adresse de la prochaine instruction : 0x19

MEM1 = 0x02, MEM2 = 0x04, MEM3 = 0x01, (w) = 0x02 et (PCL) = 0x1C

Exercice 4 : Registre STATUS et Instructions Arithmétiques

Le registre STATUS contient les bits suivants : IRP, RP1, RP0, Z, DC, C.

1. Le bit Z indique si le résultat d’une instruction est nul (Z = 1) ou non (Z = 0).

2. Le bit DC (Digital Carry) signale une retenue sur les 4 bits de poids faible lors d’une instruction arithmétique.

3. Le bit C (Carry) signale une retenue sur les 8 bits lors d’une instruction arithmétique.

État initial du registre STATUS : b7 b6 b5 b4 b3 b2 b1 b0 (bit Z = 0, bit DC = 0, bit C = 0).

Exécution du programme :

movlw 0x18 → (w) = 0x18 → STATUS : Z = 0, DC = 0, C = 0

movwf STATUS → (STATUS) = 0x18 → STATUS : Z = 0, DC = 0, C = 0

movlw 0xFF → (w) = 0xFF → STATUS : Z = 0, DC = 0, C = 0

addlw 0x01 → (w) + 0x01 → (w) = 0x00 → STATUS : Z = 1, DC = 0, C = 1

Durée d’Exécution des Instructions

Le PIC16F84A fonctionne à 8 MHz avec un quartz, ce qui donne une fréquence de 2 MHz après division par 4. La durée d’un cycle est donc de 0,5 μs.

Durée en cycles :

movlw 0x18 → 1 cycle

movwf STATUS → 1 cycle

movlw 0xFF → 1 cycle

addlw 0x01 → 1 cycle

Total : 4 cycles

Durée totale du programme : 4 × 0,5 μs = 2 μs

FAQ

1. Que signifie le bit Z dans le registre STATUS ?

Le bit Z (Zero) indique si le résultat d’une opération est nul. Si Z = 1, le résultat est zéro ; sinon, Z = 0.

2. À quoi sert l’instruction movlw ?

L’instruction movlw permet de charger une valeur littérale (immediate) dans le registre W.

3. Comment calculer la durée d’un programme sur un PIC16F84A ?

Multipliez le nombre total de cycles par la durée d’un cycle (0,5 μs pour une fréquence de 2 MHz).

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