Assembly Language & x86 Low-Level Systems Programming · Leçon

Les registres x86 expliqués

Comprenez le rôle et le fonctionnement des registres à usage général, de segment, de pointeur d’instruction et d’indicateurs dans l’architecture x86.

Leçon 1 sur 411 étapes

Les registres x86 expliqués est une leçon Assembly Language & x86 Low-Level Systems Programming gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Assembly Language & x86 Low-Level Systems Programming, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Assembly Language & x86 Low-Level Systems Programming comprend 4 leçons au total.

Certaines parties de cette leçon n'ont pas encore été traduites et s'affichent en anglais.

Meet x86 Registers

Welcome to the core of x86 architecture! Today, we'll demystify registers, tiny, super-fast storage locations directly inside your CPU.

  • Registers hold data that the CPU needs to access quickly.
  • They're much faster than main memory (RAM).
  • Think of them as the CPU's scratchpad for immediate calculations and operations.

General-Purpose Registers (GPRs)

The x86 architecture provides several General-Purpose Registers (GPRs). These are versatile and can be used for many different tasks, like storing temporary data or addresses.

Key GPRs include:

  • AX (Accumulator)
  • BX (Base)
  • CX (Count)
  • DX (Data)
  • SI (Source Index)
  • DI (Destination Index)
  • BP (Base Pointer)
  • SP (Stack Pointer)

AX, The Accumulator

The AX register (Accumulator) is often used for arithmetic operations and input/output functions. It's a 16-bit register, but you can also access its 8-bit halves: AH (high byte) and AL (low byte).

Here's how you might put a value into AX:

MOV AX, 1234h  ; Move hexadecimal 1234 into AX
MOV AL, 0FFh   ; Move FF into AL (lower 8 bits of AX)

BX, The Base Register

The BX register (Base) is often used as a base pointer for memory access. This means it can hold the starting address of a block of memory.

It's useful for accessing data structures or arrays in memory.

MOV BX, OFFSET myArray ; Load the starting address of myArray into BX
MOV AL, [BX]         ; Load the byte at address BX into AL

CX, The Counter

The CX register (Count) is primarily used as a counter in loops. Many loop instructions in x86 assembly implicitly use CX to track iterations.

When LOOP is used, CX is decremented automatically until it reaches zero.

MOV CX, 10    ; Set loop count to 10
loop_start:
  ; Do something
  LOOP loop_start ; Decrement CX, jump if not zero

DX, The Data Register

The DX register (Data) has a few specialized uses. It often works alongside AX for large arithmetic operations, like 32-bit multiplication or division.

It's also commonly used for I/O port operations.

MOV AX, 1000h ; Value 1
MOV DX, 0     ; Clear DX for multiplication
MOV BX, 10h   ; Value 2
MUL BX        ; AX * BX. Result (DX:AX) = 10000h

Index & Pointer Registers

Beyond AX, BX, CX, DX, we have special-purpose GPRs:

  • SI (Source Index): Used as a pointer to source data in string operations.
  • DI (Destination Index): Used as a pointer to destination data in string operations.
  • BP (Base Pointer): Points to the base of the current stack frame, useful for accessing function arguments and local variables.
  • SP (Stack Pointer): Always points to the top of the stack. It's critical for managing function calls and local data.

The Instruction Pointer (IP)

The Instruction Pointer (IP), also known as EIP (Extended Instruction Pointer) or RIP (Relative Instruction Pointer) in 32-bit and 64-bit modes, is a very special register.

  • It always holds the memory address of the next instruction to be executed.
  • You cannot directly modify IP; instead, instructions like JMP (jump) or CALL (procedure call) change its value.
  • It dictates the flow of your program!

The Flags Register

The Flags Register (FLAGS, EFLAGS, or RFLAGS) is a collection of single-bit flags that reflect the status of the CPU after an operation or control its behavior.

Key flags include:

  • ZF (Zero Flag): Set if the result of an operation is zero.
  • CF (Carry Flag): Set if an arithmetic operation generated a carry or borrow.
  • SF (Sign Flag): Set if the result is negative.
  • OF (Overflow Flag): Set if an arithmetic operation resulted in an overflow.

These flags are crucial for conditional jumps!

Check Your Register Knowledge

Which x86 register is primarily used as a counter for loop operations?

Registers Recap

Great job! You've learned about the fundamental x86 registers:

  • GPRs (AX, BX, CX, DX) for general data manipulation.
  • Index/Pointer Registers (SI, DI, BP, SP) for memory and stack management.
  • The essential Instruction Pointer (IP) for program flow.
  • The Flags Register for CPU status and conditional execution.

Understanding these registers is key to writing efficient assembly code. Next, we'll explore how these registers interact with memory!

Gratuit pour commencer

Apprends Assembly avec un tuteur IA — gratuit

Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.

Cours
12
Leçons
48

Questions Fréquemment Posées

La leçon « Les registres x86 expliqués » est-elle gratuite ?

Oui — le texte complet de « Les registres x86 expliqués » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Assembly Language & x86 Low-Level Systems Programming, passe à CoddyKit PRO. Le cours Assembly Language & x86 Low-Level Systems Programming comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Les registres x86 expliqués » ?

Comprenez le rôle et le fonctionnement des registres à usage général, de segment, de pointeur d’instruction et d’indicateurs dans l’architecture x86. Tu pratiques Assembly Language & x86 Low-Level Systems Programming avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Assembly Language & x86 Low-Level Systems Programming ?

Aucune expérience préalable n'est requise. Assembly Language & x86 Low-Level Systems Programming sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.

Combien de temps prend la leçon « Les registres x86 expliqués » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Assembly Language & x86 Low-Level Systems Programming ?

Oui. Chaque leçon Assembly Language & x86 Low-Level Systems Programming inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Les registres x86 expliqués
  2. Modes d’adressage de la mémoire
  3. Représentation et types des données
  4. Le registre FLAGS et les bits d’état
← Retour à Assembly Language & x86 Low-Level Systems Programming