| Les candidats doivent être capables de : | Notes et orientations |
|---|---|
| Montrer la compréhension du modèle de base Von Neumann pour un système informatique et du concept de programme stocké | |
| Montrer la compréhension du but et du rôle des registres, y compris la différence entre les registres à usage général et les registres à usage spécial | Registres à usage spécial incluant : • Compteur de programme (PC) • Enregistreur de données mémoire (MDR) • Enregistreur d'adresse mémoire (MAR) • L'accumulateur (ACC) • Registre index (IX) • Enregistreur d'instruction courante (CIR) • Registre d'état |
| Montrer la compréhension du but et des rôles de l'Unité arithmétique et logique (ALU), de l'Unité de commande (CU) et de l'horloge système, du Stockage à accès immédiat (IAS) | |
| Montrer la compréhension de la manière dont les données sont transférées entre divers composants du système informatique en utilisant le bus d'adresse, le bus de données et le bus de contrôle | |
| Montrer la compréhension de la manière dont les facteurs contribuent aux performances du système informatique | Y compris : • type de processeur et nombre de cores • la largeur du bus • vitesse d'horloge • mémoire cache |
| Comprendre comment différents ports assurent la connexion à des périphériques | Y compris la connexion à : • Universal Serial Bus (USB) • High Definition Multimedia Interface (HDMI) • Video Graphics Array (VGA) |
| Décrire les étapes du cycle Fetch-Execute (F-E) | Décrire et utiliser la notation 'register transfer' pour décrire le cycle F-E |
| Montrer la compréhension du but des interruptions | Y compris : • causes possibles d'interruptions • applications des interruptions • utilisation d'une routine de service d'interruption (ISR) • moment où les interruptions sont détectées pendant le cycle fetch-execute • manière dont les interruptions sont gérées |
Fonctionnement de base du processeur
Informatique A-Level · Sujet 4
21:23
Architecture Von Neumann
Pendant la plupart de l'histoire, une machine faisait une seule chose. Un métierage tissait du tissu. Une calculatrice ajoutait. Pour lui faire faire quelque chose de nouveau, vous la reconstruisiez. Puis est venue une simplement déceptive…
Narration en anglais · sous-titres en anglais et en 中文 au choix
4.1
Architecture Von Neumann
Programme
Source : Programme Cambridge International
L'architecture de Von Neumann sous-tend presque tous les ordinateurs à usage général :
- une mémoire unique — la Mémoire d'accès immédiat (IAS) — contient à la fois les instructions du programme et les données (concept de programme stocké).
- un processeur (CPU) récupère les instructions en mémoire et les exécute une par une.
- les instructions s'exécutent dans l'ordre sauf si une branche modifie le flux.
L'idée de stored-program rend l'ordinateur flexible : changer le programme change ce qu'il fait, sans câblage.
Tapez sur les parties d'un ordinateur de Von Neumann
Explorez chaque bloc. Le CPU (unité de contrôle, ALU, registres) communique avec une seule mémoire principale via les bus — et cette mémoire partagée unique pour les instructions ET les données est l'idée de Von Neumann.
| English | Français |
|---|---|
| stored program/stɔːd ˈprəʊɡræm/ | programme stocké |
| processor/ˈprəʊsesə/ | processeur |
| RAM/ræm/ | RAM |
| page/peɪdʒ/ | page |
| cache memory/kæʃ ˈmeməri/ | mémoire cache |
4.1
Les principales parties du CPU
Toutes ces parties sont situées à l'intérieur d'une petite puce. Le diagramme plus loin dans cette section montre comment elles sont connectées ; la photo ci-dessous montre le réel.


Arithmetic and Logic Unit (ALU)
L'UAL effectue les opérations arithmétiques (addition, soustraction, …) et logiques (ET, OU, comparaisons). Elle prend ses opérandes dans les registres et y retourne les résultats.
Control Unit (CU)
L'unité de contrôle décode chaque instruction et envoie les signaux de commande pour son exécution — ouverture des chemins de données, indication de l'action à effectuer à l'UAL, ainsi que le contrôle des lectures et écritures en mémoire.
System clock
L'horloge envoie un flux régulier d'impulsions qui maintiennent le CPU synchronisé. Chaque instruction nécessite un nombre fixe de cycles, et la vitesse d'horloge (p. ex. 3.8 GHz) est un facteur de performance.
"Expliquez comment la CU et l'horloge système travaillent ensemble" : l'horloge émet des impulsions à fréquence fixe ; la control unit utilise chaque impulsion pour avancer le cycle fetch-execute d'un cran, envoyant ses signaux de contrôle en phase avec les impulsions, de sorte que chaque partie du processeur change d'état simultanément. Une horloge plus rapide signifie plus d'étapes par seconde, jusqu'au point où les circuits ne peuvent plus se stabiliser entre les impulsions.
Registers
Les registres sont de minuscules mémoires très rapides situées à l'intérieur du CPU. Les registres à usage spécifique ont chacun une fonction fixe dans le cycle :

- Compteur d'instruction (PC) — l'adresse de l'instruction suivante.
- Registre d'adresse mémoire (MAR) — l'adresse en cours de lecture ou d'écriture.
- Registre de données mémoire (MDR) — les données allant vers ou provenant de la mémoire.
- Registre d'instruction courante (CIR) — l'instruction actuellement décodée.
- Accumulateur (ACC) — la valeur sur laquelle l'UAL travaille.
- Registre d'état — contient les drapeaux (report, zéro, négatif, dépassement) utilisés par les branchements. Chaque drapeau correspond à un bit, activé ou effacé par l'UAL après une opération : le drapeau zéro après une comparaison correspondant, le drapeau report lors d'une addition dépassant la capacité du registre, le drapeau négatif lorsque le résultat est négatif. Un saut conditionnel lit les drapeaux pour décider de brancher, et un drapeau de dépassement peut déclencher une interruption.
- Registre d'index — un décalage ajouté à une adresse dans l'adressage indexé ; son incrément permet de parcourir un tableau élément par élément.
La question "complete the table describing the role of each register" demande une phrase précise par registre en ces termes : le PC contient l'adresse de la prochaine instruction à récupérer ; le MAR contient l'adresse de l'emplacement lu ou écrit ; le MDR contient les données ou l'instruction juste lues depuis, ou sur le point d'être écrites vers, cet emplacement ; le CIR contient l'instruction actuellement décodée et exécutée ; l'ACC contient le résultat de la dernière opération arithmétique ou logique.
Les registres à usage général sont utilisés par le programmeur pour des valeurs temporaires lors d'un calcul. Les transferts de données entre registres et mémoire s'écrivent en notation de transfert de registre — p. ex. MAR ← [PC] (« copier le contenu du PC dans le MAR »).

| English | Français |
|---|---|
| Von Neumann architecture/vɒn ˈnɔɪmən ˈɑːkɪtektʃə/ | architecture de Von Neumann |
| Immediate Access Store/ɪˈmiːdɪət ˈækses stɔː/ | mémoire à accès immédiat |
| arithmetic and logic unit/ˌærɪθˈmetɪk ənd ˈlɒdʒɪk ˈjuːnɪt/ | unité arithmétique et logique |
| ALU/ˌeɪ el ˈjuː/ | unité arithmétique et logique (UAL) |
| register/ˈredʒɪstə/ | registre |
| control unit/kənˈtrəʊl ˈjuːnɪt/ | unité de commande |
| clock speed/klɒk spiːd/ | vitesse d'horloge |
| bit/bɪt/ | bit |
| interrupt/ˈɪntərʌpt/ | interruption |
| buses/ˈbʌsɪz/ | bus |
| address bus/əˈdres bʌs/ | bus d'adresse |
| data bus/ˈdeɪtə bʌs/ | bus de données |
| word size/wɜːd saɪz/ | taille de mot |
| number of cores/ˈnʌmbə ɒv kɔːz/ | nombre de cœurs |
| cores/kɔːz/ | cœurs |
| amount of RAM/əˈmaʊnt ɒv ræm/ | quantité de RAM |
| port/pɔːt/ | port |
| peripheral/pəˈrɪfərəl/ | périphérique |
| register transfer notation/ˈredʒɪstə ˈtrænsfɜː nəʊˈteɪʃn/ | notation de transfert de registre |
| interrupt service routine/ˈɪntərʌpt ˈsɜːvɪs ruːˈtiːn/ | routine de gestion d'interruption |
| interrupt register/ˈɪntərʌpt ˈredʒɪstə/ | registre d'interruption |
4.1
Bus
Trois bus internes (ensembles de fils parallèles) relient les différentes parties :
- bus d'adresses — transporte l'adresse mémoire. Unidirectionnel (CPU → mémoire).
- bus de données — transporte les données. Bidirectionnel.
- bus de commande — transporte les signaux de commande (lecture, écriture, interruption). Bidirectionnel.
Une adresse-bus de $n$ bits peut accéder à $2^{n}$ emplacements mémoire. La largeur du bus de données détermine le nombre de bits transférés par accès (souvent la taille mot).


4.1
Ce qui affecte la performance
- vitesse d'horloge — plus de cycles par seconde.
- nombre de cœurs — un processeur multi-cœur exécute plusieurs threads simultanément.
- taille de mot — un processeur 64-bit traite des blocs de 64-bits par cycle et peut adresser bien plus de mémoire qu'un processeur 32-bit.
- quantité de RAM — plus de RAM permet de stocker davantage d'éléments du jeu de travail ; un volume insuffisant force le système d'exploitation à échanger des données vers le disque.
- taille de la mémoire cache — une cache plus grande réduit le temps d'accès moyen à la mémoire.
- type de stockage secondaire — un SSD charge les programmes beaucoup plus rapidement qu'un disque dur mécanique (HDD).
- largeur et vitesse du bus — des buses plus larges/rapides transmettent les données plus rapidement.

Associez les spécifications à la charge de travail : un quad-core bat un dual-core sur les tâches parallèles, mais une vitesse par cœur supérieure gagne sur les tâches monothreaded.
Chaque facteur est une réponse de deux points avec une raison associée :
- Plus de cœurs : chaque cœur peut chercher et exécuter sa propre instruction en même temps, donc plusieurs programmes, ou les threads d'un seul programme, s'exécutent en parallèle. Mais un programme doit être écrit pour utiliser plus d'un cœur, donc doubler les cœurs ne double pas la vitesse.
- Vitesse d'horloge plus élevée : plus de cycles recherche-exécution par seconde, donc plus d'instructions par seconde ; la limite est la chaleur produite.
- Bus plus large : un bus de données plus large transfère davantage de bits par opération, réduisant ainsi le nombre de transferts nécessaires pour traiter la même quantité de données ; un bus d'adresse plus large peut accéder à davantage d'emplacements mémoire.
- Mémoire cache : une petite mémoire rapide située à l'intérieur ou à côté du processeur qui conserve les instructions et les données utilisées le plus récemment ou le plus souvent. Les lire depuis le cache est beaucoup plus rapide que depuis la RAM, donc le processeur passe moins de temps en attente.
"Expliquez pourquoi l'ordinateur neuf performe mieux" se répond en comparant les deux spécifications ligne par ligne : une vitesse d'horloge plus élevée exécute plus d'instructions par seconde, plus de cœurs exécutent plus de tâches à la fois, plus de cache signifie moins d'accès lents à la RAM, et plus de RAM signifie moins de transferts vers le disque.
| English | Français |
|---|---|
| cache/kæʃ/ | cache |
| secondary storage/ˈsekəndəri ˈstɔːrɪdʒ/ | stockage secondaire |
4.1
Ports
Un port est une prise physique servant à connecter un périphérique :
- USB (Universal Serial Bus) — usage général (claviers, lecteurs, téléphones).
- HDMI (High Definition Multimedia Interface) — vidéo numérique et audio vers un écran.
- VGA (Video Graphics Array) — sortie vidéo analogique plus ancienne vers un moniteur.
- Ethernet (RJ-45) — LAN filaire. Jacks audio — écouteurs/microphone.
Différents ports utilisent des signaux différents, donc un câble HDMI ne s'insère pas dans une prise USB. USB-C est inhabituel car il transporte vidéo, données et alimentation.
"Expliquez comment l'ordinateur se connecte au moniteur via HDMI" : le port HDMI envoie la vidéo et l'audio comme un seul signal numérique via un seul câble, donc aucune conversion analogique n'est nécessaire et l'image n'est pas dégradée ; le câble supporte des résolutions haute définition et le port du moniteur décode le signal. Un périphérique USB est branchement et utilisation immédiate : lorsqu'il est connecté, l'ordinateur le détecte, l'identifie, charge ou installe le pilote dont il a besoin, et peut lui fournir de l'alimentation, tout cela sans redémarrage.
4.1
Cycle Fetch-Execute
Le CPU répète le cycle de fetch-execute (recherche-exécution), une exécution par instruction machine.
Fetch
- l'adresse du PC est copiée dans le MAR.
- le PC est incrémenté pour pointer vers l'instruction suivante.
- un signal read part sur le bus de contrôle.
- la mémoire place l'instruction sur le bus de données.
- elle est copiée dans le MDR, puis dans le CIR.
L'examen demande ces étapes en notation de transfert de registre, où [X] désigne le contenu du registre X et [[MAR]] désigne le contenu de l'emplacement mémoire dont l'adresse se trouve dans le MAR :
MAR ← [PC] the address of the next instruction goes to the MAR
PC ← [PC] + 1 the PC now points to the following instruction
MDR ← [[MAR]] the instruction at that address is read into the MDR
CIR ← [MDR] the instruction is copied into the CIR for decoding
L'ordre est important : le PC est incrémenté immédiatement après que son adresse ait été copiée, afin qu'une saut exécuté ultérieurement puisse encore le modifier. Pendant l'exécution, la même notation décrit chaque instruction ; pour LDD 200, par exemple, MAR ← 200, MDR ← [[MAR]], ACC ← [MDR].

Decode
La CU décode l'instruction dans le CIR — quelle opération, et quels opérandes ou adresses.
Execute
La CU l'exécute : arithmétique/logique va vers l'ALU (résultat vers l'ACC) ; un load/store déplace des données entre la mémoire et un registre ; un branch modifie le PC. Puis le cycle recommence.

Le cycle fetch-execute
Tapez autour de la boucle que le CPU répète des milliards de fois par seconde. Regardez comment le fetch utilise les registres PC/MAR/MDR/CIR, puis comment le decode et l'execute agissent sur ce qui a été cherché.
Le cycle recherche-exécution
Parcourez comment le CPU exécute une instruction — cherchez-la en mémoire, décoder-la, puis exécutez-la, encore et encore.
| English | Français |
|---|---|
| fetch-execute cycle/fetʃ ˈeksɪkjuːt ˈsaɪkl/ | cycle de lecture-exécution |
| special purpose registers/ˈspeʃl ˈpɜːpəs ˈredʒɪstəz/ | registres à usage spécialisé |
| Program Counter/ˈprəʊɡræm ˈkaʊntə/ | compteur d'instruction |
| Memory Address Register/ˈmeməri əˈdres ˈredʒɪstə/ | registre d'adresse mémoire |
| Memory Data Register/ˈmeməri ˈdeɪtə ˈredʒɪstə/ | registre de données mémoire |
| Current Instruction Register/ˈkʌrənt ɪnˈstrʌkʃn ˈredʒɪstə/ | registre d'instruction courante |
| accumulator/əˈkjuːmjʊleɪtə/ | accumulateur |
| Status Register/ˈsteɪtəs ˈredʒɪstə/ | registre d'état |
| flags/flæɡz/ | drapeaux |
4.1
Interruptions
Une interruption est un signal qui met en pause le cycle normal afin que le CPU puisse gérer un événement urgent (une frappe au clavier, l'arrivée d'un paquet, une panne matérielle, une division par zéro, le temporisateur du système d'exploitation).

Gérer une :
- termine l'instruction actuelle.
- save the state (PC et registres).
- Charger l'adresse de la routine de service d'interruption (ISR) dans le PC et l'exécuter.
- l'ISR gère l'événement.
- restore l'état sauvegardé et continue.
Les interrupts permettent au système de répondre rapidement sans que le CPU surveille constamment les appareils, et sont la méthode par laquelle le OS fait du multitasking.
« Expliquez comment une interruption provenant d'un périphérique d'entrée est détectée et gérée dans le cycle F-E » est une réponse de quatre points comportant les éléments suivants : le périphérique envoie un signal d'interruption qui active le drapeau d'interruption dans le registre d'interruption ; le processeur vérifie ce registre à la fin de chaque cycle de fetch-execute, après l'exécution de l'instruction courante ; si un drapeau est activé et que l'interruption a une priorité supérieure à la tâche en cours, le contenu du PC et des autres registres sont sauvegardés sur la pile ; l'adresse de la routine de service d'interruption est chargée dans le PC et la routine s'exécute ; lorsqu'elle se termine, les valeurs sauvegardées sont restaurées depuis la pile et le programme interrompu reprend là où il s'était arrêté.
Causes dignes d'être nommées : une interrupt matérielle venant d'un appareil (une touche pressée, tampon d'imprimante vide, paquet réseau arrivant), une interrupt logicielle due à une faute (division par zéro, instruction illégale, dépassement d'arithmétique), une interrupt d'horloge provenant du système d'exploitation marquant la fin d'une tranche de temps, et un avertissement de coupure de courant.

| English | Français |
|---|---|
| stack/stæk/ | pile |
| assembly language/əˈsemblɪ ˈlæŋɡwɪdʒ/ | langage assembleur |
4.2
Assembly language and machine code
Programme
| Les candidats doivent être capables de : | Notes et orientations |
|---|---|
| Montrer la compréhension de la relation entre le langage assembleur et le code machine | |
| Décrire les différentes étapes du processus d'assemblage pour un assembleur à deux passages | Appliquer le processus de l'assembleur à deux passages à un programme assembleur simple donné |
| Tracer un programme assembleur simple donné | |
| Montrer la compréhension que l'ensemble des instructions est groupé | Y compris les groupes suivants : • Mouvement de données • Entrée et sortie de données • Opérations arithmétiques • Instructions inconditionnelles et conditionnelles • Instructions de comparaison |
| Montrer la compréhension et être capable d'utiliser différents modes d'adressage | Y compris immédiat, direct, indirect, indexé, relatif |
Source : Programme Cambridge International
Le CPU exécute réellement du code machine — des motifs de bits spécifiques à une architecture. Le langage assembleur est une forme lisible, avec une instruction par instruction machine, écrite à l'aide de mnémoniques telles que LDD, ADD, JMP. Un assembleur le traduit en code machine.

Two-pass assembler
Un assembleur à deux passes lit la source deux fois :
- passage 1 construit une table des symboles : chaque fois qu'une étiquette (comme
LOOP:) apparaît, on enregistre son adresse ; aucun code n'est produit encore. - pass 2 génère le code : traduit chaque instruction, et quand l'une référence un label (comme
JMP LOOP), cherche son adresse dans la table des symboles.
Deux passages traitent les références futures (un saut vers une étiquette définie plus tard).
Exemple résolu. Appliquez le processus à deux passes à ce programme, dont la première instruction est stockée à l'adresse 100.
LDD COUNT
LOOP: DEC ACC
CMP #0
JPN LOOP
END
COUNT: 5
Le passage 1 lit chaque ligne, compte l'adresse qu'elle occupera et enregistre toutes les étiquettes dans la table des symboles : LOOP = 101 (la ligne DEC) et COUNT = 105 (la ligne de données). Aucun code n'est produit. Le passage 2 relit le programme et traduit chaque ligne en code machine, en remplaçant chaque mnémotechnique par son opcode et chaque adresse symbolique par le numéro correspondant dans la table des symboles : LDD COUNT devient l'opcode pour LDD avec l'opérande 105, et JPN LOOP devient l'opcode pour JPN avec l'opérande 101. Le saut retour vers LOOP aurait pu être résolu en un seul passage, mais un saut vers l'avant vers une étiquette non encore vue ne pouvait pas, c'est pourquoi l'assembleur effectue deux passages.
Example instruction set
Cambridge utilise un petit ensemble générique, imprimé dans la table de référence de l'examen, avec un registre à usage général, l'accumulateur (ACC), et un registre index (IX). Un operand écrit #n est un nombre décimal, Bn un nombre binaire et &n un nombre hexadécimal ; <address> est un numéro d'emplacement ou un label.
| Group | Instruction | What it does |
|---|---|---|
| Data movement | LDM #n |
charge le nombre n dans ACC (immédiat) |
LDD <address> |
charge le contenu de l'adresse dans ACC (direct) | |
LDI <address> |
l'adresse contient une autre adresse ; charge le contenu de celle-ci dans ACC (indirect) | |
LDX <address> |
ajouter IX à l'adresse et charger le contenu du résultat dans ACC (indexé) | |
LDR #n |
charger le nombre n dans IX | |
MOV <register> |
copier ACC dans le registre nommé (IX) | |
STO <address> |
stocker le contenu de ACC à l'adresse | |
| Entrée et sortie | IN |
lire une frappe clavier et mettre son code ASCII dans ACC |
OUT |
afficher le caractère dont le code ASCII est dans ACC | |
| Arithmétique | ADD <address> / ADD #n |
additionner le contenu de l'adresse, ou le nombre, à ACC |
SUB <address> / SUB #n |
soustraire à ACC | |
INC <register> / DEC <register> |
ajouter 1 à, ou soustraire 1 à, ACC ou IX | |
| Comparer | CMP <address> / CMP #n |
comparer ACC avec le contenu de l'adresse, ou avec n, et définir le drapeau |
CMI <address> |
comparer ACC avec le contenu de l'adresse stocké à l'adresse (indirect) | |
| Saut | JMP <address> |
sauter vers l'adresse inconditionnellement |
JPE <address> / JPN <address> |
sauter si la dernière comparaison était égale / non égale | |
| Manipulation des bits | AND, OR, XOR avec #n, Bn, &n ou <address> |
opération bit à bit sur ACC |
LSL #n / LSR #n |
décaler ACC logiquement de n positions vers la gauche ou la droite | |
END |
terminer le programme |
La question « les instructions en langage assembleur sont groupées » demande les noms des groupes et une instruction de chacun : mouvement de données, entrée/sortie, arithmétique, sauts inconditionnels et conditionnels, comparaison et manipulation des bits.
Comment fonctionne un assembleur à deux passages
Parcourez-le. L'assembleur lit votre code deux fois : le passage 1 trouve simplement l'emplacement de chaque étiquette, afin que le passage 2 puisse remplir les adresses — c'est ainsi qu'un saut vers une étiquette définie plus tard fonctionne encore.
| English | Français |
|---|---|
| operand/ˈɒpərænd/ | opérande |
| machine code/məˈʃiːn kəʊd/ | code machine |
| mnemonics/nɪˈmɒnɪks/ | mnémoniques |
| assembler/əˈsemblə/ | assembleur |
| symbol table/ˈsɪmbl ˈteɪbl/ | table des symboles |
| label/ˈleɪbl/ | étiquette |
| forward references/ˈfɔːwəd ˈrefrənsɪz/ | références vers l'avant |
| opcode/ˈɒpkəʊd/ | opcode |
4.2
Modes d'adressage
Le mode d'adressage (les modes d'adressage) indique comment le CPU localise l'opérande :
- adressage immédiat — l'opérande est la valeur contenue dans l'instruction.
LDM #10charge 10. - adressage direct — l'instruction contient une adresse ; l'opérande est la valeur située à cet endroit.
LDD 200. - adressage indirect — l'instruction contient une adresse qui renvoie à une autre adresse, laquelle contient les données.
LDI 200. - adressage indexé — l'adresse effective est
address + index register; utilisé pour les tableaux.LDX 100avec IX = 5 lit l'adresse 105.
(L'adressage relatif fournit l'adresse comme un décalage par rapport au PC — utilisé pour les sauts.)

Exemple résolu. La mémoire contient : emplacement 200 = 250, emplacement 250 = 99, emplacement 105 = 7. Le registre index contient 5. Que contient l'accumulateur après chacun de LDM #200, LDD 200, LDI 200 et LDX 100 ? Suivez jusqu'où chaque mode doit chercher. LDM #200 est immédiat - l'opérande est le nombre écrit dans l'instruction, donc l'accumulateur contient 200. LDD 200 est direct - aller à l'emplacement 200 et prendre ce qu'il y a : 250. LDI 200 est indirect - l'emplacement 200 contient 250, qui est une autre adresse, donc continuer vers l'emplacement 250 : 99. LDX 100 est indexé - ajouter le registre index à l'adresse, $100 + 5 = 105$, et lire l'emplacement 105 : 7. Comptez les sauts pour les distinguer : immédiat 0, direct 1, indirect 2, indexé 1 (une fois l'index ajouté).
| English | Français |
|---|---|
| Index Register/ˈɪndeks ˈredʒɪstə/ | registre d'indexation |
| indexed addressing/ˈɪndekst əˈdresɪŋ/ | adressage indexé |
| general-purpose registers/ˈdʒenərəl ˈpɜːpəs ˈredʒɪstəz/ | registres universels |
| register transfer/ˈredʒɪstə ˈtrænsfɜː/ | transfert de registre |
| control bus/kənˈtrəʊl bʌs/ | bus de contrôle |
| addressing mode/əˈdresɪŋ məʊd/ | mode d'adressage |
| immediate addressing/ɪˈmiːdɪət əˈdresɪŋ/ | adressage immédiat |
| direct addressing/daɪˈrekt əˈdresɪŋ/ | adressage direct |
| indirect addressing/ɪndaɪˈrekt əˈdresɪŋ/ | adressage indirect |
| relative addressing/ˈrelətɪv əˈdresɪŋ/ | adressage relatif |
| logical shift/ˈlɒdʒɪkl ʃɪft/ | décalage logique |
| cyclic shift/ˈsaɪklɪk ʃɪft/ | décalage cyclique |
4.2
Tracé d'un programme assembleur
Pour le tracer : faites un tableau avec des colonnes pour le PC, ACC, registre index, chaque variable et tout drapeau. Passez pas à pas à travers les instructions, mettez à jour le tableau après chacune ; suivez les branches lorsqu'elles changent le PC ; arrêtez à END. Un motif courant est une boucle sur un tableau utilisant l'adressage indexé.

Exemple résolu. Tracez ce programme. L'adresse 200 contient 5 et l'adresse 201 contient 0.
100 LDD 200
101 CMP #0
102 JPE 108
103 OUT
104 DEC ACC
105 STO 200
106 LDD 201
107 JMP 100
108 END
Écrivez une ligne pour chaque instruction exécutée, en ne remplissant que les colonnes qui changent :
| Instruction | ACC | 200 | 201 | Sortie |
|---|---|---|---|---|
| début | 5 | 0 | ||
LDD 200 |
5 | |||
CMP #0 |
||||
JPE 108 |
non pris | |||
OUT |
caractère de code 5 | |||
DEC ACC |
4 | |||
STO 200 |
4 | |||
LDD 201 |
0 | |||
JMP 100 |
||||
LDD 200 |
4 |
et ainsi de suite, jusqu'à ce que LDD 200 charge 0, la comparaison définisse le drapeau égal, JPE 108 soit exécutée et le programme se termine. Trois points vérifiés par l'examinateur : un CMP ne modifie aucun registre, seulement un drapeau ; un saut non pris compte toujours comme exécuté ; et OUT produit un caractère, donc il va dans la colonne de sortie, pas dans la colonne ACC. "Décrivez l'effet du changement de LDD 10 en LDM #10" : l'ACC contiendrait le nombre 10 au lieu du contenu de l'adresse 10.
4.3
Décalages binaires
Programme
| Les candidats doivent être capables de : | Notes et orientations |
|---|---|
| Montrer la compréhension et effectuer des décalages binaires | Logique, arithmétique et cyclique Décalage gauche, décalage droit |
| Montrer la compréhension de la manière dont la manipulation binaire peut être utilisée pour surveiller/contrôler un dispositif | Effectuer des opérations de manipulation binaire Tester et définir un bit (en utilisant le masquage binaire) |
| Étiquette d'instruction | Opcode | Opérande | Explication |
| AND #n / Bn / &n | Opération ET binaire du contenu de ACC avec l'opérande |
| AND | Opération ET binaire du contenu de ACC avec le contenu de |
| XOR #n / Bn / &n | Opération XOR binaire du contenu de ACC avec l'opérande |
| XOR | Opération XOR binaire du contenu de ACC avec le contenu de |
| OR #n / Bn / &n | Opération OU binaire du contenu de ACC avec l'opérande |
| OR | Opération OU binaire du contenu de ACC avec le contenu de |
| LSL #n | Les bits dans ACC sont décalés logiquement n positions vers la gauche. Des zéros sont introduits à l'extrémité droite |
| LSR #n | Les bits dans ACC sont décalés logiquement n positions vers la droite. Des zéros sont introduits à l'extrémité gauche |
| Étiquette d'une instruction | |
| Donne une adresse symbolique | |
| Toutes les questions supposeront qu'il n'y a qu'un seul registre à usage général disponible (Accumulateur) ACC désigne Accumulateur IX désigne Registre Index peut être une adresse absolue ou symbolique # désigne un nombre décimal, ex. #123 B désigne un nombre binaire, ex. B01001010 & désigne un nombre hexadécimal, ex. &4A |
Source : Programme Cambridge International
Un décalage logique déplace tous les bits vers la gauche ou la droite d'un certain nombre de positions, en remplissant les nouvelles positions avec 0.
- décalage à gauche de 1 (
LSL #1) — les bits se déplacent vers la gauche, un 0 entre à droite ; pour un nombre non signé, c'est × 2. - décalage à droite de 1 (
LSR #1) — les bits se déplacent vers la droite, un 0 entre à gauche ; pour un nombre non signé, c'est integer ÷ 2.
Décaler de $n$ positions multiplie ou divise par $2^{n}$. Exemple : 00001011 (11) LSL #1 → 00010110 (22).
Les bits décalés hors de l'extrémité sont perdus, donc la multiplication n'est correcte que tant qu'ils étaient zéros. LSL #2 sur l'entier en complément à deux 11001010 donne 00101000 : les deux 1s qui sont sortis par la gauche ont disparu, le bit de signe a changé, et le résultat n'est plus quatre fois l'original.
Un décalage arithmétique à droite conserve le bit de signe afin qu'un nombre signé négatif reste négatif. Un décalage cyclique (rotation) réinsère le bit qui sort par une extrémité à l'autre extrémité, de sorte qu'aucun bit n'est perdu.
"Montrez le résultat d'un décalage logique à droite de 3 places sur 10011110" : copiez le bit de signe dans chaque place vacante, 11110011. Le même décalage sur 01011100 donne 00001011. Un décalage cyclique à gauche de 1 sur 10000110 donne 00001101 : le 1 de tête réapparaît à droite.

La différence entre les deux décalages à droite est un seul bit. Prenez 11110000, qui est 240 lu comme non signé et $-16$ lu comme signé. LSR #1 apporte un 0 et donne 01111000 $= 120$, qui est la moitié correcte de 240. ASR #1 copie le bit de signe et donne 11111000 $= -8$, qui est la moitié correcte de $-16$. Aucun n'est faux — chacun divise la valeur par deux selon une lecture.

Manipulation des bits pour surveillance/contrôle
Les dispositifs embarqués utilisent souvent un bit d'un registre par signal (par ex. bit $n$ = LED $n$). En utilisant un masque — masquage de bits — vous pouvez :
- positionner le bit $n$ :
R = R ORun masque avec le bit $n$ positionné. - désactiver le bit $n$ :
R = R ANDun masque avec le bit $n$ désactivé et le reste activé. - inverser le bit $n$ :
R = R XORun masque avec le bit $n$ activé. - tester le bit $n$ :
R ANDle masque, puis vérifier si le résultat est non nul.

La manipulation des bits est rapide, utilise peu de mémoire et permet à un octet de contenir jusqu'à 8 états marche/arrêt.
Dans l'ensemble d'instructions de l'examen, ce sont AND, OR et XOR avec un masque écrit comme opérande décimal, binaire ou hexadécimal. Avec ACC contenant 10101100 :
| Instruction | Masque | Résultat dans ACC | Effet |
|---|---|---|---|
AND B00001111 |
00001111 |
00001100 |
garde seulement les quatre bits de poids faible (désactive les autres) |
OR #1 |
00000001 |
10101101 |
positionne le bit de poids faible, laissant les autres inchangés |
XOR &FF |
11111111 |
01010011 |
inverse tous les bits |
AND B00001000 puis CMP #0 |
00001000 |
00001000 |
teste le bit 3 : la comparaison n'est pas égale, donc le bit 3 était positionné |
LSL #2 |
10110000 |
décale à gauche de deux places, perdant les deux bits supérieurs | |
LSR #3 |
00010101 |
décale à droite de trois places, des zéros entrant à gauche |
"Écrivez l'instruction qui active le bit de poids faible à 1 et laisse les autres inchangés" : OR #1, ou OR B00000001. Pour désactiver un bit, utilisez AND avec un masque ayant un 0 à cet endroit et des 1 ailleurs ; pour tester un bit, AND avec un masque ayant un 1 uniquement à cet endroit, puis comparez le résultat avec zéro. Dans un dispositif de surveillance, un bit d'un registre par capteur permet à une seule AND de vérifier si un capteur particulier est allumé, et un OR active le bit de commande d'un actionneur sans perturber les autres.
Décalez et masquez les bits d'un octet
Choisissez un opérateur et observez chaque bit de résultat. Un décalage gauche (<<) moves every bit up one place (×2); a right shift (>>) les déplace vers la droite (÷2) ; AND avec un masque efface les bits que vous ne voulez pas.
| English | Français |
|---|---|
| mask/mæsk/ | masque |
4.3
Définitions acceptées par l'examinateur
Une question de définition est notée selon un libellé fixe. Apprenez-les exactement et ne donnez qu'une seule réponse.
| Terme | Définition |
|---|---|
| concept de programme stocké | les instructions du programme et les données sont toutes deux stockées en mémoire principale, et les instructions sont fetchées et exécutées une par une |
| registre | un petit emplacement de stockage très rapide à l'intérieur du processeur avec un but spécifique |
| Compteur de programme | le registre contenant l'adresse de la prochaine instruction à être fetchée |
| Registre d'adresse mémoire | le registre contenant l'adresse de l'emplacement mémoire lu ou écrit |
| Registre de données mémoire | le registre contenant les données ou l'instruction récemment lues depuis, ou sur le point d'être écrites dans, la mémoire |
| Registre d'instruction courante | le registre contenant l'instruction actuellement décodée et exécutée |
| Accumulateur | le registre à usage général contenant le résultat de la dernière opération arithmétique ou logique |
| mémoire cache | petite mémoire rapide proche du processeur contenant des instructions et des données fréquemment utilisées |
| interruption | un signal provenant d'un périphérique ou d'un programme qui fait que le processeur pause la tâche actuelle et exécute un service d'interruption |
| langage assembleur | un langage de bas niveau dans lequel chaque instruction mnémotechnique correspond à une instruction de code machine |
| adressage immédiat | l'opérande est la valeur écrite dans l'instruction |
| adressage direct | l'opérande est le contenu de l'adresse écrite dans l'instruction |
| adressage indirect | l'adresse dans l'instruction contient l'adresse de l'opérande |
| adressage indexé | l'adresse de l'opérande est l'adresse dans l'instruction plus le contenu du registre d'index |
| adressage relatif | l'adresse de l'opérande est donnée comme un décalage par rapport à l'adresse de l'instruction courante |
| décalage logique | chaque bit se déplace du nombre de places indiqué et des zéros remplissent les cases libérées |
4.3
Conseils d'examen
- Apprendre le cycle prélever-exécuter en termes de transfert de registres (PC, MAR, MDR, CIR, ACC) et ce qui incrémente le PC.
- Nommer la fonction de chaque registre ; le bus d'adresses est unidirectionnel, le bus de données est bidirectionnel.
- Distinguer les modes d'adressage (immédiat, direct, indirect, indexé) — une question fréquente.
- Expliquer comment la vitesse d'horloge, le nombre de cœurs, la taille du cache et la longueur du mot influencent les performances.
- Pour un décalage binaire, indiquer s'il est logique ou arithmétique ; un décalage vers la gauche multiplie par 2, un décalage vers la droite divise par 2.
Erreurs courantes
- Dire que le PC contient l'instruction courante, ou que le MDR contient une adresse. Le PC contient l'adresse de l'instruction suivante ; le MDR contient des données ou une instruction, jamais une adresse.
- Omettre l'incrémentation du PC lors de la phase de prélèvement, ou la placer après l'exécution. Elle a lieu dès que l'adresse a été copiée dans le MAR.
- Lire
LDD 10comme "charger 10".LDD 10charge le contenu de l'adresse 10 ;LDM #10charge le nombre 10. - Placer une valeur dans la colonne ACC pour
CMPouOUT. Une comparaison définit uniquement un drapeau ; une sortie va vers la colonne de sortie. - Dire qu'une interruption est traitée "immédiatement". Le processeur termine l'instruction courante et vérifie les interruptions à la fin du cycle.
- Utiliser un décalage logique droit sur un nombre négatif en complément à deux. Seul un décalage arithmétique conserve le bit de signe.
Leçons interactives sur ce sujet
Traversez-le étape par étape, avec des exercices à vérification instantanée.