QCM : Communication et assembleur bas niveau — 31 questions

Questions et réponses du QCM

1. Quel domaine fait principalement partie de la ressource R2.04 ?

La conception graphique et la retouche d’images numériques
La gestion comptable et l’analyse financière des entreprises
La communication et le fonctionnement bas niveau, notamment l’assembleur
La modélisation statistique et l’apprentissage automatique

La communication et le fonctionnement bas niveau, notamment l’assembleur

Explication

La ressource R2.04 porte sur la communication et le fonctionnement bas niveau, notamment l’assembleur, les microprocesseurs, les entrées-sorties, les pointeurs et les procédures.

2. Lequel de ces ensembles correspond aux thèmes abordés dans la ressource R2.04 ?

La conception de bases de données, l’ergonomie et la gestion de projet
Les microprocesseurs, les entrées-sorties, les pointeurs et les procédures
La cryptographie avancée, la vision artificielle et la robotique autonome
Les réseaux sociaux, le marketing, la publicité et le droit commercial

Les microprocesseurs, les entrées-sorties, les pointeurs et les procédures

Explication

La ressource regroupe notamment l’assembleur, les microprocesseurs, les entrées-sorties, les pointeurs et les procédures, qui relèvent du fonctionnement bas niveau.

3. Quels éléments composent principalement un microprocesseur ou CPU ?

Un écran, un clavier et une unité de stockage
Une unité de contrôle, une unité de traitement et des registres
Une mémoire de masse, une carte réseau et une imprimante
Un compilateur, un système d’exploitation et une base de données

Une unité de contrôle, une unité de traitement et des registres

Explication

Le microprocesseur, ou CPU, comprend l’unité de contrôle, l’unité de traitement et des registres. L’UAL n’est donc qu’une partie du CPU complet.

4. Quel est le rôle de l’unité de contrôle dans un microprocesseur ?

Conserver durablement les programmes et les fichiers de l’utilisateur
Convertir directement les instructions en signaux d’affichage
Orchestrer l’exécution des instructions en transmettant des ordres
Réaliser les calculs arithmétiques et logiques dans l’accumulateur

Orchestrer l’exécution des instructions en transmettant des ordres

Explication

L’unité de contrôle orchestre l’exécution des instructions grâce au séquenceur, qui décrit les opérations élémentaires et transmet les ordres aux différents organes.

5. Lorsqu’une opération arithmétique doit être réalisée, quelle unité effectue le calcul et où place-t-elle le résultat ?

L’UAL effectue le calcul et place le résultat dans l’accumulateur
L’unité de contrôle effectue le calcul et place le résultat dans le séquenceur
Le compteur ordinal effectue le calcul et place le résultat dans le registre d’instruction
Le registre d’adresses mémoire effectue le calcul et place le résultat dans le compteur ordinal

L’UAL effectue le calcul et place le résultat dans l’accumulateur

Explication

L’UAL, aussi appelée unité de traitement, réalise les calculs et place les résultats dans l’accumulateur. L’unité de contrôle, elle, séquence les opérations.

6. Que contient le compteur ordinal (CO) pendant l’exécution d’un programme ?

L’adresse du dernier registre utilisé par l’instruction
L’adresse de la prochaine instruction à exécuter
L’instruction actuellement en cours d’exécution
Le résultat du dernier calcul réalisé par l’UAL

L’adresse de la prochaine instruction à exécuter

Explication

Le compteur ordinal contient l’adresse de la prochaine instruction à exécuter. Il ne contient pas l’instruction courante, qui se trouve dans le registre d’instruction.

7. Quel registre contient l’instruction actuellement exécutée ?

L’accumulateur
Le registre d’instruction
Le registre d’adresses mémoire
Le compteur ordinal

Le registre d’instruction

Explication

Le registre d’instruction contient l’instruction actuellement exécutée, tandis que le compteur ordinal contient l’adresse de la prochaine instruction.

8. Quelle séquence décrit correctement l’exécution de l’instruction ADD R2 R3 ?

Charger l’instruction dans le RI, transférer R3 dans A et R2 dans B, décrémenter le CO, puis placer le résultat dans le RI
Incrémenter le CO après le calcul, transférer le résultat dans le registre d’adresses mémoire, puis charger R2 et R3 dans le séquenceur
Transférer R2 et R3 dans le RI, calculer leur différence dans l’UAL, puis placer le résultat dans le compteur ordinal
Transférer le CO vers A et le registre d’adresses mémoire, incrémenter le CO, charger l’instruction dans le RI, transférer R2 dans A et R3 dans B, puis calculer R2+R3 et placer le résultat dans R2

Transférer le CO vers A et le registre d’adresses mémoire, incrémenter le CO, charger l’instruction dans le RI, transférer R2 dans A et R3 dans B, puis calculer R2+R3 et placer le résultat dans R2

Explication

L’exécution suit l’ordre suivant : transfert du CO vers A et le registre d’adresses mémoire, incrémentation du CO, chargement dans le RI, transfert de R2 dans A et de R3 dans B, puis addition et écriture du résultat dans R2.

9. Dans une instruction assembleur, quel élément indique l’opération à effectuer, comme un chargement ou une addition ?

Le mnémonique
L’opérande
Le registre d’état
L’adresse mémoire

Le mnémonique

Explication

Le mnémonique, tel que LD ou ADD, désigne l’opération à effectuer. L’opérande indique plutôt la donnée ou le registre utilisé.

10. Quel mode d’adressage utilise un registre ou une variable contenant l’adresse de la donnée à atteindre ?

L’adressage direct
L’adressage immédiat
L’adressage indirect
L’adressage avec déplacement

L’adressage indirect

Explication

Dans l’adressage indirect, l’adresse de la donnée est fournie par l’intermédiaire d’un registre ou d’une variable jouant le rôle de pointeur. En adressage direct, l’adresse est donnée directement dans l’instruction.

11. Quels registres sont accessibles au programmeur dans le simulateur de Marc Dalmau ?

CO, RI et le registre d’état
R0 à R6 et SP
RA, RB et RS
R0 à R7 et le registre d’état

R0 à R6 et SP

Explication

Les registres accessibles sont R0 à R6 ainsi que SP. CO, RI, le registre d’état, RA, RB et RS ne sont pas accessibles au programmeur.

12. Quelles sont les trois zones mémoire d’un programme en langage machine ?

Les constantes, les entrées et les sorties
La pile, les ports et les instructions
Le code, les variables et la pile
Les registres, le code et le registre d’état

Le code, les variables et la pile

Explication

Un programme en langage machine comporte une zone de code, une zone de variables et une pile. La pile est notamment utilisée par les procédures.

13. Quelle représentation respecte le codage des valeurs entières et les limites indiquées pour les bases hexadécimale et binaire ?

Entiers sur 64 bits en signe-magnitude, hexadécimal sur 16 chiffres et binaire sur 64 chiffres
Entiers sur 16 bits, hexadécimal sur 4 chiffres et binaire sur 16 chiffres
Entiers sur 32 bits sans signe, hexadécimal sur 32 chiffres et binaire sur 8 chiffres
Entiers sur 32 bits en complément à 2, hexadécimal sur 8 chiffres maximum et binaire sur 32 chiffres maximum

Entiers sur 32 bits en complément à 2, hexadécimal sur 8 chiffres maximum et binaire sur 32 chiffres maximum

Explication

Les entiers sont codés sur 32 bits en complément à 2. Une valeur hexadécimale peut comporter au maximum 8 chiffres et une valeur binaire au maximum 32 chiffres.

14. Quelle opération réalise l’instruction LD lorsqu’elle est notée sous la forme destination ← source ?

Elle effectue un branchement vers une adresse
Elle compare deux valeurs dans le registre d’état
Elle écrit une source dans une variable mémoire
Elle charge la source dans un registre ou une adresse mémoire pointée

Elle charge la source dans un registre ou une adresse mémoire pointée

Explication

LD charge la valeur de la source dans une destination qui est un registre ou une adresse mémoire pointée. L’écriture dans une variable mémoire correspond à l’instruction ST.

15. Dans l’instruction ST, où la valeur de la source est-elle écrite ?

Dans le compteur ordinal
Dans le mnémonique de l’instruction
Dans le registre d’état
Dans une variable mémoire

Dans une variable mémoire

Explication

ST écrit la valeur d’un registre ou d’une adresse pointée dans une variable mémoire, selon la forme variable ← source. Cette fonction distingue ST de LD, qui charge une destination.

16. Quelle différence caractérise les branchements JMP et Bxx ?

JMP est inconditionnel, tandis que Bxx dépend d’une condition du registre d’état
JMP dépend d’une condition, tandis que Bxx est inconditionnel
JMP compare des adresses, tandis que Bxx effectue une addition
JMP écrit en mémoire, tandis que Bxx charge un registre

JMP est inconditionnel, tandis que Bxx dépend d’une condition du registre d’état

Explication

JMP réalise un branchement inconditionnel. Les branchements Bxx sont effectués seulement si une condition, comme l’égalité ou un débordement, est vérifiée dans le registre d’état.

17. Quelle est la finalité principale d’un test logiciel ?

Mesurer uniquement la vitesse d’exécution du programme
Modifier le programme sans vérifier son comportement
Détecter des anomalies et vérifier la conformité du programme aux exigences
Remplacer la compilation par une analyse automatique

Détecter des anomalies et vérifier la conformité du programme aux exigences

Explication

Un test logiciel analyse un programme pour détecter ses anomalies, le valider et vérifier sa conformité aux exigences.

18. Quelle part minimale du coût de développement les tests logiciels peuvent-ils représenter ?

Environ 30 à 40 %
Environ 15 à 20 %
Environ 5 à 10 %
Environ 70 à 80 %

Environ 30 à 40 %

Explication

Les tests représentent au minimum 30 à 40 % du coût de développement, ce qui souligne leur importance dans un projet logiciel.

19. Après avoir exécuté rapidement un programme sans utiliser le pas à pas, quelle démarche faut-il entreprendre si le résultat est incorrect ?

Recompiler immédiatement sans examiner le résultat
Vérifier le résultat, puis utiliser le pas à pas pour localiser l’erreur
Utiliser le pas à pas avant de définir le test
Supprimer le test et modifier tous les paramètres

Vérifier le résultat, puis utiliser le pas à pas pour localiser l’erreur

Explication

La démarche consiste à vérifier le résultat de l’exécution rapide, puis à employer le pas à pas rapide ou lent pour localiser l’erreur.

20. De quels éléments l’unité d’échange du simulateur est-elle constituée ?

De contrôleurs de périphériques et de registres de contrôle, d’état et de données
De périphériques graphiques et de registres dédiés uniquement au clavier
De processeurs spécialisés et de registres contenant uniquement des données
De mémoires principales et de registres contenant uniquement des adresses

De contrôleurs de périphériques et de registres de contrôle, d’état et de données

Explication

L’unité d’échange regroupe des contrôleurs de périphériques ainsi que des registres de contrôle, d’état et de données. Les registres de contrôle commandent le périphérique, tandis que les registres d’état le surveillent.

21. Combien de registres de 8 bits l’unité d’échange du simulateur comprend-elle ?

4 registres correspondant aux ports 0 à 3
8 registres correspondant aux ports 0 à 7
6 registres correspondant aux ports 1 à 6
16 registres correspondant aux ports 0 à 15

8 registres correspondant aux ports 0 à 7

Explication

L’unité d’échange comprend huit registres de huit bits, associés aux ports numérotés de 0 à 7.

22. Dans le simulateur, où sont stockées les coordonnées de la souris ?

Les deux coordonnées sont stockées au port 0
La coordonnée x est au port 6 et la coordonnée y au port 7
La coordonnée x est au port 7 et la coordonnée y au port 6
La coordonnée x est au port 5 et la coordonnée y au port 6

La coordonnée x est au port 6 et la coordonnée y au port 7

Explication

Le port 6 contient la coordonnée x de la souris et le port 7 contient sa coordonnée y. Le port 0 gère plutôt l’état du clavier et les actions de la souris.

23. Pour tracer une figure, comment faut-il organiser les informations envoyées aux ports du simulateur ?

Paramétrer le port 0, puis envoyer la couleur dans les bits de poids faible et la figure dans les bits de poids fort du port 1
Paramétrer les ports 5 à 7, puis envoyer uniquement la figure sur le port 0
Paramétrer les ports 1 à 4, puis envoyer séparément la couleur et la figure sur les ports 6 et 7
Paramétrer les ports 1 à 4, puis envoyer la couleur dans les bits de poids fort et la figure dans les bits de poids faible du port 5

Paramétrer les ports 1 à 4, puis envoyer la couleur dans les bits de poids fort et la figure dans les bits de poids faible du port 5

Explication

Il faut d’abord configurer les ports 1 à 4 selon la commande graphique, puis envoyer sur le port 5 la couleur dans les bits de poids fort et la figure dans les bits de poids faible.

24. Quelle distinction caractérise l’accès direct et l’accès indirect à une variable ?

L’accès direct utilise le nom de la variable, tandis que l’accès indirect utilise un registre contenant son adresse
L’accès direct utilise un pointeur, tandis que l’accès indirect utilise toujours une constante
L’accès direct utilise un registre d’état, tandis que l’accès indirect utilise le nom de la variable
L’accès direct lit uniquement une valeur, tandis que l’accès indirect écrit uniquement une valeur

L’accès direct utilise le nom de la variable, tandis que l’accès indirect utilise un registre contenant son adresse

Explication

L’accès direct désigne la variable par son nom, considéré comme équivalent de son adresse. L’accès indirect passe par un registre contenant cette adresse, par exemple [R1].

25. Quelle opération réalise l’instruction LEA dans la gestion d’un pointeur ?

Elle copie le contenu d’un tableau vers un registre
Elle compare l’adresse d’une variable avec sa valeur
Elle charge dans un registre la valeur effective d’une variable
Elle charge dans un registre l’adresse effective d’une variable

Elle charge dans un registre l’adresse effective d’une variable

Explication

LEA charge l’adresse effective d’une variable dans un registre, ce qui permet d’initialiser un pointeur. Elle se distingue de LD, qui charge une valeur.

26. Quelle caractéristique définit le mieux une procédure en programmation assembleur ?

Un bloc de code écrit une seule fois et utilisable à un seul endroit
Une zone mémoire réservée uniquement au stockage temporaire des registres
Un morceau de code exécutable à la demande, pouvant recevoir des paramètres et restituer une valeur
Une instruction qui empile automatiquement toutes les variables du programme

Un morceau de code exécutable à la demande, pouvant recevoir des paramètres et restituer une valeur

Explication

Une procédure est un morceau de code exécutable à la demande auquel des paramètres peuvent être transmis et qui peut restituer une valeur. Elle peut également être réutilisée à plusieurs endroits.

27. Pourquoi la pile convient-elle à la conservation des adresses de retour lors des appels de procédures ?

Parce qu’elle remplace automatiquement les registres utilisés par la procédure
Parce qu’elle restitue en premier l’élément mémorisé le plus récemment
Parce qu’elle conserve tous les éléments dans l’ordre de leur création
Parce qu’elle permet d’accéder directement à n’importe quelle adresse sans retrait

Parce qu’elle restitue en premier l’élément mémorisé le plus récemment

Explication

La pile suit le principe LIFO : le dernier élément empilé est le premier dépilé. Cette propriété convient à la conservation des adresses de retour imbriquées.

28. Lorsqu’une procédure est appelée puis s’achève, quelle succession d’actions décrit correctement CALL et RET ?

CALL branche vers la procédure sans modifier la pile ; RET empile l’adresse suivante dans le CO
CALL dépile l’adresse de retour et incrémente SP ; RET l’empile, l’affecte au CO et décrémente SP
CALL empile l’adresse de retour et incrémente SP ; RET la dépile, l’affecte au CO et décrémente SP
CALL empile l’adresse de retour et décrémente SP ; RET la dépile, l’affecte au CO et incrémente SP

CALL empile l’adresse de retour et décrémente SP ; RET la dépile, l’affecte au CO et incrémente SP

Explication

CALL empile l’adresse de retour, décrémente SP et branche vers la procédure. RET dépile cette adresse, la place dans le CO et incrémente SP.

29. Une procédure modifie temporairement plusieurs registres utilisés par le programme appelant. Quelle pratique protège correctement l’état de ce programme ?

Empiler ces registres au début de la procédure puis les dépiler avant le retour
Copier uniquement les valeurs des registres après l’exécution de la procédure
Laisser les registres inchangés dans la pile sans les restaurer avant le retour
Dépiler ces registres au début de la procédure puis les empiler après le retour

Empiler ces registres au début de la procédure puis les dépiler avant le retour

Explication

Pour protéger les registres du programme appelant, la procédure doit les empiler au début de son exécution, puis les dépiler avant de retourner.

30. Quelle démarche est appropriée pour traduire un algorithme en programme assembleur ?

Remplacer chaque étape de l’algorithme par une instruction unique, même si elle n’existe pas
Écrire directement les instructions sans vérifier les types d’opérandes, puis corriger uniquement les erreurs d’exécution
Identifier les instructions nécessaires, vérifier la syntaxe et les opérandes, puis organiser les transferts avec les registres
Choisir d’abord les registres disponibles, sans tenir compte de l’algorithme ni des contraintes syntaxiques

Identifier les instructions nécessaires, vérifier la syntaxe et les opérandes, puis organiser les transferts avec les registres

Explication

La méthode consiste à identifier les instructions nécessaires, à vérifier les contraintes syntaxiques et les types d’opérandes, puis à ajouter les transferts de données vers ou depuis les registres.

31. Dans le simulateur, comment faut-il généralement traiter une variable qui ne peut pas être utilisée directement comme opérande de CMP ou ADD ?

La charger dans un registre, effectuer l’opération, puis recopier le résultat en mémoire
La supprimer de la mémoire avant d’effectuer l’opération sur la pile
La remplacer par l’adresse de la procédure qui utilise cette variable
La laisser en mémoire et demander à l’instruction de convertir automatiquement son contenu

La charger dans un registre, effectuer l’opération, puis recopier le résultat en mémoire

Explication

Lorsque les variables ne peuvent pas être utilisées directement comme opérandes, il faut les charger dans des registres, effectuer l’opération, puis recopier les résultats en mémoire.

Révisez avec les flashcards

Mémorisez les réponses avec 60 flashcards sur Communication et assembleur bas niveau.

Quels sujets couvre la ressource R2.04 ?

La communication et le fonctionnement bas niveau.

Quels éléments bas niveau sont étudiés dans R2.04 ?

L’assembleur, les microprocesseurs, les entrées-sorties, les pointeurs et les procédures.

Que comprend le microprocesseur ?

L’unité de contrôle, l’unité de traitement et des registres.

Voir les flashcards →

Approfondir avec la fiche

Consultez la fiche de révision complète sur Communication et assembleur bas niveau.

Voir la fiche →

Cours similaires

Crée tes propres QCM

Importe ton cours et l'IA génère des QCM avec corrections en 30 secondes.

Générateur de QCM