| 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:32
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 anglais + 中文 incrustés
4.1
Architecture Von Neumann
Programme
Source : Programme Cambridge International
L'architecture Von Neumann 冯·诺依曼体系结构 sous-tend presque tous les ordinateurs à usage général :
- une mémoire unique — la Immediate Access Store 立即存取存储器 (IAS) — contient à la fois les instructions de programme et les données (le concept de stored program 存储程序).
- non processor 处理器 (CPU) récupère les instructions depuis la 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.
| Anglais | Chinois | Pinyin |
|---|---|---|
| Immediate Access Store/ɪˈmiːdɪət ˈækses stɔː/ | 立即存取存储器 | lì jí cún qǔ cún chǔ qì |
| stored program/stɔːd ˈprəʊɡræm/ | 存储程序 | cún chǔ chéng xù |
| processor/ˈprəʊsesə/ | 处理器 | chǔ lǐ qì |
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'ALU 算术逻辑单元 effectue les opérations arithmétiques (addition, soustraction, …) et logiques (AND, OR, comparaisons). Elle prend des opérandes depuis les registers 寄存器 et place les résultats dans un registre.
Unité de contrôle (CU)
L'control unit 控制单元 décode chaque instruction et envoie les signaux de contrôle pour l'exécuter — ouvrir les chemins de données, dire à l'ALU quoi faire, et contrôler les lectures et écritures mémoire.
System clock
L'horloge envoie un flux régulier d'impulsions qui maintiennent le CPU synchronisé. Chaque instruction prend un nombre fixe de cycles, et la vitesse d'horloge 时钟频率 (par 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.
Registres
Les registers sont de petites mémoires très rapides à l'intérieur du CPU. Les special purpose registers 专用寄存器 ont chacune une tâche fixe dans le cycle :
- Program Counter 程序计数器 (PC) — l'adresse de l'suivante instruction.
- Memory Address Register 内存地址寄存器 (MAR) — l'adresse lue ou écrite.
- Memory Data Register 内存数据寄存器 (MDR) — les données allant vers ou venant de la mémoire.
- Current Instruction Register 当前指令寄存器 (CIR) — l'instruction actuellement décodée.
- Accumulator 累加器 (ACC) — la valeur sur laquelle l'ALU travaille.
- Status Register 状态寄存器 — contient des flags 标志 (carry, zero, negative, overflow) utilisés par les branches. Chaque flag est un bit, positionné ou effacé par l'ALU après une opération : le flag zero après une comparaison qui a matches, le flag carry quand une addition a débordé le registre, le flag negative quand un résultat est négatif. Un saut conditionnel lit les flags pour décider de brancher, et un flag overflow peut déclencher une interruption.
- Index Register 变址寄存器 — un décalage ajouté à une adresse dans l'adressage indexé ; l'incrémenter permet de parcourir un tableau un élément à la fois.
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.
General-purpose registers 通用寄存器 sont utilisés par le programmeur pour des valeurs temporaires durant un calcul. Les mouvements de données entre registers et mémoire sont écrits en notation register transfer 寄存器传送 — par ex. MAR ← [PC] ("copiez le contenu du PC dans le MAR").

| Anglais | Chinois | Pinyin |
|---|---|---|
| Von Neumann architecture/vɒn ˈnɔɪmən ˈɑːkɪtektʃə/ | 冯·诺依曼体系结构 | féng · nuò yī màn tǐ xì jié gòu |
| arithmetic and logic unit/ˌærɪθˈmetɪk ənd ˈlɒdʒɪk ˈjuːnɪt/ | 算术逻辑单元 | suàn shù luó jí dān yuán |
| ALU/ˌeɪ el ˈjuː/ | 算术逻辑单元 | suàn shù luó jí dān yuán |
| register/ˈredʒɪstə/ | 寄存器 | jì cún qì |
| control unit/kənˈtrəʊl ˈjuːnɪt/ | 控制单元 | kòng zhì dān yuán |
| clock speed/klɒk spiːd/ | 时钟频率 | shí zhōng pín lǜ |
| special purpose registers/ˈspeʃl ˈpɜːpəs ˈredʒɪstəz/ | 专用寄存器 | zhuān yòng jì cún qì |
| Program Counter/ˈprəʊɡræm ˈkaʊntə/ | 程序计数器 | chéng xù jì shù qì |
| Memory Address Register/ˈmeməri əˈdres ˈredʒɪstə/ | 内存地址寄存器 | nèi cún dì zhǐ jì cún qì |
| Memory Data Register/ˈmeməri ˈdeɪtə ˈredʒɪstə/ | 内存数据寄存器 | nèi cún shù jù jì cún qì |
| Current Instruction Register/ˈkʌrənt ɪnˈstrʌkʃn ˈredʒɪstə/ | 当前指令寄存器 | dāng qián zhǐ lìng jì cún qì |
| accumulator/əˈkjuːmjʊleɪtə/ | 累加器 | lěi jiā qì |
| Status Register/ˈsteɪtəs ˈredʒɪstə/ | 状态寄存器 | zhuàng tài jì cún qì |
| flags/flæɡz/ | 标志 | biāo zhì |
| Index Register/ˈɪndeks ˈredʒɪstə/ | 变址寄存器 | biàn zhǐ jì cún qì |
| indexed addressing/ˈɪndekst əˈdresɪŋ/ | 变址寻址 | biàn zhǐ xún zhǐ |
| general-purpose registers/ˈdʒenərəl ˈpɜːpəs ˈredʒɪstəz/ | 通用寄存器 | tōng yòng jì cún qì |
| register transfer/ˈredʒɪstə ˈtrænsfɜː/ | 寄存器传送 | jì cún qì chuán sòng |
| buses/ˈbʌsɪz/ | 总线 | zǒng xiàn |
4.1
Bus
Trois buses internes 总线 (ensembles de fils parallèles) connectent les parties :
- address bus 地址总线 — transporte l'adresse mémoire. Unidirectionnel (CPU → mémoire).
- data bus 数据总线 — transporte les données. Bidirectionnel.
- control bus 控制总线 — transporte les signaux de contrôle (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).


| Anglais | Chinois | Pinyin |
|---|---|---|
| control bus/kənˈtrəʊl bʌs/ | 控制总线 | kòng zhì zǒng xiàn |
| address bus/əˈdres bʌs/ | 地址总线 | dì zhǐ zǒng xiàn |
| data bus/ˈdeɪtə bʌs/ | 数据总线 | shù jù zǒng xiàn |
| word size/wɜːd saɪz/ | 字长 | zì cháng |
| number of cores/ˈnʌmbə ɒv kɔːz/ | 核心 | hé xīn |
| cores/kɔːz/ | 核心 | hé xīn |
| amount of RAM/əˈmaʊnt ɒv ræm/ | 随机存取存储器 | suí jī cún qǔ cún chǔ qì |
4.1
Ce qui affecte la performance
- vitesse d'horloge — plus de cycles par seconde.
- nombre de cœurs 核心 — un CPU multi-cœur exécute plusieurs threads simultanément.
- taille mot 字长 — un CPU 64 bits traite des blocs de 64 bits par cycle et peut adresser bien plus de mémoire qu'un 32 bits.
- quantité de RAM 随机存取存储器 — plus de RAM retient davantage du jeu de travail ; trop peu force le système d'exploitation à faire du pageage 页 vers le disque.
- mémoire cache 高速缓存 taille — plus de cache réduit le temps d'accès moyen à la mémoire.
- type de stockage secondaire 辅助存储器 — un SSD charge les programmes bien plus vite qu'un 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转移更多位 in each transfer, so fewer transfers are needed for the same data; a wider address bus can address more memory locations.
- 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.
| Anglais | Chinois | Pinyin |
|---|---|---|
| RAM/ræm/ | 随机存取存储器 | suí jī cún qǔ cún chǔ qì |
| page/peɪdʒ/ | 页 | yè |
| cache memory/kæʃ ˈmeməri/ | 高速缓存 | gāo sù huǎn cún |
| cache/kæʃ/ | 高速缓存 | gāo sù huǎn cún |
| secondary storage/ˈsekəndəri ˈstɔːrɪdʒ/ | 辅助存储器 | fǔ zhù cún chǔ qì |
4.1
Ports
Un port 端口 est une prise physique pour 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.
| Anglais | Chinois | Pinyin |
|---|---|---|
| port/pɔːt/ | 端口 | duān kǒu |
| peripheral/pəˈrɪfərəl/ | 外围设备 | wài wéi shè bèi |
4.1
Cycle Fetch-Execute
Le CPU répète le cycle fetch-execute 取指-执行周期, une itération 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 register transfer notation 寄存器传送记法, où [X] signifie le contenu du registre X et [[MAR]] signifie le contenu de l'emplacement mémoire dont l'adresse est 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.
| Anglais | Chinois | Pinyin |
|---|---|---|
| fetch-execute cycle/fetʃ ˈeksɪkjuːt ˈsaɪkl/ | 取指-执行周期 | qǔ zhǐ - zhí xíng zhōu qī |
| register transfer notation/ˈredʒɪstə ˈtrænsfɜː nəʊˈteɪʃn/ | 寄存器传送记法 | jì cún qì chuán sòng jì fǎ |
4.1
Interrupts
Une interrupt 中断 est un signal qui pauses le cycle normal pour que le CPU puisse gérer un événement urgent (une touche pressée, un paquet arrivant, une panne matérielle, division par zéro, horloge OS).
Gérer une :
- termine l'instruction actuelle.
- save the state (PC et registres).
- charge l'adresse de la interrupt service routine 中断服务程序 (ISR) dans le PC et exécute-la.
- 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 interrupt 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 avec ces éléments : le périphérique envoie un signal d'interruption qui positionne le flag d'interruption dans le interrupt register 中断寄存器 ; le processeur vérifie ce registre à la fin de chaque cycle fetch-execute, après que l'instruction actuelle ait fini d'être exécutée ; si un flag est positionné et que l'interruption a une priorité supérieure à la tâche actuelle, le contenu du PC et des autres registres est sauvegardé 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 finit, les valeurs sauvegardées sont restaurées depuis la stack 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.

| Anglais | Chinois | Pinyin |
|---|---|---|
| interrupt/ˈɪntərʌpt/ | 中断 | zhōng duàn |
| interrupt service routine/ˈɪntərʌpt ˈsɜːvɪs ruːˈtiːn/ | 中断服务程序 | zhōng duàn fú wù chéng xù |
| interrupt register/ˈɪntərʌpt ˈredʒɪstə/ | 中断寄存器 | zhōng duàn jì cún qì |
| stack/stæk/ | 栈 | zhàn |
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 le machine code 机器码 — motifs de bits, spécifiques à une architecture. L'assembly language 汇编语言 est une forme lisible, avec une instruction par instruction machine, écrite en utilisant des mnemonics 助记符 comme LDD, ADD, JMP. Un assembler 汇编器 le traduit en machine code.

Two-pass assembler
Un assembleur à deux passes lit la source deux fois :
- pass 1 construit une symbol table 符号表 : chaque fois qu'un label 标签 (comme
LOOP:) apparaît, on note son adresse ; aucun code 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 passes gèrent les forward references 前向引用 (un saut vers un label défini 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 chaque étiquette 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, remplaçant chaque mnémonique par son code opérationnel 操作码 et chaque adresse symbolique par le nombre de la table des symboles : LDD COUNT devient le code opérationnel pour LDD avec l'opérande 操作数 105, et JPN LOOP devient le code opérationnel pour JPN avec l'opérande 101. Le saut en arrière vers LOOP aurait pu être résolu en un seul passage, mais un saut avant vers une étiquette non encore vue ne le pouvait pas, c'est pourquoi l'assembleur fait 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.
| Groupe | Instruction | Ce qu'il fait |
|---|---|---|
| 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.
| Anglais | Chinois | Pinyin |
|---|---|---|
| operand/ˈɒpərænd/ | 操作数 | cāo zuò shù |
| assembly language/əˈsemblɪ ˈlæŋɡwɪdʒ/ | 汇编语言 | huì biān yǔ yán |
| machine code/məˈʃiːn kəʊd/ | 机器码 | jī qì mǎ |
| mnemonics/nɪˈmɒnɪks/ | 助记符 | zhù jì fú |
| assembler/əˈsemblə/ | 汇编器 | huì biān qì |
| symbol table/ˈsɪmbl ˈteɪbl/ | 符号表 | fú hào biǎo |
| label/ˈleɪbl/ | 标签 | biāo qiān |
| forward references/ˈfɔːwəd ˈrefrənsɪz/ | 前向引用 | qián xiàng yǐn yòng |
| opcode/ˈɒpkəʊd/ | 操作码 | cāo zuò mǎ |
4.2
Modes d'adressage
Le mode d'adressage 寻址方式 (les modes d'adressage) indique comment le CPU trouve l'opérande :
- adressage immédiat 立即寻址 — l'opérande est la valeur dans l'instruction.
LDM #10charge 10. - adressage direct 直接寻址 — l'instruction contient une adresse ; l'opérande est la valeur à cet endroit.
LDD 200. - adressage indirect 间接寻址 — l'instruction contient une adresse qui contient une autre adresse, qui est les données.
LDI 200. - adressage indexé 变址寻址 — l'adresse effective est
address + index register; utilisé pour les tableaux.LDX 100avec IR = 5 lit l'adresse 105.
(Adressage relatif 相对寻址 donne 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é).
| Anglais | Chinois | Pinyin |
|---|---|---|
| addressing mode/əˈdresɪŋ məʊd/ | 寻址方式 | xún zhǐ fāng shì |
| immediate addressing/ɪˈmiːdɪət əˈdresɪŋ/ | 立即寻址 | lì jí xún zhǐ |
| direct addressing/daɪˈrekt əˈdresɪŋ/ | 直接寻址 | zhí jiē xún zhǐ |
| indirect addressing/ɪndaɪˈrekt əˈdresɪŋ/ | 间接寻址 | jiàn jiē xún zhǐ |
| relative addressing/ˈrelətɪv əˈdresɪŋ/ | 相对寻址 | xiāng duì xún zhǐ |
| logical shift/ˈlɒdʒɪkl ʃɪft/ | 逻辑移位 | luó jí yí wèi |
| cyclic shift/ˈsaɪklɪk ʃɪft/ | 循环移位 | xún huán yí wèi |
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 de quelques places, 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 logique à droite conserve le bit de signe pour qu'un nombre négatif signé reste négatif. Un décalage cyclique 循环移位 (rotation) renvoie le bit qui tombe d'une extrémité à l'autre, afin qu'aucun bit ne soit 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 exemple 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.
| Anglais | Chinois | Pinyin |
|---|---|---|
| bit/bɪt/ | 位 | wèi |
| mask/mæsk/ | 掩码 | yǎn mǎ |
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.