Vous êtes sur la page 1sur 2

Systèmes à Microprocesseurs – Electronique 3

Exercices complémentaires 3
1.1 Instructions assembleur
a) Donner en binaire les valeurs des registres R0 et R1 après exécution de chaque
instruction ci-dessous (en complétant le tableau, que vous recopierez sur votre copie).
Ne représenter que les six bit de poids faible pour chaque registre, et utiliser ‘???’
lorsque la valeur est indéterminée.
Code R0 R1
MOV R0, #11
MOV R1, #13
EOR R0, R0, R1
EOR R1, R0, R1
EOR R0, R0, R1
b) Qu’arrive-t’il aux registres R0 et R1 à l’issue de ces trois instructions EOR ?

1.2 Opérations de masquage


Le registre R0 contient une valeur dont on souhaite forcer certains bits à 1, forcer certains bits
à 0, complémenter certains autres bits et laisser les autres inchangés. La figure suivante
illustre ces modifications :

Où ‘X’ indique un bit inchangé et ‘-’ indique un bit à complémenter.

1) Ecrire un code assembleur ARM réalisant la transformation décrite par la figure


précédente, en un maximum de trois instructions. Expliquez textuellement et dans un
petit paragraphe séparé de quelques lignes le fonctionnement de votre programme.
2) Ecrire un code assembleur ARM réalisant la transformation décrite en deux
instructions. Expliquez textuellement et dans un petit paragraphe séparé de quelques
lignes le fonctionnement de votre programme.

-1-
Systèmes à Microprocesseurs – Electronique 3

CORRECTION

1.1 Instructions assembleur


a)
Code R0 R1
MOV R0, #11 001011 ???
MOV R1, #13 001011 001101
EOR R0, R0, R1 000110 001101
EOR R1, R0, R1 000110 001011
EOR R0, R0, R1 001101 001011
c) Les contenus de R0 et R1 sont permutes.

1.2 Opérations de masquage


R0 OR 00000000000011110000000000000000 (0x000F0000)
R0 AND 11111111111111110000111111111111 (0xFFFF0FFF)
R0 EOR 00000000000000000000111100000000 (0x00000F00)

Code
ORR R0, R0, #0x000F0000
AND R0, R0, #0xFFFF0FFF
EOR R0, R0, #0x00000F00

EN DEUX INSTRUCTIONS
R0 OR 00000000000011111111000000000000 (0x000FF000)
R0 EOR 00000000000000001111111100000000 (0x0000FF00)

Code
ORR R0, R0, #0x000FF000
EOR R0, R0, #0x0000FF00

-2-